]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC r286705: 5960 zfs recv should prefetch indirect blocks
authormav <mav@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Sat, 3 Oct 2015 08:03:36 +0000 (08:03 +0000)
committermav <mav@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Sat, 3 Oct 2015 08:03:36 +0000 (08:03 +0000)
commit40e23b8dab708df5dda6ef199e3377e8e4bd2ddc
tree4db32b46e47d3c4e0243a2986a151c66d7f4a454
parent5bbc6eb4c154134b56727eb354e55eefeae1f6c2
MFC r286705: 5960 zfs recv should prefetch indirect blocks
5925 zfs receive -o origin=

Reviewed by: Prakash Surya <prakash.surya@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Author: Paul Dagnelie <pcd@delphix.com>

While running 'zfs recv' we noticed that every 128th 8K block required a
read. We were seeing that restore_write() was calling dmu_tx_hold_write()
and the indirect block was not cached. We should prefetch upcoming indirect
blocks to avoid having to go to disk and blocking the restore_write().

Allow an incremental send stream to be received as a clone, even if the
stream does not mark it as a clone.

git-svn-id: svn://svn.freebsd.org/base/stable/10@288571 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
38 files changed:
cddl/contrib/opensolaris/cmd/zdb/zdb.c
cddl/contrib/opensolaris/cmd/zfs/zfs.8
cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
cddl/contrib/opensolaris/cmd/ztest/ztest.c
cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c
cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
sys/cddl/contrib/opensolaris/uts/common/Makefile.files
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bptree.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bqueue.c [new file with mode: 0644]
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/bqueue.h [new file with mode: 0644]
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_checksum.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_priority.h [new file with mode: 0644]
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c