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.
This commit is contained in:
Brian Behlendorf
2011-03-15 12:03:42 -07:00
parent 3aff775555
commit 03f9ba9d99
3 changed files with 27 additions and 9 deletions
+15 -1
View File
@@ -104,6 +104,20 @@ zpl_put_super(struct super_block *sb)
ASSERT3S(error, <=, 0);
}
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)
{
@@ -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,