freebsd-nq/include
Matthew Ahrens 325d288c5d Add fast path for zfs_ioc_space_snaps() handling of empty_bpobj
When there are many snapshots, calls to zfs_ioc_space_snaps() (e.g. from
`zfs destroy -nv pool/fs@snap1%snap10000`) can be very slow, resulting
in poor performance because we are holding the dp_config_rwlock the
entire time, blocking spa_sync() from continuing.  With around ten
thousand snapshots, we've seen up to 500 seconds in this ioctl,
iterating over up to 50,000,000 bpobjs, ~99% of which are the empty
bpobj.

By creating a fast path for zfs_ioc_space_snaps() handling of the
empty_bpobj, we can achieve a ~5x performance improvement of this ioctl
(when there are many snapshots, and the deadlist is mostly
empty_bpobj's).

Reviewed-by: Pavel Zakharov <pavel.zakharov@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Paul Dagnelie <pcd@delphix.com>
Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
External-issue: DLPX-58348
Closes #8744
2019-08-20 11:34:52 -07:00
..
linux Fix CONFIG_X86_DEBUG_FPU build failure 2019-07-17 09:14:36 -07:00
spl Drop KMC_NOEMERGENCY 2019-08-13 07:46:12 -06:00
sys Add fast path for zfs_ioc_space_snaps() handling of empty_bpobj 2019-08-20 11:34:52 -07:00
.gitignore
libnvpair.h
libuutil_common.h
libuutil_impl.h
libuutil.h
libzfs_core.h Remove code for zfs remap 2019-06-24 16:44:01 -07:00
libzfs_impl.h
libzfs.h Race condition between spa async threads and export 2019-07-18 13:02:33 -07:00
libzutil.h
Makefile.am
thread_pool.h
zfeature_common.h Fast Clone Deletion 2019-07-26 10:54:14 -07:00
zfs_comutil.h
zfs_deleg.h Remove code for zfs remap 2019-06-24 16:44:01 -07:00
zfs_fletcher.h
zfs_namecheck.h Restrict filesystem creation if name referred either '.' or '..' 2019-06-13 08:56:15 -07:00
zfs_prop.h