diff options
author | Brian Behlendorf <[email protected]> | 2011-03-15 12:03:42 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2011-03-15 13:33:29 -0700 |
commit | 03f9ba9d990efb911026ebee0902671915db01a3 (patch) | |
tree | 00fd8410150d211ebf99fe5ccec8d7effc3a1d92 /module/zfs/zpl_super.c | |
parent | 3aff775555a40fe3e5193f1309ba6e80312be5ff (diff) |
Register .sync_fs handler
Register the missing .sync_fs handler. This is a noop in most cases
because the usual requirement is that sync just be initiated. As part
of the DMU's normal transaction processing txgs will be frequently
synced. However, when the 'wait' flag is set the requirement is that
.sync_fs must not return until the data is safe on disk. With the
addition of the .sync_fs handler this is now properly implemented.
Diffstat (limited to 'module/zfs/zpl_super.c')
-rw-r--r-- | module/zfs/zpl_super.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/module/zfs/zpl_super.c b/module/zfs/zpl_super.c index 0417ce2ff..73e5268f5 100644 --- a/module/zfs/zpl_super.c +++ b/module/zfs/zpl_super.c @@ -105,6 +105,20 @@ zpl_put_super(struct super_block *sb) } static int +zpl_sync_fs(struct super_block *sb, int wait) +{ + cred_t *cr; + int error; + + cr = (cred_t *)get_current_cred(); + error = -zfs_sync(sb, wait, cr); + put_cred(cr); + ASSERT3S(error, <=, 0); + + return (error); +} + +static int zpl_statfs(struct dentry *dentry, struct kstatfs *statp) { int error; @@ -179,7 +193,7 @@ const struct super_operations zpl_super_operations = { #endif /* HAVE_EVICT_INODE */ .put_super = zpl_put_super, .write_super = NULL, - .sync_fs = NULL, + .sync_fs = zpl_sync_fs, .freeze_fs = NULL, .unfreeze_fs = NULL, .statfs = zpl_statfs, |