patch-2.4.0-test9 linux/fs/nfs/unlink.c

Next file: linux/fs/nfsd/export.c
Previous file: linux/fs/nfs/proc.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test8/linux/fs/nfs/unlink.c linux/fs/nfs/unlink.c
@@ -23,7 +23,7 @@
 	unsigned int	count;
 };
 
-static struct nfs_unlinkdata	*nfs_deletes = NULL;
+static struct nfs_unlinkdata	*nfs_deletes;
 static struct rpc_wait_queue	nfs_delete_queue = RPC_INIT_WAITQ("nfs_delete_queue");
 
 /**
@@ -121,8 +121,11 @@
 {
 	struct nfs_unlinkdata	*data = (struct nfs_unlinkdata *)task->tk_calldata;
 	struct dentry		*dir = data->dir;
-	struct inode		*dir_i = dir->d_inode;
+	struct inode		*dir_i;
 
+	if (!dir)
+		return;
+	dir_i = dir->d_inode;
 	nfs_zap_caches(dir_i);
 	NFS_PROTO(dir_i)->unlink_done(dir, &task->tk_msg);
 	rpcauth_releasecred(task->tk_auth, data->cred);
@@ -206,6 +209,7 @@
 		return;
 	data->count++;
 	nfs_copy_dname(dentry, data);
+	dentry->d_flags &= ~DCACHE_NFSFS_RENAMED;
 	if (data->task.tk_rpcwait == &nfs_delete_queue)
 		rpc_wake_up_task(&data->task);
 	nfs_put_unlinkdata(data);

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)