]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC r320352: zfs: port vdev_file part of illumos change 3306
authoravg <avg@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Tue, 19 Sep 2017 08:39:54 +0000 (08:39 +0000)
committeravg <avg@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Tue, 19 Sep 2017 08:39:54 +0000 (08:39 +0000)
commit7c53759b362dda4c6fe6e431c1e590e247834c66
tree978c388dbfcbc22dcba89c3133afeb2041ac4cab
parent6d37e2125cd1f55facd60e641317ba353f449d3e
MFC r320352: zfs: port vdev_file part of illumos change 3306

3306 zdb should be able to issue reads in parallel
illumos/illumos-gate/31d7e8fa33fae995f558673adb22641b5aa8b6e1
https://www.illumos.org/issues/3306

The upstream change was made before we started to import upstream commits
individually.  It was imported into the illumos vendor area as r242733.
That commit was MFV-ed in r260138, but as the commit message says
vdev_file.c was left intact.

This commit actually implements the parallel I/O for vdev_file using a
taskqueue with multiple thread.  This implementation does not depend on
the illumos or FreeBSD bio interface at all, but uses zio_t to pass
around all the relevent data.  So, the code looks a bit different from
the upstream.

This commit also incorporates ZoL commit
zfsonlinux/zfs/bc25c9325b0e5ced897b9820dad239539d561ec9 that fixed
https://github.com/zfsonlinux/zfs/issues/2270
We need to use a dedicated taskqueue for exactly the same reason as ZoL
as we do not implement TASKQ_DYNAMIC.

git-svn-id: svn://svn.freebsd.org/base/stable/10@323745 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_file.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c