convert smbfs
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 12 Jan 2011 21:19:20 +0000 (16:19 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 13 Jan 2011 01:02:47 +0000 (20:02 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
drivers/staging/smbfs/dir.c
drivers/staging/smbfs/inode.c
drivers/staging/smbfs/proto.h

index dd612f50749f606b9dec9f04788f94bfb97b45d6..87a3a9bd58428afc5d3a54cfec98bc3fff1049fb 100644 (file)
@@ -403,12 +403,6 @@ smb_delete_dentry(const struct dentry *dentry)
 void
 smb_new_dentry(struct dentry *dentry)
 {
-       struct smb_sb_info *server = server_from_dentry(dentry);
-
-       if (server->mnt->flags & SMB_MOUNT_CASE)
-               d_set_d_op(dentry, &smbfs_dentry_operations_case);
-       else
-               d_set_d_op(dentry, &smbfs_dentry_operations);
        dentry->d_time = jiffies;
 }
 
@@ -440,7 +434,6 @@ smb_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
        struct smb_fattr finfo;
        struct inode *inode;
        int error;
-       struct smb_sb_info *server;
 
        error = -ENAMETOOLONG;
        if (dentry->d_name.len > SMB_MAXNAMELEN)
@@ -468,12 +461,6 @@ smb_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
                inode = smb_iget(dir->i_sb, &finfo);
                if (inode) {
        add_entry:
-                       server = server_from_dentry(dentry);
-                       if (server->mnt->flags & SMB_MOUNT_CASE)
-                               d_set_d_op(dentry, &smbfs_dentry_operations_case);
-                       else
-                               d_set_d_op(dentry, &smbfs_dentry_operations);
-
                        d_add(dentry, inode);
                        smb_renew_times(dentry);
                        error = 0;
index 244319dc970275d41f7d17f8e0c9b1c5cd790a9b..0778589d9e9e46c8f9546a150df815edec25bae7 100644 (file)
@@ -614,6 +614,10 @@ static int smb_fill_super(struct super_block *sb, void *raw_data, int silent)
                printk(KERN_ERR "smbfs: failed to start smbiod\n");
                goto out_no_smbiod;
        }
+       if (server->mnt->flags & SMB_MOUNT_CASE)
+               sb->s_d_op = &smbfs_dentry_operations_case;
+       else
+               sb->s_d_op = &smbfs_dentry_operations;
 
        /*
         * Keep the super block locked while we get the root inode.
index 05939a6f43e625a28882d01b05a9e74135131de9..3883cb16a3f6826d0fc047074da0bfadc8b61882 100644 (file)
@@ -38,6 +38,8 @@ extern void smb_install_null_ops(struct smb_ops *ops);
 extern const struct file_operations smb_dir_operations;
 extern const struct inode_operations smb_dir_inode_operations;
 extern const struct inode_operations smb_dir_inode_operations_unix;
+extern const struct dentry_operations smbfs_dentry_operations_case;
+extern const struct dentry_operations smbfs_dentry_operations;
 extern void smb_new_dentry(struct dentry *dentry);
 extern void smb_renew_times(struct dentry *dentry);
 /* cache.c */