]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/afs/inode.c
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[linux-2.6-omap-h63xx.git] / fs / afs / inode.c
index 515a5d12d8fb5d49d69a6f896ac33c2dfdbdf859..d196840127c6bdf7174defa94fc7184c25e2ad92 100644 (file)
@@ -19,6 +19,7 @@
 #include <linux/slab.h>
 #include <linux/fs.h>
 #include <linux/pagemap.h>
+#include <linux/sched.h>
 #include "internal.h"
 
 struct afs_iget_data {
@@ -209,11 +210,15 @@ bad_inode:
  */
 void afs_zap_data(struct afs_vnode *vnode)
 {
-       _enter("zap data {%x:%u}", vnode->fid.vid, vnode->fid.vnode);
+       _enter("{%x:%u}", vnode->fid.vid, vnode->fid.vnode);
 
        /* nuke all the non-dirty pages that aren't locked, mapped or being
-        * written back */
-       invalidate_remote_inode(&vnode->vfs_inode);
+        * written back in a regular file and completely discard the pages in a
+        * directory or symlink */
+       if (S_ISREG(vnode->vfs_inode.i_mode))
+               invalidate_remote_inode(&vnode->vfs_inode);
+       else
+               invalidate_inode_pages2(vnode->vfs_inode.i_mapping);
 }
 
 /*