X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=fs%2Fafs%2Finode.c;h=d196840127c6bdf7174defa94fc7184c25e2ad92;hb=ecd27b92fbb41f779d857632a69bd45dbaf0f915;hp=515a5d12d8fb5d49d69a6f896ac33c2dfdbdf859;hpb=f697b677620d04d8c77841745727de85f7e948b1;p=linux-2.6 diff --git a/fs/afs/inode.c b/fs/afs/inode.c index 515a5d12d8..d196840127 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); } /*