/* nfs4namespace.c */
 #ifdef CONFIG_NFS_V4
-extern struct vfsmount *nfs_do_refmount(struct super_block *sb, struct dentry *dentry);
+extern struct vfsmount *nfs_do_refmount(struct dentry *dentry);
 #else
 static inline
-struct vfsmount *nfs_do_refmount(struct super_block *sb, struct dentry *dentry)
+struct vfsmount *nfs_do_refmount(struct dentry *dentry)
 {
        return ERR_PTR(-ENOENT);
 }
 
 static DECLARE_DELAYED_WORK(nfs_automount_task, nfs_expire_automounts);
 int nfs_mountpoint_expiry_timeout = 500 * HZ;
 
-static struct vfsmount *nfs_do_submount(struct super_block *sb,
-                                       struct dentry *dentry,
+static struct vfsmount *nfs_do_submount(struct dentry *dentry,
                                        struct nfs_fh *fh,
                                        struct nfs_fattr *fattr);
 
        }
 
        if (fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL)
-               mnt = nfs_do_refmount(path->mnt->mnt_sb, path->dentry);
+               mnt = nfs_do_refmount(path->dentry);
        else
-               mnt = nfs_do_submount(path->mnt->mnt_sb, path->dentry, fh, fattr);
+               mnt = nfs_do_submount(path->dentry, fh, fattr);
        if (IS_ERR(mnt))
                goto out;
 
 
 /**
  * nfs_do_submount - set up mountpoint when crossing a filesystem boundary
- * @sb - superblock of parent directory
  * @dentry - parent directory
  * @fh - filehandle for new root dentry
  * @fattr - attributes for new root inode
  *
  */
-static struct vfsmount *nfs_do_submount(struct super_block *sb,
-                                       struct dentry *dentry,
+static struct vfsmount *nfs_do_submount(struct dentry *dentry,
                                        struct nfs_fh *fh,
                                        struct nfs_fattr *fattr)
 {
        struct nfs_clone_mount mountdata = {
-               .sb = sb,
+               .sb = dentry->d_sb,
                .dentry = dentry,
                .fh = fh,
                .fattr = fattr,
        mnt = (struct vfsmount *)devname;
        if (IS_ERR(devname))
                goto free_page;
-       mnt = nfs_do_clone_mount(NFS_SB(sb), devname, &mountdata);
+       mnt = nfs_do_clone_mount(NFS_SB(dentry->d_sb), devname, &mountdata);
 free_page:
        free_page((unsigned long)page);
 out:
 
 
 /**
  * nfs_follow_referral - set up mountpoint when hitting a referral on moved error
- * @sb - superblock of parent directory
  * @dentry - parent directory
  * @locations - array of NFSv4 server location information
  *
  */
-static struct vfsmount *nfs_follow_referral(struct super_block *sb,
-                                           struct dentry *dentry,
+static struct vfsmount *nfs_follow_referral(struct dentry *dentry,
                                            const struct nfs4_fs_locations *locations)
 {
        struct vfsmount *mnt = ERR_PTR(-ENOENT);
        struct nfs_clone_mount mountdata = {
-               .sb = sb,
+               .sb = dentry->d_sb,
                .dentry = dentry,
-               .authflavor = NFS_SB(sb)->client->cl_auth->au_flavor,
+               .authflavor = NFS_SB(dentry->d_sb)->client->cl_auth->au_flavor,
        };
        char *page = NULL, *page2 = NULL;
        int loc, error;
  * @dentry - dentry of referral
  *
  */
-struct vfsmount *nfs_do_refmount(struct super_block *sb, struct dentry *dentry)
+struct vfsmount *nfs_do_refmount(struct dentry *dentry)
 {
        struct vfsmount *mnt = ERR_PTR(-ENOMEM);
        struct dentry *parent;
            fs_locations->fs_path.ncomponents <= 0)
                goto out_free;
 
-       mnt = nfs_follow_referral(sb, dentry, fs_locations);
+       mnt = nfs_follow_referral(dentry, fs_locations);
 out_free:
        __free_page(page);
        kfree(fs_locations);