X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=fs%2Fafs%2Finode.c;h=d196840127c6bdf7174defa94fc7184c25e2ad92;hb=f2d40cd92c5604a868b22c44a7858206ae4fcf35;hp=515a5d12d8fb5d49d69a6f896ac33c2dfdbdf859;hpb=9a9136e270af14da506f66bcafcc506b86a86498;p=linux-2.6-omap-h63xx.git diff --git a/fs/afs/inode.c b/fs/afs/inode.c index 515a5d12d8f..d196840127c 100644 --- a/fs/afs/inode.c +++ b/fs/afs/inode.c @@ -19,6 +19,7 @@ #include #include #include +#include #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); } /*