diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-07-27 18:03:19 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-07-27 18:20:51 -0400 |
commit | 744d18dbfae07482ea461701b0aaec3a75ec9224 (patch) | |
tree | 53246e5fd448ebf21d8ce9c9fa973995166d985e /fs/nfs | |
parent | 31c9446993f412ecb7875e30bba4bc7f216ae016 (diff) | |
download | op-kernel-dev-744d18dbfae07482ea461701b0aaec3a75ec9224.zip op-kernel-dev-744d18dbfae07482ea461701b0aaec3a75ec9224.tar.gz |
NFS: Ensure we call nfs_sb_deactive() after releasing the directory inode
In order to avoid the "Busy inodes after unmount" error message, we need to
ensure that nfs_async_unlink_release() releases the super block after the
call to nfs_free_unlinkdata().
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs')
-rw-r--r-- | fs/nfs/unlink.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/nfs/unlink.c b/fs/nfs/unlink.c index 3adf8b2..f089e58 100644 --- a/fs/nfs/unlink.c +++ b/fs/nfs/unlink.c @@ -95,10 +95,11 @@ static void nfs_async_unlink_done(struct rpc_task *task, void *calldata) static void nfs_async_unlink_release(void *calldata) { struct nfs_unlinkdata *data = calldata; + struct super_block *sb = data->dir->i_sb; nfs_dec_sillycount(data->dir); - nfs_sb_deactive(NFS_SERVER(data->dir)); nfs_free_unlinkdata(data); + nfs_sb_deactive(NFS_SB(sb)); } static const struct rpc_call_ops nfs_unlink_ops = { |