diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-02-19 20:04:23 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-02-26 00:40:37 -0500 |
commit | 101070ca2fe67186f5f5517b66cb4757b17f4e29 (patch) | |
tree | b131c97e3033fc4c848e8cb3d76f675735b95085 /fs/nfs/write.c | |
parent | 5746006f1d17d9d5a3015051ea54de4341cb31f9 (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.c | 2 |
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 | }; |