Lines Matching defs:opendata
1885 static struct nfs4_state *nfs4_try_open_cached(struct nfs4_opendata *opendata)
1887 struct nfs4_state *state = opendata->state;
1889 int open_mode = opendata->o_arg.open_flags;
1890 fmode_t fmode = opendata->o_arg.fmode;
1891 enum open_claim_type4 claim = opendata->o_arg.claim;
1912 nfs_release_seqid(opendata->o_arg.seqid);
1913 if (!opendata->is_recover) {
2124 struct nfs4_opendata *opendata;
2126 opendata = nfs4_opendata_alloc(ctx->dentry, state->owner, 0, 0,
2128 if (opendata == NULL)
2130 opendata->state = state;
2132 return opendata;
2135 static int nfs4_open_recover_helper(struct nfs4_opendata *opendata,
2139 struct nfs_server *server = NFS_SB(opendata->dentry->d_sb);
2140 int openflags = opendata->o_arg.open_flags;
2143 if (!nfs4_mode_match_open_stateid(opendata->state, fmode))
2145 opendata->o_arg.fmode = fmode;
2146 opendata->o_arg.share_access =
2148 memset(&opendata->o_res, 0, sizeof(opendata->o_res));
2149 memset(&opendata->c_res, 0, sizeof(opendata->c_res));
2150 nfs4_init_opendata_res(opendata);
2151 ret = _nfs4_recover_proc_open(opendata);
2154 newstate = nfs4_opendata_to_nfs4_state(opendata);
2157 if (newstate != opendata->state)
2163 static int nfs4_open_recover(struct nfs4_opendata *opendata, struct nfs4_state *state)
2169 ret = nfs4_open_recover_helper(opendata, FMODE_READ|FMODE_WRITE);
2172 ret = nfs4_open_recover_helper(opendata, FMODE_WRITE);
2175 ret = nfs4_open_recover_helper(opendata, FMODE_READ);
2199 struct nfs4_opendata *opendata;
2203 opendata = nfs4_open_recoverdata_alloc(ctx, state,
2205 if (IS_ERR(opendata))
2206 return PTR_ERR(opendata);
2212 opendata->o_arg.u.delegation_type = delegation_type;
2213 status = nfs4_open_recover(opendata, state);
2214 nfs4_opendata_put(opendata);
2309 struct nfs4_opendata *opendata;
2312 opendata = nfs4_open_recoverdata_alloc(ctx, state,
2314 if (IS_ERR(opendata))
2315 return PTR_ERR(opendata);
2316 nfs4_stateid_copy(&opendata->o_arg.u.delegation, stateid);
2318 err = nfs4_open_recover_helper(opendata, FMODE_READ|FMODE_WRITE);
2323 err = nfs4_open_recover_helper(opendata, FMODE_WRITE);
2328 err = nfs4_open_recover_helper(opendata, FMODE_READ);
2334 nfs4_opendata_put(opendata);
2634 struct nfs4_opendata *opendata,
2642 if (opendata->o_res.access_supported == 0)
2652 } else if ((fmode & FMODE_READ) && !opendata->file_created)
2655 nfs_access_set_mask(&cache, opendata->o_res.access_result);
2725 struct nfs4_opendata *opendata;
2728 opendata = nfs4_open_recoverdata_alloc(ctx, state, NFS4_OPEN_CLAIM_FH);
2729 if (IS_ERR(opendata))
2730 return PTR_ERR(opendata);
2736 opendata->o_arg.open_flags = O_DIRECT;
2737 ret = nfs4_open_recover(opendata, state);
2740 nfs4_opendata_put(opendata);
3001 static unsigned nfs4_exclusive_attrset(struct nfs4_opendata *opendata,
3004 const __u32 *bitmask = opendata->o_arg.server->exclcreat_bitmask;
3010 attrset[i] = opendata->o_res.attrset[i];
3011 if (opendata->o_arg.createmode == NFS4_CREATE_EXCLUSIVE4_1)
3015 ret = (opendata->o_arg.createmode == NFS4_CREATE_EXCLUSIVE) ?
3037 static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata,
3040 struct nfs4_state_owner *sp = opendata->owner;
3045 struct inode *dir = d_inode(opendata->dir);
3053 ret = _nfs4_proc_open(opendata, ctx);
3057 state = _nfs4_opendata_to_nfs4_state(opendata);
3064 if (opendata->o_res.rflags & NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK)
3066 if (opendata->o_res.rflags & NFS4_OPEN_RESULT_PRESERVE_UNLINKED)
3069 dentry = opendata->dentry;
3083 switch(opendata->o_arg.claim) {
3089 if (!opendata->rpc_done)
3091 if (opendata->o_res.delegation_type != 0)
3097 pnfs_parse_lgopen(state->inode, opendata->lgp, ctx);
3099 ret = nfs4_opendata_access(sp->so_cred, opendata, state, acc_mode);
3110 if (!opendata->cancelled) {
3111 if (opendata->lgp) {
3112 nfs4_lgopen_release(opendata->lgp);
3113 opendata->lgp = NULL;
3115 nfs4_sequence_free_slot(&opendata->o_res.seq_res);
3132 struct nfs4_opendata *opendata;
3157 opendata = nfs4_opendata_alloc(dentry, sp, fmode, flags,
3159 if (opendata == NULL)
3163 if (!opendata->f_attr.mdsthreshold) {
3164 opendata->f_attr.mdsthreshold = pnfs_mdsthreshold_alloc();
3165 if (!opendata->f_attr.mdsthreshold)
3168 opendata->o_arg.open_bitmap = &nfs4_pnfs_open_bitmap[0];
3171 opendata->state = nfs4_get_open_state(d_inode(dentry), sp);
3173 status = _nfs4_open_and_get_state(opendata, ctx);
3178 if ((opendata->o_arg.open_flags & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL) &&
3179 (opendata->o_arg.createmode != NFS4_CREATE_GUARDED)) {
3180 unsigned attrs = nfs4_exclusive_attrset(opendata, sattr, &label);
3189 nfs_fattr_init(opendata->o_res.f_attr);
3191 opendata->o_res.f_attr, sattr,
3195 opendata->o_res.f_attr);
3196 nfs_setsecurity(state->inode, opendata->o_res.f_attr);
3201 if (opened && opendata->file_created)
3204 if (pnfs_use_threshold(ctx_th, opendata->f_attr.mdsthreshold, server)) {
3205 *ctx_th = opendata->f_attr.mdsthreshold;
3206 opendata->f_attr.mdsthreshold = NULL;
3209 nfs4_opendata_put(opendata);
3213 nfs4_opendata_put(opendata);