[PATCH] NFS: Add support for NFSv3 ACLs
[deliverable/linux.git] / fs / nfs / dir.c
index ff6155f5e8d9e3e30bbc5fa7422d67119426b1e0..2c6a959456849f16141928f44fdb728893d9d60a 100644 (file)
@@ -32,6 +32,7 @@
 #include <linux/smp_lock.h>
 #include <linux/namei.h>
 
+#include "nfs4_fs.h"
 #include "delegation.h"
 
 #define NFS_PARANOIA 1
@@ -74,6 +75,27 @@ struct inode_operations nfs_dir_inode_operations = {
        .setattr        = nfs_setattr,
 };
 
+#ifdef CONFIG_NFS_V3
+struct inode_operations nfs3_dir_inode_operations = {
+       .create         = nfs_create,
+       .lookup         = nfs_lookup,
+       .link           = nfs_link,
+       .unlink         = nfs_unlink,
+       .symlink        = nfs_symlink,
+       .mkdir          = nfs_mkdir,
+       .rmdir          = nfs_rmdir,
+       .mknod          = nfs_mknod,
+       .rename         = nfs_rename,
+       .permission     = nfs_permission,
+       .getattr        = nfs_getattr,
+       .setattr        = nfs_setattr,
+       .listxattr      = nfs3_listxattr,
+       .getxattr       = nfs3_getxattr,
+       .setxattr       = nfs3_setxattr,
+       .removexattr    = nfs3_removexattr,
+};
+#endif  /* CONFIG_NFS_V3 */
+
 #ifdef CONFIG_NFS_V4
 
 static struct dentry *nfs_atomic_lookup(struct inode *, struct dentry *, struct nameidata *);
@@ -90,6 +112,9 @@ struct inode_operations nfs4_dir_inode_operations = {
        .permission     = nfs_permission,
        .getattr        = nfs_getattr,
        .setattr        = nfs_setattr,
+       .getxattr       = nfs4_getxattr,
+       .setxattr       = nfs4_setxattr,
+       .listxattr      = nfs4_listxattr,
 };
 
 #endif /* CONFIG_NFS_V4 */
@@ -164,12 +189,10 @@ int nfs_readdir_filler(nfs_readdir_descriptor_t *desc, struct page *page)
        NFS_FLAGS(inode) |= NFS_INO_INVALID_ATIME;
        /* Ensure consistent page alignment of the data.
         * Note: assumes we have exclusive access to this mapping either
-        *       throught inode->i_sem or some other mechanism.
+        *       through inode->i_sem or some other mechanism.
         */
-       if (page->index == 0) {
-               invalidate_inode_pages(inode->i_mapping);
-               NFS_I(inode)->readdir_timestamp = timestamp;
-       }
+       if (page->index == 0)
+               invalidate_inode_pages2_range(inode->i_mapping, PAGE_CACHE_SIZE, -1);
        unlock_page(page);
        return 0;
  error:
This page took 0.028421 seconds and 5 git commands to generate.