Lines Matching refs:data
93 static int _nfs4_recover_proc_open(struct nfs4_opendata *data);
991 struct nfs4_call_sync_data *data = calldata; in nfs41_call_sync_prepare() local
993 dprintk("--> %s data->seq_server %p\n", __func__, data->seq_server); in nfs41_call_sync_prepare()
995 nfs4_setup_sequence(data->seq_server->nfs_client, in nfs41_call_sync_prepare()
996 data->seq_args, data->seq_res, task); in nfs41_call_sync_prepare()
1001 struct nfs4_call_sync_data *data = calldata; in nfs41_call_sync_done() local
1003 nfs41_sequence_done(task, data->seq_res); in nfs41_call_sync_done()
1112 struct nfs4_call_sync_data *data = calldata; in nfs40_call_sync_prepare() local
1113 nfs4_setup_sequence(data->seq_server->nfs_client, in nfs40_call_sync_prepare()
1114 data->seq_args, data->seq_res, task); in nfs40_call_sync_prepare()
1119 struct nfs4_call_sync_data *data = calldata; in nfs40_call_sync_done() local
1120 nfs4_sequence_done(task, data->seq_res); in nfs40_call_sync_done()
1150 struct nfs4_call_sync_data data = { in nfs4_do_call_sync() local
1159 .callback_data = &data, in nfs4_do_call_sync()
1400 memcpy(p->o_arg.u.verifier.data, c->verf, in nfs4_opendata_alloc()
1401 sizeof(p->o_arg.u.verifier.data)); in nfs4_opendata_alloc()
1945 nfs4_opendata_check_deleg(struct nfs4_opendata *data, struct nfs4_state *state) in nfs4_opendata_check_deleg() argument
1956 switch (data->o_arg.claim) { in nfs4_opendata_check_deleg()
1969 data->owner->so_cred, in nfs4_opendata_check_deleg()
1970 data->o_res.delegation_type, in nfs4_opendata_check_deleg()
1971 &data->o_res.delegation, in nfs4_opendata_check_deleg()
1972 data->o_res.pagemod_limit); in nfs4_opendata_check_deleg()
1975 data->owner->so_cred, in nfs4_opendata_check_deleg()
1976 data->o_res.delegation_type, in nfs4_opendata_check_deleg()
1977 &data->o_res.delegation, in nfs4_opendata_check_deleg()
1978 data->o_res.pagemod_limit); in nfs4_opendata_check_deleg()
1980 if (data->o_res.do_recall) in nfs4_opendata_check_deleg()
1982 &data->o_res.delegation); in nfs4_opendata_check_deleg()
1990 _nfs4_opendata_reclaim_to_nfs4_state(struct nfs4_opendata *data) in _nfs4_opendata_reclaim_to_nfs4_state() argument
1992 struct inode *inode = data->state->inode; in _nfs4_opendata_reclaim_to_nfs4_state()
1993 struct nfs4_state *state = data->state; in _nfs4_opendata_reclaim_to_nfs4_state()
1996 if (!data->rpc_done) { in _nfs4_opendata_reclaim_to_nfs4_state()
1997 if (data->rpc_status) in _nfs4_opendata_reclaim_to_nfs4_state()
1998 return ERR_PTR(data->rpc_status); in _nfs4_opendata_reclaim_to_nfs4_state()
1999 return nfs4_try_open_cached(data); in _nfs4_opendata_reclaim_to_nfs4_state()
2002 ret = nfs_refresh_inode(inode, &data->f_attr); in _nfs4_opendata_reclaim_to_nfs4_state()
2006 if (data->o_res.delegation_type != 0) in _nfs4_opendata_reclaim_to_nfs4_state()
2007 nfs4_opendata_check_deleg(data, state); in _nfs4_opendata_reclaim_to_nfs4_state()
2009 if (!update_open_stateid(state, &data->o_res.stateid, in _nfs4_opendata_reclaim_to_nfs4_state()
2010 NULL, data->o_arg.fmode)) in _nfs4_opendata_reclaim_to_nfs4_state()
2018 nfs4_opendata_get_inode(struct nfs4_opendata *data) in nfs4_opendata_get_inode() argument
2022 switch (data->o_arg.claim) { in nfs4_opendata_get_inode()
2026 if (!(data->f_attr.valid & NFS_ATTR_FATTR)) in nfs4_opendata_get_inode()
2028 inode = nfs_fhget(data->dir->d_sb, &data->o_res.fh, in nfs4_opendata_get_inode()
2029 &data->f_attr, data->f_label); in nfs4_opendata_get_inode()
2032 inode = d_inode(data->dentry); in nfs4_opendata_get_inode()
2034 nfs_refresh_inode(inode, &data->f_attr); in nfs4_opendata_get_inode()
2040 nfs4_opendata_find_nfs4_state(struct nfs4_opendata *data) in nfs4_opendata_find_nfs4_state() argument
2045 inode = nfs4_opendata_get_inode(data); in nfs4_opendata_find_nfs4_state()
2048 if (data->state != NULL && data->state->inode == inode) { in nfs4_opendata_find_nfs4_state()
2049 state = data->state; in nfs4_opendata_find_nfs4_state()
2052 state = nfs4_get_open_state(inode, data->owner); in nfs4_opendata_find_nfs4_state()
2060 _nfs4_opendata_to_nfs4_state(struct nfs4_opendata *data) in _nfs4_opendata_to_nfs4_state() argument
2064 if (!data->rpc_done) { in _nfs4_opendata_to_nfs4_state()
2065 state = nfs4_try_open_cached(data); in _nfs4_opendata_to_nfs4_state()
2066 trace_nfs4_cached_open(data->state); in _nfs4_opendata_to_nfs4_state()
2070 state = nfs4_opendata_find_nfs4_state(data); in _nfs4_opendata_to_nfs4_state()
2074 if (data->o_res.delegation_type != 0) in _nfs4_opendata_to_nfs4_state()
2075 nfs4_opendata_check_deleg(data, state); in _nfs4_opendata_to_nfs4_state()
2076 if (!update_open_stateid(state, &data->o_res.stateid, in _nfs4_opendata_to_nfs4_state()
2077 NULL, data->o_arg.fmode)) { in _nfs4_opendata_to_nfs4_state()
2082 nfs_release_seqid(data->o_arg.seqid); in _nfs4_opendata_to_nfs4_state()
2087 nfs4_opendata_to_nfs4_state(struct nfs4_opendata *data) in nfs4_opendata_to_nfs4_state() argument
2091 if (data->o_arg.claim == NFS4_OPEN_CLAIM_PREVIOUS) in nfs4_opendata_to_nfs4_state()
2092 ret =_nfs4_opendata_reclaim_to_nfs4_state(data); in nfs4_opendata_to_nfs4_state()
2094 ret = _nfs4_opendata_to_nfs4_state(data); in nfs4_opendata_to_nfs4_state()
2095 nfs4_sequence_free_slot(&data->o_res.seq_res); in nfs4_opendata_to_nfs4_state()
2353 struct nfs4_opendata *data = calldata; in nfs4_open_confirm_prepare() local
2355 nfs4_setup_sequence(data->o_arg.server->nfs_client, in nfs4_open_confirm_prepare()
2356 &data->c_arg.seq_args, &data->c_res.seq_res, task); in nfs4_open_confirm_prepare()
2361 struct nfs4_opendata *data = calldata; in nfs4_open_confirm_done() local
2363 nfs40_sequence_done(task, &data->c_res.seq_res); in nfs4_open_confirm_done()
2365 data->rpc_status = task->tk_status; in nfs4_open_confirm_done()
2366 if (data->rpc_status == 0) { in nfs4_open_confirm_done()
2367 nfs4_stateid_copy(&data->o_res.stateid, &data->c_res.stateid); in nfs4_open_confirm_done()
2368 nfs_confirm_seqid(&data->owner->so_seqid, 0); in nfs4_open_confirm_done()
2369 renew_lease(data->o_res.server, data->timestamp); in nfs4_open_confirm_done()
2370 data->rpc_done = true; in nfs4_open_confirm_done()
2376 struct nfs4_opendata *data = calldata; in nfs4_open_confirm_release() local
2380 if (!data->cancelled) in nfs4_open_confirm_release()
2383 if (!data->rpc_done) in nfs4_open_confirm_release()
2385 state = nfs4_opendata_to_nfs4_state(data); in nfs4_open_confirm_release()
2387 nfs4_close_state(state, data->o_arg.fmode); in nfs4_open_confirm_release()
2389 nfs4_opendata_put(data); in nfs4_open_confirm_release()
2401 static int _nfs4_proc_open_confirm(struct nfs4_opendata *data) in _nfs4_proc_open_confirm() argument
2403 struct nfs_server *server = NFS_SERVER(d_inode(data->dir)); in _nfs4_proc_open_confirm()
2407 .rpc_argp = &data->c_arg, in _nfs4_proc_open_confirm()
2408 .rpc_resp = &data->c_res, in _nfs4_proc_open_confirm()
2409 .rpc_cred = data->owner->so_cred, in _nfs4_proc_open_confirm()
2415 .callback_data = data, in _nfs4_proc_open_confirm()
2421 nfs4_init_sequence(&data->c_arg.seq_args, &data->c_res.seq_res, 1, in _nfs4_proc_open_confirm()
2422 data->is_recover); in _nfs4_proc_open_confirm()
2423 kref_get(&data->kref); in _nfs4_proc_open_confirm()
2424 data->rpc_done = false; in _nfs4_proc_open_confirm()
2425 data->rpc_status = 0; in _nfs4_proc_open_confirm()
2426 data->timestamp = jiffies; in _nfs4_proc_open_confirm()
2432 data->cancelled = true; in _nfs4_proc_open_confirm()
2435 status = data->rpc_status; in _nfs4_proc_open_confirm()
2442 struct nfs4_opendata *data = calldata; in nfs4_open_prepare() local
2443 struct nfs4_state_owner *sp = data->owner; in nfs4_open_prepare()
2445 enum open_claim_type4 claim = data->o_arg.claim; in nfs4_open_prepare()
2447 if (nfs_wait_on_sequence(data->o_arg.seqid, task) != 0) in nfs4_open_prepare()
2453 if (data->state != NULL) { in nfs4_open_prepare()
2456 if (can_open_cached(data->state, data->o_arg.fmode, in nfs4_open_prepare()
2457 data->o_arg.open_flags, claim)) in nfs4_open_prepare()
2460 delegation = nfs4_get_valid_delegation(data->state->inode); in nfs4_open_prepare()
2461 if (can_open_delegated(delegation, data->o_arg.fmode, claim)) in nfs4_open_prepare()
2466 data->o_arg.clientid = clp->cl_clientid; in nfs4_open_prepare()
2473 data->o_arg.open_bitmap = &nfs4_open_noattr_bitmap[0]; in nfs4_open_prepare()
2478 data->timestamp = jiffies; in nfs4_open_prepare()
2479 if (nfs4_setup_sequence(data->o_arg.server->nfs_client, in nfs4_open_prepare()
2480 &data->o_arg.seq_args, in nfs4_open_prepare()
2481 &data->o_res.seq_res, in nfs4_open_prepare()
2483 nfs_release_seqid(data->o_arg.seqid); in nfs4_open_prepare()
2486 data->o_arg.createmode = NFS4_CREATE_UNCHECKED; in nfs4_open_prepare()
2487 if (data->o_arg.open_flags & O_EXCL) { in nfs4_open_prepare()
2488 data->o_arg.createmode = NFS4_CREATE_EXCLUSIVE; in nfs4_open_prepare()
2490 data->o_arg.createmode = NFS4_CREATE_GUARDED; in nfs4_open_prepare()
2492 data->o_arg.createmode = NFS4_CREATE_EXCLUSIVE4_1; in nfs4_open_prepare()
2496 trace_nfs4_cached_open(data->state); in nfs4_open_prepare()
2501 nfs4_sequence_done(task, &data->o_res.seq_res); in nfs4_open_prepare()
2506 struct nfs4_opendata *data = calldata; in nfs4_open_done() local
2508 data->rpc_status = task->tk_status; in nfs4_open_done()
2510 if (!nfs4_sequence_process(task, &data->o_res.seq_res)) in nfs4_open_done()
2514 if (data->o_res.f_attr->valid & NFS_ATTR_FATTR_TYPE) { in nfs4_open_done()
2515 switch (data->o_res.f_attr->mode & S_IFMT) { in nfs4_open_done()
2519 data->rpc_status = -ELOOP; in nfs4_open_done()
2522 data->rpc_status = -EISDIR; in nfs4_open_done()
2525 data->rpc_status = -ENOTDIR; in nfs4_open_done()
2528 renew_lease(data->o_res.server, data->timestamp); in nfs4_open_done()
2529 if (!(data->o_res.rflags & NFS4_OPEN_RESULT_CONFIRM)) in nfs4_open_done()
2530 nfs_confirm_seqid(&data->owner->so_seqid, 0); in nfs4_open_done()
2532 data->rpc_done = true; in nfs4_open_done()
2537 struct nfs4_opendata *data = calldata; in nfs4_open_release() local
2541 if (!data->cancelled) in nfs4_open_release()
2544 if (data->rpc_status != 0 || !data->rpc_done) in nfs4_open_release()
2547 if (data->o_res.rflags & NFS4_OPEN_RESULT_CONFIRM) in nfs4_open_release()
2549 state = nfs4_opendata_to_nfs4_state(data); in nfs4_open_release()
2551 nfs4_close_state(state, data->o_arg.fmode); in nfs4_open_release()
2553 nfs4_opendata_put(data); in nfs4_open_release()
2562 static int nfs4_run_open_task(struct nfs4_opendata *data, in nfs4_run_open_task() argument
2565 struct inode *dir = d_inode(data->dir); in nfs4_run_open_task()
2567 struct nfs_openargs *o_arg = &data->o_arg; in nfs4_run_open_task()
2568 struct nfs_openres *o_res = &data->o_res; in nfs4_run_open_task()
2574 .rpc_cred = data->owner->so_cred, in nfs4_run_open_task()
2580 .callback_data = data, in nfs4_run_open_task()
2589 kref_get(&data->kref); in nfs4_run_open_task()
2590 data->rpc_done = false; in nfs4_run_open_task()
2591 data->rpc_status = 0; in nfs4_run_open_task()
2592 data->cancelled = false; in nfs4_run_open_task()
2593 data->is_recover = false; in nfs4_run_open_task()
2596 data->is_recover = true; in nfs4_run_open_task()
2600 pnfs_lgopen_prepare(data, ctx); in nfs4_run_open_task()
2607 data->cancelled = true; in nfs4_run_open_task()
2610 status = data->rpc_status; in nfs4_run_open_task()
2616 static int _nfs4_recover_proc_open(struct nfs4_opendata *data) in _nfs4_recover_proc_open() argument
2618 struct inode *dir = d_inode(data->dir); in _nfs4_recover_proc_open()
2619 struct nfs_openres *o_res = &data->o_res; in _nfs4_recover_proc_open()
2622 status = nfs4_run_open_task(data, NULL); in _nfs4_recover_proc_open()
2623 if (status != 0 || !data->rpc_done) in _nfs4_recover_proc_open()
2626 nfs_fattr_map_and_free_names(NFS_SERVER(dir), &data->f_attr); in _nfs4_recover_proc_open()
2629 status = _nfs4_proc_open_confirm(data); in _nfs4_recover_proc_open()
2683 static int _nfs4_proc_open(struct nfs4_opendata *data, in _nfs4_proc_open() argument
2686 struct inode *dir = d_inode(data->dir); in _nfs4_proc_open()
2688 struct nfs_openargs *o_arg = &data->o_arg; in _nfs4_proc_open()
2689 struct nfs_openres *o_res = &data->o_res; in _nfs4_proc_open()
2692 status = nfs4_run_open_task(data, ctx); in _nfs4_proc_open()
2693 if (!data->rpc_done) in _nfs4_proc_open()
2702 nfs_fattr_map_and_free_names(server, &data->f_attr); in _nfs4_proc_open()
2706 data->file_created = true; in _nfs4_proc_open()
2708 data->file_created = true; in _nfs4_proc_open()
2709 if (data->file_created || in _nfs4_proc_open()
2718 status = _nfs4_proc_open_confirm(data); in _nfs4_proc_open()
3559 static void nfs4_free_closedata(void *data) in nfs4_free_closedata() argument
3561 struct nfs4_closedata *calldata = data; in nfs4_free_closedata()
3575 static void nfs4_close_done(struct rpc_task *task, void *data) in nfs4_close_done() argument
3577 struct nfs4_closedata *calldata = data; in nfs4_close_done()
3650 static void nfs4_close_prepare(struct rpc_task *task, void *data) in nfs4_close_prepare() argument
3652 struct nfs4_closedata *calldata = data; in nfs4_close_prepare()
4786 static void nfs4_proc_unlink_rpc_prepare(struct rpc_task *task, struct nfs_unlinkdata *data) in nfs4_proc_unlink_rpc_prepare() argument
4788 nfs4_setup_sequence(NFS_SB(data->dentry->d_sb)->nfs_client, in nfs4_proc_unlink_rpc_prepare()
4789 &data->args.seq_args, in nfs4_proc_unlink_rpc_prepare()
4790 &data->res.seq_res, in nfs4_proc_unlink_rpc_prepare()
4796 struct nfs_unlinkdata *data = task->tk_calldata; in nfs4_proc_unlink_done() local
4797 struct nfs_removeres *res = &data->res; in nfs4_proc_unlink_done()
4802 &data->timeout) == -EAGAIN) in nfs4_proc_unlink_done()
4829 static void nfs4_proc_rename_rpc_prepare(struct rpc_task *task, struct nfs_renamedata *data) in nfs4_proc_rename_rpc_prepare() argument
4831 nfs4_setup_sequence(NFS_SERVER(data->old_dir)->nfs_client, in nfs4_proc_rename_rpc_prepare()
4832 &data->args.seq_args, in nfs4_proc_rename_rpc_prepare()
4833 &data->res.seq_res, in nfs4_proc_rename_rpc_prepare()
4840 struct nfs_renamedata *data = task->tk_calldata; in nfs4_proc_rename_done() local
4841 struct nfs_renameres *res = &data->res; in nfs4_proc_rename_done()
4845 if (nfs4_async_handle_error(task, res->server, NULL, &data->timeout) == -EAGAIN) in nfs4_proc_rename_done()
4945 struct nfs4_createdata *data; in nfs4_alloc_createdata() local
4947 data = kzalloc(sizeof(*data), GFP_KERNEL); in nfs4_alloc_createdata()
4948 if (data != NULL) { in nfs4_alloc_createdata()
4951 data->label = nfs4_label_alloc(server, GFP_KERNEL); in nfs4_alloc_createdata()
4952 if (IS_ERR(data->label)) in nfs4_alloc_createdata()
4955 data->msg.rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_CREATE]; in nfs4_alloc_createdata()
4956 data->msg.rpc_argp = &data->arg; in nfs4_alloc_createdata()
4957 data->msg.rpc_resp = &data->res; in nfs4_alloc_createdata()
4958 data->arg.dir_fh = NFS_FH(dir); in nfs4_alloc_createdata()
4959 data->arg.server = server; in nfs4_alloc_createdata()
4960 data->arg.name = name; in nfs4_alloc_createdata()
4961 data->arg.attrs = sattr; in nfs4_alloc_createdata()
4962 data->arg.ftype = ftype; in nfs4_alloc_createdata()
4963 data->arg.bitmask = nfs4_bitmask(server, data->label); in nfs4_alloc_createdata()
4964 data->arg.umask = current_umask(); in nfs4_alloc_createdata()
4965 data->res.server = server; in nfs4_alloc_createdata()
4966 data->res.fh = &data->fh; in nfs4_alloc_createdata()
4967 data->res.fattr = &data->fattr; in nfs4_alloc_createdata()
4968 data->res.label = data->label; in nfs4_alloc_createdata()
4969 nfs_fattr_init(data->res.fattr); in nfs4_alloc_createdata()
4971 return data; in nfs4_alloc_createdata()
4973 kfree(data); in nfs4_alloc_createdata()
4977 static int nfs4_do_create(struct inode *dir, struct dentry *dentry, struct nfs4_createdata *data) in nfs4_do_create() argument
4979 int status = nfs4_call_sync(NFS_SERVER(dir)->client, NFS_SERVER(dir), &data->msg, in nfs4_do_create()
4980 &data->arg.seq_args, &data->res.seq_res, 1); in nfs4_do_create()
4984 if (data->arg.ftype == NF4DIR) in nfs4_do_create()
4986 nfs4_update_changeattr_locked(dir, &data->res.dir_cinfo, in nfs4_do_create()
4987 data->res.fattr->time_start, in nfs4_do_create()
4990 status = nfs_instantiate(dentry, data->res.fh, data->res.fattr, data->res.label); in nfs4_do_create()
4995 static void nfs4_free_createdata(struct nfs4_createdata *data) in nfs4_free_createdata() argument
4997 nfs4_label_free(data->label); in nfs4_free_createdata()
4998 kfree(data); in nfs4_free_createdata()
5005 struct nfs4_createdata *data; in _nfs4_proc_symlink() local
5012 data = nfs4_alloc_createdata(dir, &dentry->d_name, sattr, NF4LNK); in _nfs4_proc_symlink()
5013 if (data == NULL) in _nfs4_proc_symlink()
5016 data->msg.rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_SYMLINK]; in _nfs4_proc_symlink()
5017 data->arg.u.symlink.pages = &page; in _nfs4_proc_symlink()
5018 data->arg.u.symlink.len = len; in _nfs4_proc_symlink()
5019 data->arg.label = label; in _nfs4_proc_symlink()
5021 status = nfs4_do_create(dir, dentry, data); in _nfs4_proc_symlink()
5023 nfs4_free_createdata(data); in _nfs4_proc_symlink()
5053 struct nfs4_createdata *data; in _nfs4_proc_mkdir() local
5056 data = nfs4_alloc_createdata(dir, &dentry->d_name, sattr, NF4DIR); in _nfs4_proc_mkdir()
5057 if (data == NULL) in _nfs4_proc_mkdir()
5060 data->arg.label = label; in _nfs4_proc_mkdir()
5061 status = nfs4_do_create(dir, dentry, data); in _nfs4_proc_mkdir()
5063 nfs4_free_createdata(data); in _nfs4_proc_mkdir()
5126 memcpy(nr_res->verf, res.verifier.data, NFS4_VERIFIER_SIZE); in _nfs4_proc_readdir()
5155 struct nfs4_createdata *data; in _nfs4_proc_mknod() local
5159 data = nfs4_alloc_createdata(dir, &dentry->d_name, sattr, NF4SOCK); in _nfs4_proc_mknod()
5160 if (data == NULL) in _nfs4_proc_mknod()
5164 data->arg.ftype = NF4FIFO; in _nfs4_proc_mknod()
5166 data->arg.ftype = NF4BLK; in _nfs4_proc_mknod()
5167 data->arg.u.device.specdata1 = MAJOR(rdev); in _nfs4_proc_mknod()
5168 data->arg.u.device.specdata2 = MINOR(rdev); in _nfs4_proc_mknod()
5171 data->arg.ftype = NF4CHR; in _nfs4_proc_mknod()
5172 data->arg.u.device.specdata1 = MAJOR(rdev); in _nfs4_proc_mknod()
5173 data->arg.u.device.specdata2 = MINOR(rdev); in _nfs4_proc_mknod()
5179 data->arg.label = label; in _nfs4_proc_mknod()
5180 status = nfs4_do_create(dir, dentry, data); in _nfs4_proc_mknod()
5182 nfs4_free_createdata(data); in _nfs4_proc_mknod()
5616 static void nfs4_proc_commit_rpc_prepare(struct rpc_task *task, struct nfs_commit_data *data) in nfs4_proc_commit_rpc_prepare() argument
5618 nfs4_setup_sequence(NFS_SERVER(data->inode)->nfs_client, in nfs4_proc_commit_rpc_prepare()
5619 &data->args.seq_args, in nfs4_proc_commit_rpc_prepare()
5620 &data->res.seq_res, in nfs4_proc_commit_rpc_prepare()
5624 static int nfs4_commit_done_cb(struct rpc_task *task, struct nfs_commit_data *data) in nfs4_commit_done_cb() argument
5626 struct inode *inode = data->inode; in nfs4_commit_done_cb()
5628 trace_nfs4_commit(data, task->tk_status); in nfs4_commit_done_cb()
5637 static int nfs4_commit_done(struct rpc_task *task, struct nfs_commit_data *data) in nfs4_commit_done() argument
5639 if (!nfs4_sequence_done(task, &data->res.seq_res)) in nfs4_commit_done()
5641 return data->commit_done_cb(task, data); in nfs4_commit_done()
5644 static void nfs4_proc_commit_setup(struct nfs_commit_data *data, struct rpc_message *msg, in nfs4_proc_commit_setup() argument
5647 struct nfs_server *server = NFS_SERVER(data->inode); in nfs4_proc_commit_setup()
5649 if (data->commit_done_cb == NULL) in nfs4_proc_commit_setup()
5650 data->commit_done_cb = nfs4_commit_done_cb; in nfs4_proc_commit_setup()
5651 data->res.server = server; in nfs4_proc_commit_setup()
5653 nfs4_init_sequence(&data->args.seq_args, &data->res.seq_res, 1, 0); in nfs4_proc_commit_setup()
5654 nfs4_state_protect(data->ds_clp ? data->ds_clp : server->nfs_client, in nfs4_proc_commit_setup()
5703 struct nfs4_renewdata *data = calldata; in nfs4_renew_release() local
5704 struct nfs_client *clp = data->client; in nfs4_renew_release()
5709 kfree(data); in nfs4_renew_release()
5714 struct nfs4_renewdata *data = calldata; in nfs4_renew_done() local
5715 struct nfs_client *clp = data->client; in nfs4_renew_done()
5716 unsigned long timestamp = data->timestamp; in nfs4_renew_done()
5750 struct nfs4_renewdata *data; in nfs4_proc_async_renew() local
5756 data = kmalloc(sizeof(*data), GFP_NOFS); in nfs4_proc_async_renew()
5757 if (data == NULL) { in nfs4_proc_async_renew()
5761 data->client = clp; in nfs4_proc_async_renew()
5762 data->timestamp = jiffies; in nfs4_proc_async_renew()
5764 &nfs4_renew_ops, data); in nfs4_proc_async_renew()
5827 char data[]; member
5862 memcpy(buf, acl->data, acl->len); in nfs4_read_cached_acl()
5880 _copy_from_pages(acl->data, pages, pgbase, acl_len); in nfs4_write_cached_acl()
6248 memcpy(bootverf->data, verf, sizeof(bootverf->data)); in nfs4_init_boot_verifier()
6518 struct nfs4_delegreturndata *data = calldata; in nfs4_delegreturn_done() local
6520 .inode = data->inode, in nfs4_delegreturn_done()
6521 .stateid = &data->stateid, in nfs4_delegreturn_done()
6522 .task_is_privileged = data->args.seq_args.sa_privileged, in nfs4_delegreturn_done()
6525 if (!nfs4_sequence_done(task, &data->res.seq_res)) in nfs4_delegreturn_done()
6528 trace_nfs4_delegreturn_exit(&data->args, &data->res, task->tk_status); in nfs4_delegreturn_done()
6531 if (pnfs_roc_done(task, &data->args.lr_args, &data->res.lr_res, in nfs4_delegreturn_done()
6532 &data->res.lr_ret) == -EAGAIN) in nfs4_delegreturn_done()
6537 renew_lease(data->res.server, data->timestamp); in nfs4_delegreturn_done()
6542 nfs4_free_revoked_stateid(data->res.server, in nfs4_delegreturn_done()
6543 data->args.stateid, in nfs4_delegreturn_done()
6552 if (!nfs4_refresh_delegation_stateid(&data->stateid, data->inode)) in nfs4_delegreturn_done()
6553 nfs4_stateid_seqid_inc(&data->stateid); in nfs4_delegreturn_done()
6554 if (data->args.bitmask) { in nfs4_delegreturn_done()
6555 data->args.bitmask = NULL; in nfs4_delegreturn_done()
6556 data->res.fattr = NULL; in nfs4_delegreturn_done()
6560 if (data->args.bitmask) { in nfs4_delegreturn_done()
6561 data->args.bitmask = NULL; in nfs4_delegreturn_done()
6562 data->res.fattr = NULL; in nfs4_delegreturn_done()
6568 data->res.server, task->tk_status, in nfs4_delegreturn_done()
6573 nfs_delegation_mark_returned(data->inode, data->args.stateid); in nfs4_delegreturn_done()
6574 data->rpc_status = task->tk_status; in nfs4_delegreturn_done()
6583 struct nfs4_delegreturndata *data = calldata; in nfs4_delegreturn_release() local
6584 struct inode *inode = data->inode; in nfs4_delegreturn_release()
6586 if (data->lr.roc) in nfs4_delegreturn_release()
6587 pnfs_roc_release(&data->lr.arg, &data->lr.res, in nfs4_delegreturn_release()
6588 data->res.lr_ret); in nfs4_delegreturn_release()
6590 nfs4_fattr_set_prechange(&data->fattr, in nfs4_delegreturn_release()
6592 nfs_refresh_inode(inode, &data->fattr); in nfs4_delegreturn_release()
6598 static void nfs4_delegreturn_prepare(struct rpc_task *task, void *data) in nfs4_delegreturn_prepare() argument
6603 d_data = (struct nfs4_delegreturndata *)data; in nfs4_delegreturn_prepare()
6630 struct nfs4_delegreturndata *data; in _nfs4_proc_delegreturn() local
6648 data = kzalloc(sizeof(*data), GFP_KERNEL); in _nfs4_proc_delegreturn()
6649 if (data == NULL) in _nfs4_proc_delegreturn()
6656 data->args.fhandle = &data->fh; in _nfs4_proc_delegreturn()
6657 data->args.stateid = &data->stateid; in _nfs4_proc_delegreturn()
6658 nfs4_bitmask_set(data->args.bitmask_store, in _nfs4_proc_delegreturn()
6661 data->args.bitmask = data->args.bitmask_store; in _nfs4_proc_delegreturn()
6662 nfs_copy_fh(&data->fh, NFS_FH(inode)); in _nfs4_proc_delegreturn()
6663 nfs4_stateid_copy(&data->stateid, stateid); in _nfs4_proc_delegreturn()
6664 data->res.fattr = &data->fattr; in _nfs4_proc_delegreturn()
6665 data->res.server = server; in _nfs4_proc_delegreturn()
6666 data->res.lr_ret = -NFS4ERR_NOMATCHING_LAYOUT; in _nfs4_proc_delegreturn()
6667 data->lr.arg.ld_private = &data->lr.ld_private; in _nfs4_proc_delegreturn()
6668 nfs_fattr_init(data->res.fattr); in _nfs4_proc_delegreturn()
6669 data->timestamp = jiffies; in _nfs4_proc_delegreturn()
6670 data->rpc_status = 0; in _nfs4_proc_delegreturn()
6671 data->inode = nfs_igrab_and_active(inode); in _nfs4_proc_delegreturn()
6672 if (data->inode || issync) { in _nfs4_proc_delegreturn()
6673 data->lr.roc = pnfs_roc(inode, &data->lr.arg, &data->lr.res, in _nfs4_proc_delegreturn()
6675 if (data->lr.roc) { in _nfs4_proc_delegreturn()
6676 data->args.lr_args = &data->lr.arg; in _nfs4_proc_delegreturn()
6677 data->res.lr_res = &data->lr.res; in _nfs4_proc_delegreturn()
6681 if (!data->inode) in _nfs4_proc_delegreturn()
6682 nfs4_init_sequence(&data->args.seq_args, &data->res.seq_res, 1, in _nfs4_proc_delegreturn()
6685 nfs4_init_sequence(&data->args.seq_args, &data->res.seq_res, 1, in _nfs4_proc_delegreturn()
6687 task_setup_data.callback_data = data; in _nfs4_proc_delegreturn()
6688 msg.rpc_argp = &data->args; in _nfs4_proc_delegreturn()
6689 msg.rpc_resp = &data->res; in _nfs4_proc_delegreturn()
6698 status = data->rpc_status; in _nfs4_proc_delegreturn()
6857 static void nfs4_locku_release_calldata(void *data) in nfs4_locku_release_calldata() argument
6859 struct nfs4_unlockdata *calldata = data; in nfs4_locku_release_calldata()
6867 static void nfs4_locku_done(struct rpc_task *task, void *data) in nfs4_locku_done() argument
6869 struct nfs4_unlockdata *calldata = data; in nfs4_locku_done()
6912 static void nfs4_locku_prepare(struct rpc_task *task, void *data) in nfs4_locku_prepare() argument
6914 struct nfs4_unlockdata *calldata = data; in nfs4_locku_prepare()
6950 struct nfs4_unlockdata *data; in nfs4_do_unlck() local
6976 data = nfs4_alloc_unlockdata(fl, ctx, lsp, seqid); in nfs4_do_unlck()
6977 if (data == NULL) { in nfs4_do_unlck()
6982 nfs4_init_sequence(&data->arg.seq_args, &data->res.seq_res, 1, 0); in nfs4_do_unlck()
6983 msg.rpc_argp = &data->arg; in nfs4_do_unlck()
6984 msg.rpc_resp = &data->res; in nfs4_do_unlck()
6985 task_setup_data.callback_data = data; in nfs4_do_unlck()
7091 struct nfs4_lockdata *data = calldata; in nfs4_lock_prepare() local
7092 struct nfs4_state *state = data->lsp->ls_state; in nfs4_lock_prepare()
7095 if (nfs_wait_on_sequence(data->arg.lock_seqid, task) != 0) in nfs4_lock_prepare()
7098 if (!test_bit(NFS_LOCK_INITIALIZED, &data->lsp->ls_flags)) { in nfs4_lock_prepare()
7099 if (nfs_wait_on_sequence(data->arg.open_seqid, task) != 0) { in nfs4_lock_prepare()
7102 nfs4_stateid_copy(&data->arg.open_stateid, in nfs4_lock_prepare()
7104 data->arg.new_lock_owner = 1; in nfs4_lock_prepare()
7105 data->res.open_seqid = data->arg.open_seqid; in nfs4_lock_prepare()
7107 data->arg.new_lock_owner = 0; in nfs4_lock_prepare()
7108 nfs4_stateid_copy(&data->arg.lock_stateid, in nfs4_lock_prepare()
7109 &data->lsp->ls_stateid); in nfs4_lock_prepare()
7112 data->rpc_status = -EBADF; in nfs4_lock_prepare()
7116 data->timestamp = jiffies; in nfs4_lock_prepare()
7117 if (nfs4_setup_sequence(data->server->nfs_client, in nfs4_lock_prepare()
7118 &data->arg.seq_args, in nfs4_lock_prepare()
7119 &data->res.seq_res, in nfs4_lock_prepare()
7123 nfs_release_seqid(data->arg.open_seqid); in nfs4_lock_prepare()
7125 nfs_release_seqid(data->arg.lock_seqid); in nfs4_lock_prepare()
7127 nfs4_sequence_done(task, &data->res.seq_res); in nfs4_lock_prepare()
7128 dprintk("%s: done!, ret = %d\n", __func__, data->rpc_status); in nfs4_lock_prepare()
7133 struct nfs4_lockdata *data = calldata; in nfs4_lock_done() local
7134 struct nfs4_lock_state *lsp = data->lsp; in nfs4_lock_done()
7135 struct nfs_server *server = NFS_SERVER(d_inode(data->ctx->dentry)); in nfs4_lock_done()
7139 if (!nfs4_sequence_done(task, &data->res.seq_res)) in nfs4_lock_done()
7142 data->rpc_status = task->tk_status; in nfs4_lock_done()
7145 renew_lease(server, data->timestamp); in nfs4_lock_done()
7146 if (data->arg.new_lock && !data->cancelled) { in nfs4_lock_done()
7147 data->fl.fl_flags &= ~(FL_SLEEP | FL_ACCESS); in nfs4_lock_done()
7148 if (locks_lock_inode_wait(lsp->ls_state->inode, &data->fl) < 0) in nfs4_lock_done()
7151 if (data->arg.new_lock_owner != 0) { in nfs4_lock_done()
7153 nfs4_stateid_copy(&lsp->ls_stateid, &data->res.stateid); in nfs4_lock_done()
7155 } else if (!nfs4_update_lock_stateid(lsp, &data->res.stateid)) in nfs4_lock_done()
7159 if (data->arg.new_lock_owner != 0 && in nfs4_lock_done()
7160 nfs4_refresh_open_old_stateid(&data->arg.open_stateid, in nfs4_lock_done()
7163 if (nfs4_refresh_lock_old_stateid(&data->arg.lock_stateid, lsp)) in nfs4_lock_done()
7169 if (data->arg.new_lock_owner != 0) { in nfs4_lock_done()
7170 if (!nfs4_stateid_match(&data->arg.open_stateid, in nfs4_lock_done()
7175 } else if (!nfs4_stateid_match(&data->arg.lock_stateid, in nfs4_lock_done()
7180 dprintk("%s: done, ret = %d!\n", __func__, data->rpc_status); in nfs4_lock_done()
7183 if (!data->cancelled) in nfs4_lock_done()
7190 struct nfs4_lockdata *data = calldata; in nfs4_lock_release() local
7193 nfs_free_seqid(data->arg.open_seqid); in nfs4_lock_release()
7194 if (data->cancelled && data->rpc_status == 0) { in nfs4_lock_release()
7196 task = nfs4_do_unlck(&data->fl, data->ctx, data->lsp, in nfs4_lock_release()
7197 data->arg.lock_seqid); in nfs4_lock_release()
7202 nfs_free_seqid(data->arg.lock_seqid); in nfs4_lock_release()
7203 nfs4_put_lock_state(data->lsp); in nfs4_lock_release()
7204 put_nfs_open_context(data->ctx); in nfs4_lock_release()
7205 kfree(data); in nfs4_lock_release()
7234 struct nfs4_lockdata *data; in _nfs4_do_setlk() local
7253 data = nfs4_alloc_lockdata(fl, nfs_file_open_context(fl->fl_file), in _nfs4_do_setlk()
7255 if (data == NULL) in _nfs4_do_setlk()
7258 data->arg.block = 1; in _nfs4_do_setlk()
7259 nfs4_init_sequence(&data->arg.seq_args, &data->res.seq_res, 1, in _nfs4_do_setlk()
7261 msg.rpc_argp = &data->arg; in _nfs4_do_setlk()
7262 msg.rpc_resp = &data->res; in _nfs4_do_setlk()
7263 task_setup_data.callback_data = data; in _nfs4_do_setlk()
7266 data->arg.reclaim = NFS_LOCK_RECLAIM; in _nfs4_do_setlk()
7268 data->arg.new_lock = 1; in _nfs4_do_setlk()
7274 ret = data->rpc_status; in _nfs4_do_setlk()
7276 nfs4_handle_setlk_error(data->server, data->lsp, in _nfs4_do_setlk()
7277 data->arg.new_lock_owner, ret); in _nfs4_do_setlk()
7279 data->cancelled = true; in _nfs4_do_setlk()
7280 trace_nfs4_set_lock(fl, state, &data->res.stateid, cmd, ret); in _nfs4_do_setlk()
7622 struct nfs_release_lockowner_data *data = calldata; in nfs4_release_lockowner_prepare() local
7623 struct nfs_server *server = data->server; in nfs4_release_lockowner_prepare()
7624 nfs4_setup_sequence(server->nfs_client, &data->args.seq_args, in nfs4_release_lockowner_prepare()
7625 &data->res.seq_res, task); in nfs4_release_lockowner_prepare()
7626 data->args.lock_owner.clientid = server->nfs_client->cl_clientid; in nfs4_release_lockowner_prepare()
7627 data->timestamp = jiffies; in nfs4_release_lockowner_prepare()
7632 struct nfs_release_lockowner_data *data = calldata; in nfs4_release_lockowner_done() local
7633 struct nfs_server *server = data->server; in nfs4_release_lockowner_done()
7635 nfs40_sequence_done(task, &data->res.seq_res); in nfs4_release_lockowner_done()
7639 renew_lease(server, data->timestamp); in nfs4_release_lockowner_done()
7655 struct nfs_release_lockowner_data *data = calldata; in nfs4_release_lockowner_release() local
7656 nfs4_free_lock_state(data->server, data->lsp); in nfs4_release_lockowner_release()
7669 struct nfs_release_lockowner_data *data; in nfs4_release_lockowner() local
7677 data = kmalloc(sizeof(*data), GFP_KERNEL); in nfs4_release_lockowner()
7678 if (!data) in nfs4_release_lockowner()
7680 data->lsp = lsp; in nfs4_release_lockowner()
7681 data->server = server; in nfs4_release_lockowner()
7682 data->args.lock_owner.clientid = server->nfs_client->cl_clientid; in nfs4_release_lockowner()
7683 data->args.lock_owner.id = lsp->ls_seqid.owner_id; in nfs4_release_lockowner()
7684 data->args.lock_owner.s_dev = server->s_dev; in nfs4_release_lockowner()
7686 msg.rpc_argp = &data->args; in nfs4_release_lockowner()
7687 msg.rpc_resp = &data->res; in nfs4_release_lockowner()
7688 nfs4_init_sequence(&data->args.seq_args, &data->res.seq_res, 0, 0); in nfs4_release_lockowner()
7689 rpc_call_async(server->client, &msg, 0, &nfs4_release_lockowner_ops, data); in nfs4_release_lockowner()
8276 struct nfs4_call_sync_data data = { in _nfs4_proc_secinfo() local
8285 .callback_data = &data, in _nfs4_proc_secinfo()
8448 if (memcmp(res.sessionid.data, in nfs4_proc_bind_one_conn_to_session()
8449 clp->cl_session->sess_id.data, NFS4_MAX_SESSIONID_LEN)) { in nfs4_proc_bind_one_conn_to_session()
8485 struct rpc_bind_conn_calldata data = { in nfs4_proc_bind_conn_to_session() local
8490 nfs4_proc_bind_conn_to_session_callback, &data); in nfs4_proc_bind_conn_to_session()
8627 static void nfs4_exchange_id_release(void *data) in nfs4_exchange_id_release() argument
8630 (struct nfs41_exchange_id_data *)data; in nfs4_exchange_id_release()
8712 memcpy(calldata->args.verifier.data, clp->cl_confirm.data, in nfs4_run_exchange_id()
8713 sizeof(calldata->args.verifier.data)); in nfs4_run_exchange_id()
8798 memcpy(clp->cl_confirm.data, argp->verifier.data, in _nfs4_proc_exchange_id()
8799 sizeof(clp->cl_confirm.data)); in _nfs4_proc_exchange_id()
8851 void *data) in nfs4_test_session_trunk() argument
8853 struct nfs4_add_xprt_data *adata = (struct nfs4_add_xprt_data *)data; in nfs4_test_session_trunk()
8954 struct nfs4_get_lease_time_data *data = in nfs4_get_lease_time_prepare() local
8960 nfs4_setup_sequence(data->clp, in nfs4_get_lease_time_prepare()
8961 &data->args->la_seq_args, in nfs4_get_lease_time_prepare()
8962 &data->res->lr_seq_res, in nfs4_get_lease_time_prepare()
8973 struct nfs4_get_lease_time_data *data = in nfs4_get_lease_time_done() local
8977 if (!nfs4_sequence_done(task, &data->res->lr_seq_res)) in nfs4_get_lease_time_done()
9004 struct nfs4_get_lease_time_data data = { in nfs4_proc_get_lease_time() local
9018 .callback_data = &data, in nfs4_proc_get_lease_time()
9218 ptr = (unsigned *)&session->sess_id.data[0]; in nfs4_proc_create_session()
9267 static void nfs41_sequence_release(void *data) in nfs41_sequence_release() argument
9269 struct nfs4_sequence_data *calldata = data; in nfs41_sequence_release()
9290 static void nfs41_sequence_call_done(struct rpc_task *task, void *data) in nfs41_sequence_call_done() argument
9292 struct nfs4_sequence_data *calldata = data; in nfs41_sequence_call_done()
9314 static void nfs41_sequence_prepare(struct rpc_task *task, void *data) in nfs41_sequence_prepare() argument
9316 struct nfs4_sequence_data *calldata = data; in nfs41_sequence_prepare()
9418 static void nfs4_reclaim_complete_prepare(struct rpc_task *task, void *data) in nfs4_reclaim_complete_prepare() argument
9420 struct nfs4_reclaim_complete_data *calldata = data; in nfs4_reclaim_complete_prepare()
9455 static void nfs4_reclaim_complete_done(struct rpc_task *task, void *data) in nfs4_reclaim_complete_done() argument
9457 struct nfs4_reclaim_complete_data *calldata = data; in nfs4_reclaim_complete_done()
9473 static void nfs4_free_reclaim_complete_data(void *data) in nfs4_free_reclaim_complete_data() argument
9475 struct nfs4_reclaim_complete_data *calldata = data; in nfs4_free_reclaim_complete_data()
9899 struct nfs4_layoutcommit_data *data = calldata; in nfs4_layoutcommit_prepare() local
9900 struct nfs_server *server = NFS_SERVER(data->args.inode); in nfs4_layoutcommit_prepare()
9903 &data->args.seq_args, in nfs4_layoutcommit_prepare()
9904 &data->res.seq_res, in nfs4_layoutcommit_prepare()
9911 struct nfs4_layoutcommit_data *data = calldata; in nfs4_layoutcommit_done() local
9912 struct nfs_server *server = NFS_SERVER(data->args.inode); in nfs4_layoutcommit_done()
9914 if (!nfs41_sequence_done(task, &data->res.seq_res)) in nfs4_layoutcommit_done()
9936 struct nfs4_layoutcommit_data *data = calldata; in nfs4_layoutcommit_release() local
9938 pnfs_cleanup_layoutcommit(data); in nfs4_layoutcommit_release()
9939 nfs_post_op_update_inode_force_wcc(data->args.inode, in nfs4_layoutcommit_release()
9940 data->res.fattr); in nfs4_layoutcommit_release()
9941 put_cred(data->cred); in nfs4_layoutcommit_release()
9942 nfs_iput_and_deactive(data->inode); in nfs4_layoutcommit_release()
9943 kfree(data); in nfs4_layoutcommit_release()
9953 nfs4_proc_layoutcommit(struct nfs4_layoutcommit_data *data, bool sync) in nfs4_proc_layoutcommit() argument
9957 .rpc_argp = &data->args, in nfs4_proc_layoutcommit()
9958 .rpc_resp = &data->res, in nfs4_proc_layoutcommit()
9959 .rpc_cred = data->cred, in nfs4_proc_layoutcommit()
9962 .task = &data->task, in nfs4_proc_layoutcommit()
9963 .rpc_client = NFS_CLIENT(data->args.inode), in nfs4_proc_layoutcommit()
9966 .callback_data = data, in nfs4_proc_layoutcommit()
9974 data->args.lastbytewritten, in nfs4_proc_layoutcommit()
9975 data->args.inode->i_ino); in nfs4_proc_layoutcommit()
9978 data->inode = nfs_igrab_and_active(data->args.inode); in nfs4_proc_layoutcommit()
9979 if (data->inode == NULL) { in nfs4_proc_layoutcommit()
9980 nfs4_layoutcommit_release(data); in nfs4_proc_layoutcommit()
9985 nfs4_init_sequence(&data->args.seq_args, &data->res.seq_res, 1, 0); in nfs4_proc_layoutcommit()
9991 trace_nfs4_layoutcommit(data->args.inode, &data->args.stateid, status); in nfs4_proc_layoutcommit()
10017 struct nfs4_call_sync_data data = { in _nfs41_proc_secinfo_no_name() local
10026 .callback_data = &data, in _nfs41_proc_secinfo_no_name()
10241 struct nfs_free_stateid_data *data = calldata; in nfs41_free_stateid_prepare() local
10242 nfs4_setup_sequence(data->server->nfs_client, in nfs41_free_stateid_prepare()
10243 &data->args.seq_args, in nfs41_free_stateid_prepare()
10244 &data->res.seq_res, in nfs41_free_stateid_prepare()
10250 struct nfs_free_stateid_data *data = calldata; in nfs41_free_stateid_done() local
10252 nfs41_sequence_done(task, &data->res.seq_res); in nfs41_free_stateid_done()
10256 if (nfs4_async_handle_error(task, data->server, NULL, NULL) == -EAGAIN) in nfs41_free_stateid_done()
10297 struct nfs_free_stateid_data *data; in nfs41_free_stateid() local
10304 data = kmalloc(sizeof(*data), GFP_KERNEL); in nfs41_free_stateid()
10305 if (!data) in nfs41_free_stateid()
10307 data->server = server; in nfs41_free_stateid()
10308 nfs4_stateid_copy(&data->args.stateid, stateid); in nfs41_free_stateid()
10310 task_setup.callback_data = data; in nfs41_free_stateid()
10312 msg.rpc_argp = &data->args; in nfs41_free_stateid()
10313 msg.rpc_resp = &data->res; in nfs41_free_stateid()
10314 nfs4_init_sequence(&data->args.seq_args, &data->res.seq_res, 1, privileged); in nfs41_free_stateid()