]> err.no Git - linux-2.6/commitdiff
turn cifs_setattr into a multiplexor that calls the correct function
authorJeff Layton <jlayton@redhat.com>
Sat, 2 Aug 2008 11:26:12 +0000 (07:26 -0400)
committerSteve French <sfrench@us.ibm.com>
Wed, 6 Aug 2008 22:39:46 +0000 (22:39 +0000)
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/inode.c

index 5c722ea21133c47a49ff144e0fe6715bfe590452..28a22092d4502709fa6d339c40ac2872aca482fa 100644 (file)
@@ -1709,21 +1709,18 @@ out:
        return rc;
 }
 
-int cifs_setattr(struct dentry *direntry, struct iattr *attrs)
+static int
+cifs_setattr_nounix(struct dentry *direntry, struct iattr *attrs)
 {
        int xid;
        struct inode *inode = direntry->d_inode;
        struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
-       struct cifsTconInfo *pTcon = cifs_sb->tcon;
        struct cifsInodeInfo *cifsInode = CIFS_I(inode);
        char *full_path = NULL;
        int rc = -EACCES;
        __u32 dosattr = 0;
        __u64 mode = NO_CHANGE_64;
 
-       if (pTcon->unix_ext)
-               return cifs_setattr_unix(direntry, attrs);
-
        xid = GetXid();
 
        cFYI(1, ("setattr on file %s attrs->iavalid 0x%x",
@@ -1850,6 +1847,21 @@ cifs_setattr_exit:
        return rc;
 }
 
+int
+cifs_setattr(struct dentry *direntry, struct iattr *attrs)
+{
+       struct inode *inode = direntry->d_inode;
+       struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
+       struct cifsTconInfo *pTcon = cifs_sb->tcon;
+
+       if (pTcon->unix_ext)
+               return cifs_setattr_unix(direntry, attrs);
+
+       return cifs_setattr_nounix(direntry, attrs);
+
+       /* BB: add cifs_setattr_legacy for really old servers */
+}
+
 #if 0
 void cifs_delete_inode(struct inode *inode)
 {