aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/write.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2008-02-19 20:04:23 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2008-02-26 00:40:37 -0500
commit101070ca2fe67186f5f5517b66cb4757b17f4e29 (patch)
treeb131c97e3033fc4c848e8cb3d76f675735b95085 /fs/nfs/write.c
parent5746006f1d17d9d5a3015051ea54de4341cb31f9 (diff)
NFS: Ensure that the asynchronous RPC calls complete on nfsiod.
We want to ensure that rpc_call_ops that involve mntput() are run on nfsiod rather than on rpciod, so that they don't deadlock when the resulting umount calls rpc_shutdown_client(). Hence we specify that read, write and commit calls must complete on nfsiod. Ditto for NFSv4 open, lock, locku and close asynchronous calls. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/write.c')
-rw-r--r--fs/nfs/write.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 69b4158d9a10..84495ef90728 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -803,6 +803,7 @@ static void nfs_write_rpcsetup(struct nfs_page *req,
803 .rpc_message = &msg, 803 .rpc_message = &msg,
804 .callback_ops = call_ops, 804 .callback_ops = call_ops,
805 .callback_data = data, 805 .callback_data = data,
806 .workqueue = nfsiod_workqueue,
806 .flags = flags, 807 .flags = flags,
807 .priority = priority, 808 .priority = priority,
808 }; 809 };
@@ -1187,6 +1188,7 @@ static void nfs_commit_rpcsetup(struct list_head *head,
1187 .rpc_message = &msg, 1188 .rpc_message = &msg,
1188 .callback_ops = &nfs_commit_ops, 1189 .callback_ops = &nfs_commit_ops,
1189 .callback_data = data, 1190 .callback_data = data,
1191 .workqueue = nfsiod_workqueue,
1190 .flags = flags, 1192 .flags = flags,
1191 .priority = priority, 1193 .priority = priority,
1192 }; 1194 };