Implemented NFS export_operations.
[zfs.git] / module / zfs / zpl_super.c
index 0417ce2..4937832 100644 (file)
@@ -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 = CRED();
+       int error;
+
+       crhold(cr);
+       error = -zfs_sync(sb, wait, cr);
+       crfree(cr);
+       ASSERT3S(error, <=, 0);
+
+       return (error);
+}
+
+static int
 zpl_statfs(struct dentry *dentry, struct kstatfs *statp)
 {
        int error;
@@ -116,6 +130,16 @@ zpl_statfs(struct dentry *dentry, struct kstatfs *statp)
 }
 
 static int
+zpl_remount_fs(struct super_block *sb, int *flags, char *data)
+{
+       int error;
+       error = -zfs_remount(sb, flags, data);
+       ASSERT3S(error, <=, 0);
+
+       return (error);
+}
+
+static int
 zpl_show_options(struct seq_file *seq, struct vfsmount *vfsp)
 {
        struct super_block *sb = vfsp->mnt_sb;
@@ -179,23 +203,13 @@ const struct super_operations zpl_super_operations = {
 #endif /* HAVE_EVICT_INODE */
        .put_super      = zpl_put_super,
        .write_super    = NULL,
-       .sync_fs        = NULL,
-       .freeze_fs      = NULL,
-       .unfreeze_fs    = NULL,
+       .sync_fs        = zpl_sync_fs,
        .statfs         = zpl_statfs,
-       .remount_fs     = NULL,
+       .remount_fs     = zpl_remount_fs,
        .show_options   = zpl_show_options,
        .show_stats     = NULL,
 };
 
-#if 0
-const struct export_operations zpl_export_operations = {
-       .fh_to_dentry   = NULL,
-       .fh_to_parent   = NULL,
-       .get_parent     = NULL,
-};
-#endif
-
 struct file_system_type zpl_fs_type = {
        .owner          = THIS_MODULE,
        .name           = ZFS_DRIVER,