Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a6f8de3d9b124c95893054fd2a78bc7be5bb9000
Commit:     a6f8de3d9b124c95893054fd2a78bc7be5bb9000
Parent:     ce06c9f025120dbb2978d9b84641d76c25f17902
Author:     Steve French <[EMAIL PROTECTED]>
AuthorDate: Thu Nov 8 23:10:32 2007 +0000
Committer:  Steve French <[EMAIL PROTECTED]>
CommitDate: Thu Nov 8 23:10:32 2007 +0000

    [CIFS] Fix stale mode after readdir when cifsacl specified
    
    When mounted with cifsacl mount option, readdir can not
    instantiate the inode with the estimated mode based on the ACL
    for each file since we have not queried for the ACL for
    each of these files yet.  So set the refresh time to zero
    for these inodes so that the next stat will cause the client
    to go to the server for the ACL info so we can build the estimated
    mode (this means we also will issue an extra QueryPathInfo if
    the stat happens within 1 second, but this is trivial compared to
    the time required to open/getacl/close for each).
    
    ls -l is slower when cifsacl mount option is specified, but
    displays correct mode information.
    
    Signed-off-by: Shirish Pargaonkar <[EMAIL PROTECTED]>
    Signed-off-by: Steve French <[EMAIL PROTECTED]>
---
 fs/cifs/readdir.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
index 82497d4..0f22def 100644
--- a/fs/cifs/readdir.c
+++ b/fs/cifs/readdir.c
@@ -171,7 +171,13 @@ static void fill_in_inode(struct inode *tmp_inode, int 
new_buf_type,
        /* Linux can not store file creation time unfortunately so ignore it */
 
        cifsInfo->cifsAttrs = attr;
-       cifsInfo->time = jiffies;
+#ifdef CONFIG_CIFS_EXPERIMENTAL
+       if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) {
+               /* get more accurate mode via ACL - so force inode refresh */
+               cifsInfo->time = 0;
+       } else
+#endif /* CONFIG_CIFS_EXPERIMENTAL */
+               cifsInfo->time = jiffies;
 
        /* treat dos attribute of read-only as read-only mode bit e.g. 555? */
        /* 2767 perms - indicate mandatory locking */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to