From b96dcf03969bd708ab1cfb8ecda8959924baf3e5 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Tue, 18 Oct 2005 14:20:22 -0700 Subject: [PATCH] --- yaml --- r: 9987 b: refs/heads/master c: 6fe43f9e3701f7a9f2be151a5e6cfe94b87e92f9 h: refs/heads/master i: 9985: d90218e561e273271b02908f7701ebbd2e13dcac 9983: e1a1c39a8521cf2d5452baee3d51402d5fede8a7 v: v3 --- [refs] | 2 +- trunk/fs/nfs/dir.c | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index d0a266ac5712..5e46f7889b9c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4c780a4688b421baa896b59778c05d7e068e479f +refs/heads/master: 6fe43f9e3701f7a9f2be151a5e6cfe94b87e92f9 diff --git a/trunk/fs/nfs/dir.c b/trunk/fs/nfs/dir.c index 72f50c0117b1..eb50c19fc253 100644 --- a/trunk/fs/nfs/dir.c +++ b/trunk/fs/nfs/dir.c @@ -1511,9 +1511,11 @@ static int nfs_rename(struct inode *old_dir, struct dentry *old_dentry, */ if (!new_inode) goto go_ahead; - if (S_ISDIR(new_inode->i_mode)) - goto out; - else if (atomic_read(&new_dentry->d_count) > 2) { + if (S_ISDIR(new_inode->i_mode)) { + error = -EISDIR; + if (!S_ISDIR(old_inode->i_mode)) + goto out; + } else if (atomic_read(&new_dentry->d_count) > 2) { int err; /* copy the target dentry's name */ dentry = d_alloc(new_dentry->d_parent,