switch sysv
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 18 Dec 2010 16:16:30 +0000 (11:16 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 13 Jan 2011 01:02:44 +0000 (20:02 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/sysv/namei.c
fs/sysv/super.c

index b5e68da2db32189597edc9e6f70dd6bcf57dbb40..b427b1208c26323eff8b734a84b6feb272332d4c 100644 (file)
@@ -48,7 +48,6 @@ static struct dentry *sysv_lookup(struct inode * dir, struct dentry * dentry, st
        struct inode * inode = NULL;
        ino_t ino;
 
-       d_set_d_op(dentry, dir->i_sb->s_root->d_op);
        if (dentry->d_name.len > SYSV_NAMELEN)
                return ERR_PTR(-ENAMETOOLONG);
        ino = sysv_inode_by_name(dentry);
index 76712aefc4ab12e137207091e412f85f74b50fed..f60c196913eafe77c941a0fd416d1a719e2e5049 100644 (file)
@@ -332,6 +332,10 @@ static int complete_read_super(struct super_block *sb, int silent, int size)
        sb->s_magic = SYSV_MAGIC_BASE + sbi->s_type;
        /* set up enough so that it can read an inode */
        sb->s_op = &sysv_sops;
+       if (sbi->s_forced_ro)
+               sb->s_flags |= MS_RDONLY;
+       if (sbi->s_truncate)
+               sb->s_d_op = &sysv_dentry_operations;
        root_inode = sysv_iget(sb, SYSV_ROOT_INO);
        if (IS_ERR(root_inode)) {
                printk("SysV FS: get root inode failed\n");
@@ -343,10 +347,6 @@ static int complete_read_super(struct super_block *sb, int silent, int size)
                printk("SysV FS: get root dentry failed\n");
                return 0;
        }
-       if (sbi->s_forced_ro)
-               sb->s_flags |= MS_RDONLY;
-       if (sbi->s_truncate)
-               d_set_d_op(sb->s_root, &sysv_dentry_operations);
        return 1;
 }