1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301int nfs4_do_close(struct path *path, struct nfs4_state *state, int wait)
1302{
1303 struct nfs_server *server = NFS_SERVER(state->inode);
1304 struct nfs4_closedata *calldata;
1305 struct nfs4_state_owner *sp = state->owner;
1306 struct rpc_task *task;
1307 struct rpc_message msg = {
1308 .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_CLOSE],
1309 .rpc_cred = state->owner->so_cred,
1310 };
1311 struct rpc_task_setup task_setup_data = {
1312 .rpc_client = server->client,
1313 .rpc_message = &msg,
1314 .callback_ops = &nfs4_close_ops,
1315 .workqueue = nfsiod_workqueue,
1316 .flags = RPC_TASK_ASYNC,
1317 };
1318 int status = -ENOMEM;
1319
1320 calldata = kmalloc(sizeof(*calldata), GFP_KERNEL);
1321 if (calldata == NULL)
1322 goto out;
1323 calldata->inode = state->inode;
1324 calldata->state = state;
1325 calldata->arg.fh = NFS_FH(state->inode);
1326 calldata->arg.stateid = &state->open_stateid;
1327
1328 calldata->arg.seqid = nfs_alloc_seqid(&state->owner->so_seqid);
1329 if (calldata->arg.seqid == NULL)
1330 goto out_free_calldata;