]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/orangefs/super.c
Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[karo-tx-linux.git] / fs / orangefs / super.c
index 74b84c08a140d01ccad6702a152b5ed825baafb8..c48859f16e7b1fd9887bcd2edb73aaf4b4d55464 100644 (file)
@@ -33,6 +33,7 @@ static const match_table_t tokens = {
        { Opt_err,      NULL }
 };
 
+uint64_t orangefs_features;
 
 static int parse_mount_options(struct super_block *sb, char *options,
                int silent)
@@ -249,6 +250,19 @@ int orangefs_remount(struct orangefs_sb_info_s *orangefs_sb)
        }
 
        op_release(new_op);
+
+       if (orangefs_userspace_version >= 20906) {
+               new_op = op_alloc(ORANGEFS_VFS_OP_FEATURES);
+               if (!new_op)
+                       return -ENOMEM;
+               new_op->upcall.req.features.features = 0;
+               ret = service_operation(new_op, "orangefs_features", 0);
+               orangefs_features = new_op->downcall.resp.features.features;
+               op_release(new_op);
+       } else {
+               orangefs_features = 0;
+       }
+
        return ret;
 }
 
@@ -492,6 +506,19 @@ struct dentry *orangefs_mount(struct file_system_type *fst,
        list_add_tail(&ORANGEFS_SB(sb)->list, &orangefs_superblocks);
        spin_unlock(&orangefs_superblocks_lock);
        op_release(new_op);
+
+       if (orangefs_userspace_version >= 20906) {
+               new_op = op_alloc(ORANGEFS_VFS_OP_FEATURES);
+               if (!new_op)
+                       return ERR_PTR(-ENOMEM);
+               new_op->upcall.req.features.features = 0;
+               ret = service_operation(new_op, "orangefs_features", 0);
+               orangefs_features = new_op->downcall.resp.features.features;
+               op_release(new_op);
+       } else {
+               orangefs_features = 0;
+       }
+
        return dget(sb->s_root);
 
 free_op: