diff options
author | Suresh Jayaraman <sjayaraman@suse.de> | 2010-12-01 14:42:28 +0530 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2010-12-02 19:32:11 +0000 |
commit | 6d20e8406f0942228a73000663c2b33f488103ea (patch) | |
tree | 2469267c2ee10c4c723eaa01b1f24c8d0f704870 /fs/cifs/cifs_fs_sb.h | |
parent | 8cb280c90f9cfaab3ba3afbace0b1711dee80d0c (diff) | |
download | linux-6d20e8406f0942228a73000663c2b33f488103ea.tar.gz linux-6d20e8406f0942228a73000663c2b33f488103ea.tar.bz2 linux-6d20e8406f0942228a73000663c2b33f488103ea.zip |
cifs: add attribute cache timeout (actimeo) tunable
Currently, the attribute cache timeout for CIFS is hardcoded to 1 second. This
means that the client might have to issue a QPATHINFO/QFILEINFO call every 1
second to verify if something has changes, which seems too expensive. On the
other hand, if the timeout is hardcoded to a higher value, workloads that
expect strict cache coherency might see unexpected results.
Making attribute cache timeout as a tunable will allow us to make a tradeoff
between performance and cache metadata correctness depending on the
application/workload needs.
Add 'actimeo' tunable that can be used to tune the attribute cache timeout.
The default timeout is set to 1 second. Also, display actimeo option value in
/proc/mounts.
It appears to me that 'actimeo' and the proposed (but not yet merged)
'strictcache' option cannot coexist, so care must be taken that we reset the
other option if one of them is set.
Changes since last post:
- fix option parsing and handle possible values correcly
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de>
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs/cifs_fs_sb.h')
-rw-r--r-- | fs/cifs/cifs_fs_sb.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/cifs/cifs_fs_sb.h b/fs/cifs/cifs_fs_sb.h index e9a393c9c2ca..7852cd677051 100644 --- a/fs/cifs/cifs_fs_sb.h +++ b/fs/cifs/cifs_fs_sb.h @@ -48,6 +48,7 @@ struct cifs_sb_info { struct nls_table *local_nls; unsigned int rsize; unsigned int wsize; + unsigned long actimeo; /* attribute cache timeout (jiffies) */ atomic_t active; uid_t mnt_uid; gid_t mnt_gid; |