From 89fe1065e6051c42835f4ad5411f6e7c0ce2a34b Mon Sep 17 00:00:00 2001 From: Jeff Layton Date: Fri, 17 Oct 2008 21:03:20 -0400 Subject: [PATCH] --- yaml --- r: 117583 b: refs/heads/master c: 9a8165fce724d1aba21e2c713ac6ba11dbfecafa h: refs/heads/master i: 117581: 918717c1f9b40cb00d6c1fcc19252e056e4438ed 117579: a948bf8d25bb83c4981338f3433d169b796a0728 117575: e6d0927d9c77a77f3f664a64680411c4ffd17d80 117567: 309c637e95e404b2abb779ea9daad4b1817b3b29 v: v3 --- [refs] | 2 +- trunk/fs/cifs/cifsfs.c | 1 + trunk/fs/cifs/cifsglob.h | 1 + trunk/fs/cifs/cifssmb.c | 2 ++ trunk/fs/cifs/inode.c | 1 + 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 90989e2d9faa..07e1578b9e11 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dd1db2dedc4f6ad736fbba5aa6ecfe6e7c8ee0f4 +refs/heads/master: 9a8165fce724d1aba21e2c713ac6ba11dbfecafa diff --git a/trunk/fs/cifs/cifsfs.c b/trunk/fs/cifs/cifsfs.c index 25ecbd5b0404..c6aad775dd6d 100644 --- a/trunk/fs/cifs/cifsfs.c +++ b/trunk/fs/cifs/cifsfs.c @@ -309,6 +309,7 @@ cifs_alloc_inode(struct super_block *sb) file data or metadata */ cifs_inode->clientCanCacheRead = false; cifs_inode->clientCanCacheAll = false; + cifs_inode->delete_pending = false; cifs_inode->vfs_inode.i_blkbits = 14; /* 2**14 = CIFS_MAX_MSGSIZE */ /* Can not set i_flags here - they get immediately overwritten diff --git a/trunk/fs/cifs/cifsglob.h b/trunk/fs/cifs/cifsglob.h index 0d22479d99b7..178f733a368f 100644 --- a/trunk/fs/cifs/cifsglob.h +++ b/trunk/fs/cifs/cifsglob.h @@ -353,6 +353,7 @@ struct cifsInodeInfo { bool clientCanCacheRead:1; /* read oplock */ bool clientCanCacheAll:1; /* read and writebehind oplock */ bool oplockPending:1; + bool delete_pending:1; /* DELETE_ON_CLOSE is set */ struct inode vfs_inode; }; diff --git a/trunk/fs/cifs/cifssmb.c b/trunk/fs/cifs/cifssmb.c index 6f4ffe15d68d..843a85fb8b9a 100644 --- a/trunk/fs/cifs/cifssmb.c +++ b/trunk/fs/cifs/cifssmb.c @@ -1309,6 +1309,7 @@ SMBLegacyOpen(const int xid, struct cifsTconInfo *tcon, cpu_to_le64(le32_to_cpu(pSMBr->EndOfFile)); pfile_info->EndOfFile = pfile_info->AllocationSize; pfile_info->NumberOfLinks = cpu_to_le32(1); + pfile_info->DeletePending = 0; } } @@ -1410,6 +1411,7 @@ CIFSSMBOpen(const int xid, struct cifsTconInfo *tcon, pfile_info->AllocationSize = pSMBr->AllocationSize; pfile_info->EndOfFile = pSMBr->EndOfFile; pfile_info->NumberOfLinks = cpu_to_le32(1); + pfile_info->DeletePending = 0; } } diff --git a/trunk/fs/cifs/inode.c b/trunk/fs/cifs/inode.c index fe4f2ee97b6c..dea9eeb58b00 100644 --- a/trunk/fs/cifs/inode.c +++ b/trunk/fs/cifs/inode.c @@ -506,6 +506,7 @@ int cifs_get_inode_info(struct inode **pinode, inode = *pinode; cifsInfo = CIFS_I(inode); cifsInfo->cifsAttrs = attr; + cifsInfo->delete_pending = pfindData->DeletePending ? true : false; cFYI(1, ("Old time %ld", cifsInfo->time)); cifsInfo->time = jiffies; cFYI(1, ("New time %ld", cifsInfo->time));