aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-12-17 16:36:17 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-12-17 16:36:17 -0500
commit2cc3a8f6ac0fb1e6095a47001d31aadcf9722bde (patch)
treeafcc572acff2548cdabdfb0ec488508e1864daf1 /fs
parent23afc5c67588c92a062b4828a97b119755dffb51 (diff)
parent78f5815368837ae7e3a0d3709c9f95f74e4d8537 (diff)
Merge git://git.linux-nfs.org/pub/linux/nfs-2.6
* git://git.linux-nfs.org/pub/linux/nfs-2.6: MAINTAINERS: update the NFS CLIENT entry NFS: Fix an Oops in NFS unmount Revert "NFS: Ensure we return zero if applications attempt to write zero bytes" SUNRPC xprtrdma: fix XDR tail buf marshalling for all ops NFSv2/v3: Fix a memory leak when using -onolock NFS: Fix NFS mountpoint crossing...
Diffstat (limited to 'fs')
-rw-r--r--fs/nfs/client.c6
-rw-r--r--fs/nfs/direct.c2
-rw-r--r--fs/nfs/getroot.c11
-rw-r--r--fs/nfs/super.c2
4 files changed, 15 insertions, 6 deletions
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index 70587f383f10..a6f625497612 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -410,9 +410,6 @@ static int nfs_create_rpc_client(struct nfs_client *clp, int proto,
410 */ 410 */
411static void nfs_destroy_server(struct nfs_server *server) 411static void nfs_destroy_server(struct nfs_server *server)
412{ 412{
413 if (!IS_ERR(server->client_acl))
414 rpc_shutdown_client(server->client_acl);
415
416 if (!(server->flags & NFS_MOUNT_NONLM)) 413 if (!(server->flags & NFS_MOUNT_NONLM))
417 lockd_down(); /* release rpc.lockd */ 414 lockd_down(); /* release rpc.lockd */
418} 415}
@@ -755,6 +752,9 @@ void nfs_free_server(struct nfs_server *server)
755 752
756 if (server->destroy != NULL) 753 if (server->destroy != NULL)
757 server->destroy(server); 754 server->destroy(server);
755
756 if (!IS_ERR(server->client_acl))
757 rpc_shutdown_client(server->client_acl);
758 if (!IS_ERR(server->client)) 758 if (!IS_ERR(server->client))
759 rpc_shutdown_client(server->client); 759 rpc_shutdown_client(server->client);
760 760
diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
index 5e8d82f6666b..3c9d16b4f80c 100644
--- a/fs/nfs/direct.c
+++ b/fs/nfs/direct.c
@@ -894,8 +894,6 @@ ssize_t nfs_file_direct_write(struct kiocb *iocb, const struct iovec *iov,
894 retval = generic_write_checks(file, &pos, &count, 0); 894 retval = generic_write_checks(file, &pos, &count, 0);
895 if (retval) 895 if (retval)
896 goto out; 896 goto out;
897 if (!count)
898 goto out; /* return 0 */
899 897
900 retval = -EINVAL; 898 retval = -EINVAL;
901 if ((ssize_t) count < 0) 899 if ((ssize_t) count < 0)
diff --git a/fs/nfs/getroot.c b/fs/nfs/getroot.c
index 0ee43843f4ec..e6242cdbaf91 100644
--- a/fs/nfs/getroot.c
+++ b/fs/nfs/getroot.c
@@ -57,6 +57,17 @@ static int nfs_superblock_set_dummy_root(struct super_block *sb, struct inode *i
57 } 57 }
58 /* Circumvent igrab(): we know the inode is not being freed */ 58 /* Circumvent igrab(): we know the inode is not being freed */
59 atomic_inc(&inode->i_count); 59 atomic_inc(&inode->i_count);
60 /*
61 * Ensure that this dentry is invisible to d_find_alias().
62 * Otherwise, it may be spliced into the tree by
63 * d_materialise_unique if a parent directory from the same
64 * filesystem gets mounted at a later time.
65 * This again causes shrink_dcache_for_umount_subtree() to
66 * Oops, since the test for IS_ROOT() will fail.
67 */
68 spin_lock(&dcache_lock);
69 list_del_init(&sb->s_root->d_alias);
70 spin_unlock(&dcache_lock);
60 } 71 }
61 return 0; 72 return 0;
62} 73}
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 2426e713b77f..ea929207f274 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -1475,7 +1475,7 @@ static int nfs_xdev_get_sb(struct file_system_type *fs_type, int flags,
1475 error = PTR_ERR(mntroot); 1475 error = PTR_ERR(mntroot);
1476 goto error_splat_super; 1476 goto error_splat_super;
1477 } 1477 }
1478 if (mntroot->d_inode->i_op != &nfs_dir_inode_operations) { 1478 if (mntroot->d_inode->i_op != server->nfs_client->rpc_ops->dir_inode_ops) {
1479 dput(mntroot); 1479 dput(mntroot);
1480 error = -ESTALE; 1480 error = -ESTALE;
1481 goto error_splat_super; 1481 goto error_splat_super;