diff options
author | Alek P <[email protected]> | 2019-02-12 10:41:15 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2019-02-12 10:41:15 -0800 |
commit | dcec0a12c8e480262288ac76f6350652079ea173 (patch) | |
tree | 1f23e1c575dc61d00484b627f61e1b5e9ba6bac0 /include/sys/zfs_dir.h | |
parent | 425d3237ee88abc53d8522a7139c926d278b4b7f (diff) |
port async unlinked drain from illumos-nexenta
This patch is an async implementation of the existing sync
zfs_unlinked_drain() function. This function is called at mount time and
is responsible for freeing znodes that we didn't get to freeing before.
We don't have to hold mounting of the dataset until the unlinked list is
fully drained as is done now. Since we can process the unlinked set
asynchronously this results in a better user experience when mounting a
dataset with entries in the unlinked set.
Reviewed by: Jorgen Lundman <[email protected]>
Reviewed by: Tom Caputi <[email protected]>
Reviewed by: Brian Behlendorf <[email protected]>
Reviewed-by: Matt Ahrens <[email protected]>
Reviewed by: Paul Dagnelie <[email protected]>
Signed-off-by: Alek Pinchuk <[email protected]>
Closes #8142
Diffstat (limited to 'include/sys/zfs_dir.h')
-rw-r--r-- | include/sys/zfs_dir.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/sys/zfs_dir.h b/include/sys/zfs_dir.h index 9ce3accfc..bcd4ec2c1 100644 --- a/include/sys/zfs_dir.h +++ b/include/sys/zfs_dir.h @@ -64,6 +64,7 @@ extern void zfs_dl_name_switch(zfs_dirlock_t *dl, char *new, char **old); extern boolean_t zfs_dirempty(znode_t *); extern void zfs_unlinked_add(znode_t *, dmu_tx_t *); extern void zfs_unlinked_drain(zfsvfs_t *zfsvfs); +extern void zfs_unlinked_drain_stop_wait(zfsvfs_t *zfsvfs); extern int zfs_sticky_remove_access(znode_t *, znode_t *, cred_t *cr); extern int zfs_get_xattrdir(znode_t *, struct inode **, cred_t *, int); extern int zfs_make_xattrdir(znode_t *, vattr_t *, struct inode **, cred_t *); |