« Return to Thread: [PATCH 0/7] [CIFS] clean up cifs_setattr and fix setting of mtimes

[PATCH 7/7] [CIFS] turn cifs_setattr into a multiplexor that calls the correct function

by Jeff Layton-2 :: Rate this Message:

Reply to Author | View in Thread

Signed-off-by: Jeff Layton <jlayton@...>
---

 fs/cifs/inode.c |   22 +++++++++++++++++-----
 1 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 84e477a..d27f5dd 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -1696,21 +1696,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",
@@ -1837,6 +1834,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)
 {

_______________________________________________
linux-cifs-client mailing list
linux-cifs-client@...
https://lists.samba.org/mailman/listinfo/linux-cifs-client

 « Return to Thread: [PATCH 0/7] [CIFS] clean up cifs_setattr and fix setting of mtimes

LightInTheBox - Buy quality products at wholesale price!