Lines Matching refs:opendata
1883 static struct nfs4_state *nfs4_try_open_cached(struct nfs4_opendata *opendata) in nfs4_try_open_cached() argument
1885 struct nfs4_state *state = opendata->state; in nfs4_try_open_cached()
1887 int open_mode = opendata->o_arg.open_flags; in nfs4_try_open_cached()
1888 fmode_t fmode = opendata->o_arg.fmode; in nfs4_try_open_cached()
1889 enum open_claim_type4 claim = opendata->o_arg.claim; in nfs4_try_open_cached()
1910 nfs_release_seqid(opendata->o_arg.seqid); in nfs4_try_open_cached()
1911 if (!opendata->is_recover) { in nfs4_try_open_cached()
2122 struct nfs4_opendata *opendata; in nfs4_open_recoverdata_alloc() local
2124 opendata = nfs4_opendata_alloc(ctx->dentry, state->owner, 0, 0, in nfs4_open_recoverdata_alloc()
2126 if (opendata == NULL) in nfs4_open_recoverdata_alloc()
2128 opendata->state = state; in nfs4_open_recoverdata_alloc()
2130 return opendata; in nfs4_open_recoverdata_alloc()
2133 static int nfs4_open_recover_helper(struct nfs4_opendata *opendata, in nfs4_open_recover_helper() argument
2137 struct nfs_server *server = NFS_SB(opendata->dentry->d_sb); in nfs4_open_recover_helper()
2138 int openflags = opendata->o_arg.open_flags; in nfs4_open_recover_helper()
2141 if (!nfs4_mode_match_open_stateid(opendata->state, fmode)) in nfs4_open_recover_helper()
2143 opendata->o_arg.fmode = fmode; in nfs4_open_recover_helper()
2144 opendata->o_arg.share_access = in nfs4_open_recover_helper()
2146 memset(&opendata->o_res, 0, sizeof(opendata->o_res)); in nfs4_open_recover_helper()
2147 memset(&opendata->c_res, 0, sizeof(opendata->c_res)); in nfs4_open_recover_helper()
2148 nfs4_init_opendata_res(opendata); in nfs4_open_recover_helper()
2149 ret = _nfs4_recover_proc_open(opendata); in nfs4_open_recover_helper()
2152 newstate = nfs4_opendata_to_nfs4_state(opendata); in nfs4_open_recover_helper()
2155 if (newstate != opendata->state) in nfs4_open_recover_helper()
2161 static int nfs4_open_recover(struct nfs4_opendata *opendata, struct nfs4_state *state) in nfs4_open_recover() argument
2167 ret = nfs4_open_recover_helper(opendata, FMODE_READ|FMODE_WRITE); in nfs4_open_recover()
2170 ret = nfs4_open_recover_helper(opendata, FMODE_WRITE); in nfs4_open_recover()
2173 ret = nfs4_open_recover_helper(opendata, FMODE_READ); in nfs4_open_recover()
2197 struct nfs4_opendata *opendata; in _nfs4_do_open_reclaim() local
2201 opendata = nfs4_open_recoverdata_alloc(ctx, state, in _nfs4_do_open_reclaim()
2203 if (IS_ERR(opendata)) in _nfs4_do_open_reclaim()
2204 return PTR_ERR(opendata); in _nfs4_do_open_reclaim()
2210 opendata->o_arg.u.delegation_type = delegation_type; in _nfs4_do_open_reclaim()
2211 status = nfs4_open_recover(opendata, state); in _nfs4_do_open_reclaim()
2212 nfs4_opendata_put(opendata); in _nfs4_do_open_reclaim()
2307 struct nfs4_opendata *opendata; in nfs4_open_delegation_recall() local
2310 opendata = nfs4_open_recoverdata_alloc(ctx, state, in nfs4_open_delegation_recall()
2312 if (IS_ERR(opendata)) in nfs4_open_delegation_recall()
2313 return PTR_ERR(opendata); in nfs4_open_delegation_recall()
2314 nfs4_stateid_copy(&opendata->o_arg.u.delegation, stateid); in nfs4_open_delegation_recall()
2316 err = nfs4_open_recover_helper(opendata, FMODE_READ|FMODE_WRITE); in nfs4_open_delegation_recall()
2321 err = nfs4_open_recover_helper(opendata, FMODE_WRITE); in nfs4_open_delegation_recall()
2326 err = nfs4_open_recover_helper(opendata, FMODE_READ); in nfs4_open_delegation_recall()
2332 nfs4_opendata_put(opendata); in nfs4_open_delegation_recall()
2632 struct nfs4_opendata *opendata, in nfs4_opendata_access() argument
2640 if (opendata->o_res.access_supported == 0) in nfs4_opendata_access()
2650 } else if ((fmode & FMODE_READ) && !opendata->file_created) in nfs4_opendata_access()
2653 nfs_access_set_mask(&cache, opendata->o_res.access_result); in nfs4_opendata_access()
2723 struct nfs4_opendata *opendata; in _nfs4_open_expired() local
2726 opendata = nfs4_open_recoverdata_alloc(ctx, state, NFS4_OPEN_CLAIM_FH); in _nfs4_open_expired()
2727 if (IS_ERR(opendata)) in _nfs4_open_expired()
2728 return PTR_ERR(opendata); in _nfs4_open_expired()
2734 opendata->o_arg.open_flags = O_DIRECT; in _nfs4_open_expired()
2735 ret = nfs4_open_recover(opendata, state); in _nfs4_open_expired()
2738 nfs4_opendata_put(opendata); in _nfs4_open_expired()
2999 static unsigned nfs4_exclusive_attrset(struct nfs4_opendata *opendata, in nfs4_exclusive_attrset() argument
3002 const __u32 *bitmask = opendata->o_arg.server->exclcreat_bitmask; in nfs4_exclusive_attrset()
3008 attrset[i] = opendata->o_res.attrset[i]; in nfs4_exclusive_attrset()
3009 if (opendata->o_arg.createmode == NFS4_CREATE_EXCLUSIVE4_1) in nfs4_exclusive_attrset()
3013 ret = (opendata->o_arg.createmode == NFS4_CREATE_EXCLUSIVE) ? in nfs4_exclusive_attrset()
3035 static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata, in _nfs4_open_and_get_state() argument
3038 struct nfs4_state_owner *sp = opendata->owner; in _nfs4_open_and_get_state()
3043 struct inode *dir = d_inode(opendata->dir); in _nfs4_open_and_get_state()
3051 ret = _nfs4_proc_open(opendata, ctx); in _nfs4_open_and_get_state()
3055 state = _nfs4_opendata_to_nfs4_state(opendata); in _nfs4_open_and_get_state()
3062 if (opendata->o_res.rflags & NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK) in _nfs4_open_and_get_state()
3064 if (opendata->o_res.rflags & NFS4_OPEN_RESULT_PRESERVE_UNLINKED) in _nfs4_open_and_get_state()
3067 dentry = opendata->dentry; in _nfs4_open_and_get_state()
3081 switch(opendata->o_arg.claim) { in _nfs4_open_and_get_state()
3087 if (!opendata->rpc_done) in _nfs4_open_and_get_state()
3089 if (opendata->o_res.delegation_type != 0) in _nfs4_open_and_get_state()
3095 pnfs_parse_lgopen(state->inode, opendata->lgp, ctx); in _nfs4_open_and_get_state()
3097 ret = nfs4_opendata_access(sp->so_cred, opendata, state, acc_mode); in _nfs4_open_and_get_state()
3108 if (!opendata->cancelled) { in _nfs4_open_and_get_state()
3109 if (opendata->lgp) { in _nfs4_open_and_get_state()
3110 nfs4_lgopen_release(opendata->lgp); in _nfs4_open_and_get_state()
3111 opendata->lgp = NULL; in _nfs4_open_and_get_state()
3113 nfs4_sequence_free_slot(&opendata->o_res.seq_res); in _nfs4_open_and_get_state()
3130 struct nfs4_opendata *opendata; in _nfs4_do_open() local
3155 opendata = nfs4_opendata_alloc(dentry, sp, fmode, flags, in _nfs4_do_open()
3157 if (opendata == NULL) in _nfs4_do_open()
3161 if (!opendata->f_attr.mdsthreshold) { in _nfs4_do_open()
3162 opendata->f_attr.mdsthreshold = pnfs_mdsthreshold_alloc(); in _nfs4_do_open()
3163 if (!opendata->f_attr.mdsthreshold) in _nfs4_do_open()
3166 opendata->o_arg.open_bitmap = &nfs4_pnfs_open_bitmap[0]; in _nfs4_do_open()
3169 opendata->state = nfs4_get_open_state(d_inode(dentry), sp); in _nfs4_do_open()
3171 status = _nfs4_open_and_get_state(opendata, ctx); in _nfs4_do_open()
3176 if ((opendata->o_arg.open_flags & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL) && in _nfs4_do_open()
3177 (opendata->o_arg.createmode != NFS4_CREATE_GUARDED)) { in _nfs4_do_open()
3178 unsigned attrs = nfs4_exclusive_attrset(opendata, sattr, &label); in _nfs4_do_open()
3187 nfs_fattr_init(opendata->o_res.f_attr); in _nfs4_do_open()
3189 opendata->o_res.f_attr, sattr, in _nfs4_do_open()
3193 opendata->o_res.f_attr); in _nfs4_do_open()
3194 nfs_setsecurity(state->inode, opendata->o_res.f_attr); in _nfs4_do_open()
3199 if (opened && opendata->file_created) in _nfs4_do_open()
3202 if (pnfs_use_threshold(ctx_th, opendata->f_attr.mdsthreshold, server)) { in _nfs4_do_open()
3203 *ctx_th = opendata->f_attr.mdsthreshold; in _nfs4_do_open()
3204 opendata->f_attr.mdsthreshold = NULL; in _nfs4_do_open()
3207 nfs4_opendata_put(opendata); in _nfs4_do_open()
3211 nfs4_opendata_put(opendata); in _nfs4_do_open()