aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/cifs/inode.c')
-rw-r--r--fs/cifs/inode.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index a1ca55650505..cfa5b360d12e 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -620,9 +620,21 @@ int cifs_unlink(struct inode *inode, struct dentry *direntry)
620 FreeXid(xid); 620 FreeXid(xid);
621 return -ENOMEM; 621 return -ENOMEM;
622 } 622 }
623 rc = CIFSSMBDelFile(xid, pTcon, full_path, cifs_sb->local_nls, 623
624 if ((pTcon->ses->capabilities & CAP_UNIX) &&
625 (CIFS_UNIX_POSIX_PATH_OPS_CAP &
626 le64_to_cpu(pTcon->fsUnixInfo.Capability))) {
627 rc = CIFSPOSIXDelFile(xid, pTcon, full_path,
628 SMB_POSIX_UNLINK_FILE_TARGET, cifs_sb->local_nls,
624 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR); 629 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
630 cFYI(1, ("posix del rc %d", rc));
631 if ((rc == 0) || (rc == -ENOENT))
632 goto psx_del_no_retry;
633 }
625 634
635 rc = CIFSSMBDelFile(xid, pTcon, full_path, cifs_sb->local_nls,
636 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
637psx_del_no_retry:
626 if (!rc) { 638 if (!rc) {
627 if (direntry->d_inode) 639 if (direntry->d_inode)
628 drop_nlink(direntry->d_inode); 640 drop_nlink(direntry->d_inode);