summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@fys.uio.no>2002-07-28 02:45:57 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2002-07-28 02:45:57 -0700
commitc385d3e11995b638e5e6d26b26125d372a0fbf4a (patch)
tree15ab1dee3475d97f3211d7651178c03ce27c697f /include
parent002d79116b97d3f43dfc6ac2984205d46d9d4302 (diff)
[PATCH] Support for cached lookups via readdirplus [3/6]
Cache the information about whether or not the server supports READDIRPLUS.
Diffstat (limited to 'include')
-rw-r--r--include/linux/nfs_fs.h11
-rw-r--r--include/linux/nfs_fs_sb.h4
2 files changed, 13 insertions, 2 deletions
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index 02ef81aee197..16b3e1be73e3 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -225,8 +225,15 @@ do { \
#define NFS_FILEID(inode) (NFS_I(inode)->fileid)
-/* Inode Flags */
-#define NFS_USE_READDIRPLUS(inode) ((NFS_FLAGS(inode) & NFS_INO_ADVISE_RDPLUS) ? 1 : 0)
+static inline int nfs_server_capable(struct inode *inode, int cap)
+{
+ return NFS_SERVER(inode)->caps & cap;
+}
+
+static inline int NFS_USE_READDIRPLUS(struct inode *inode)
+{
+ return NFS_FLAGS(inode) & NFS_INO_ADVISE_RDPLUS;
+}
static inline
loff_t page_offset(struct page *page)
diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h
index f1cd15d924dc..080c98fed1dd 100644
--- a/include/linux/nfs_fs_sb.h
+++ b/include/linux/nfs_fs_sb.h
@@ -10,6 +10,7 @@ struct nfs_server {
struct rpc_clnt * client; /* RPC client handle */
struct nfs_rpc_ops * rpc_ops; /* NFS protocol vector */
int flags; /* various flags */
+ unsigned int caps; /* server capabilities */
unsigned int rsize; /* read size */
unsigned int rpages; /* read size (in pages) */
unsigned int wsize; /* write size */
@@ -31,4 +32,7 @@ struct nfs_server {
struct sockaddr_in addr;
};
+/* Server capabilities */
+#define NFS_CAP_READDIRPLUS (1)
+
#endif