|
@@ -2278,6 +2278,27 @@ static int nfs_compare_super(struct super_block *sb, void *data)
|
|
|
return nfs_compare_mount_options(sb, server, mntflags);
|
|
|
}
|
|
|
|
|
|
+static void nfs_get_cache_cookie(struct super_block *sb,
|
|
|
+ struct nfs_parsed_mount_data *parsed,
|
|
|
+ struct nfs_clone_mount *cloned)
|
|
|
+{
|
|
|
+ char *uniq = NULL;
|
|
|
+ int ulen = 0;
|
|
|
+
|
|
|
+ if (parsed && parsed->fscache_uniq) {
|
|
|
+ uniq = parsed->fscache_uniq;
|
|
|
+ ulen = strlen(parsed->fscache_uniq);
|
|
|
+ } else if (cloned) {
|
|
|
+ struct nfs_server *mnt_s = NFS_SB(cloned->sb);
|
|
|
+ if (mnt_s->fscache_key) {
|
|
|
+ uniq = mnt_s->fscache_key->key.uniquifier;
|
|
|
+ ulen = mnt_s->fscache_key->key.uniq_len;
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ nfs_fscache_get_super_cookie(sb, uniq, ulen);
|
|
|
+}
|
|
|
+
|
|
|
static int nfs_bdi_register(struct nfs_server *server)
|
|
|
{
|
|
|
return bdi_register_dev(&server->backing_dev_info, server->s_dev);
|
|
@@ -2352,7 +2373,7 @@ static struct dentry *nfs_fs_mount(struct file_system_type *fs_type,
|
|
|
if (!s->s_root) {
|
|
|
/* initial superblock/root creation */
|
|
|
nfs_fill_super(s, data);
|
|
|
- nfs_fscache_get_super_cookie(s, data->fscache_uniq, NULL);
|
|
|
+ nfs_get_cache_cookie(s, data, NULL);
|
|
|
}
|
|
|
|
|
|
mntroot = nfs_get_root(s, mntfh, dev_name);
|
|
@@ -2461,7 +2482,7 @@ nfs_xdev_mount(struct file_system_type *fs_type, int flags,
|
|
|
if (!s->s_root) {
|
|
|
/* initial superblock/root creation */
|
|
|
nfs_clone_super(s, data->sb);
|
|
|
- nfs_fscache_get_super_cookie(s, NULL, data);
|
|
|
+ nfs_get_cache_cookie(s, NULL, data);
|
|
|
}
|
|
|
|
|
|
mntroot = nfs_get_root(s, data->fh, dev_name);
|
|
@@ -2724,7 +2745,7 @@ nfs4_remote_mount(struct file_system_type *fs_type, int flags,
|
|
|
if (!s->s_root) {
|
|
|
/* initial superblock/root creation */
|
|
|
nfs4_fill_super(s);
|
|
|
- nfs_fscache_get_super_cookie(s, data->fscache_uniq, NULL);
|
|
|
+ nfs_get_cache_cookie(s, data, NULL);
|
|
|
}
|
|
|
|
|
|
mntroot = nfs_get_root(s, mntfh, dev_name);
|
|
@@ -2988,7 +3009,7 @@ nfs4_xdev_mount(struct file_system_type *fs_type, int flags,
|
|
|
if (!s->s_root) {
|
|
|
/* initial superblock/root creation */
|
|
|
nfs4_clone_super(s, data->sb);
|
|
|
- nfs_fscache_get_super_cookie(s, NULL, data);
|
|
|
+ nfs_get_cache_cookie(s, NULL, data);
|
|
|
}
|
|
|
|
|
|
mntroot = nfs_get_root(s, data->fh, dev_name);
|
|
@@ -3079,7 +3100,7 @@ nfs4_remote_referral_mount(struct file_system_type *fs_type, int flags,
|
|
|
if (!s->s_root) {
|
|
|
/* initial superblock/root creation */
|
|
|
nfs4_fill_super(s);
|
|
|
- nfs_fscache_get_super_cookie(s, NULL, data);
|
|
|
+ nfs_get_cache_cookie(s, NULL, data);
|
|
|
}
|
|
|
|
|
|
mntroot = nfs_get_root(s, mntfh, dev_name);
|