afs: Don't invalidate callback if AFS_VNODE_DIR_VALID not set
[sfrench/cifs-2.6.git] / fs / afs / inode.c
index f30aa5eacd39f91253e1590ff48f9db3212bdeca..bf8f56e851dfe0f3775e66ee8fe616460e915050 100644 (file)
@@ -136,7 +136,7 @@ int afs_fetch_status(struct afs_vnode *vnode, struct key *key, bool new_inode)
               vnode->flags);
 
        ret = -ERESTARTSYS;
-       if (afs_begin_vnode_operation(&fc, vnode, key)) {
+       if (afs_begin_vnode_operation(&fc, vnode, key, true)) {
                while (afs_select_fileserver(&fc)) {
                        fc.cb_break = afs_calc_vnode_cb_break(vnode);
                        afs_fs_fetch_file_status(&fc, NULL, new_inode);
@@ -430,12 +430,9 @@ int afs_validate(struct afs_vnode *vnode, struct key *key)
                        vnode->cb_s_break = vnode->cb_interest->server->cb_s_break;
                        vnode->cb_v_break = vnode->volume->cb_v_break;
                        valid = false;
-               } else if (vnode->status.type == AFS_FTYPE_DIR &&
-                          (!test_bit(AFS_VNODE_DIR_VALID, &vnode->flags) ||
-                           vnode->cb_expires_at - 10 <= now)) {
+               } else if (test_bit(AFS_VNODE_ZAP_DATA, &vnode->flags)) {
                        valid = false;
-               } else if (test_bit(AFS_VNODE_ZAP_DATA, &vnode->flags) ||
-                          vnode->cb_expires_at - 10 <= now) {
+               } else if (vnode->cb_expires_at - 10 <= now) {
                        valid = false;
                } else {
                        valid = true;
@@ -617,7 +614,7 @@ int afs_setattr(struct dentry *dentry, struct iattr *attr)
        }
 
        ret = -ERESTARTSYS;
-       if (afs_begin_vnode_operation(&fc, vnode, key)) {
+       if (afs_begin_vnode_operation(&fc, vnode, key, false)) {
                while (afs_select_fileserver(&fc)) {
                        fc.cb_break = afs_calc_vnode_cb_break(vnode);
                        afs_fs_setattr(&fc, attr);