Lines Matching refs:open
121 struct nfsd4_compound_state *cstate, struct nfsd4_open *open) in nfsd4_check_open_attributes() argument
125 if (open->op_create == NFS4_OPEN_CREATE) { in nfsd4_check_open_attributes()
126 if (open->op_createmode == NFS4_CREATE_UNCHECKED in nfsd4_check_open_attributes()
127 || open->op_createmode == NFS4_CREATE_GUARDED) in nfsd4_check_open_attributes()
129 open->op_bmval, nfsd_attrmask); in nfsd4_check_open_attributes()
130 else if (open->op_createmode == NFS4_CREATE_EXCLUSIVE4_1) in nfsd4_check_open_attributes()
132 open->op_bmval, nfsd41_ex_attrmask); in nfsd4_check_open_attributes()
139 is_create_with_attrs(struct nfsd4_open *open) in is_create_with_attrs() argument
141 return open->op_create == NFS4_OPEN_CREATE in is_create_with_attrs()
142 && (open->op_createmode == NFS4_CREATE_UNCHECKED in is_create_with_attrs()
143 || open->op_createmode == NFS4_CREATE_GUARDED in is_create_with_attrs()
144 || open->op_createmode == NFS4_CREATE_EXCLUSIVE4_1); in is_create_with_attrs()
178 do_open_permission(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_open *open, int … in do_open_permission() argument
182 if (open->op_truncate && in do_open_permission()
183 !(open->op_share_access & NFS4_SHARE_ACCESS_WRITE)) in do_open_permission()
188 if (open->op_share_access & NFS4_SHARE_ACCESS_READ) in do_open_permission()
190 if (open->op_share_access & NFS4_SHARE_ACCESS_WRITE) in do_open_permission()
192 if (open->op_share_deny & NFS4_SHARE_DENY_READ) in do_open_permission()
218 …owner_reply_cache(struct nfsd4_compound_state *cstate, struct nfsd4_open *open, struct svc_fh *res… in nfsd4_set_open_owner_reply_cache() argument
222 fh_copy_shallow(&open->op_openowner->oo_owner.so_replay.rp_openfh, in nfsd4_set_open_owner_reply_cache()
227 do_open_lookup(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_open *open… in do_open_lookup() argument
237 open->op_truncate = false; in do_open_lookup()
239 if (open->op_create) { in do_open_lookup()
259 current->fs->umask = open->op_umask; in do_open_lookup()
260 status = do_nfsd_create(rqstp, current_fh, open->op_fname.data, in do_open_lookup()
261 open->op_fname.len, &open->op_iattr, in do_open_lookup()
262 *resfh, open->op_createmode, in do_open_lookup()
263 (u32 *)open->op_verf.data, in do_open_lookup()
264 &open->op_truncate, &open->op_created); in do_open_lookup()
267 if (!status && open->op_label.len) in do_open_lookup()
268 nfsd4_security_inode_setsecctx(*resfh, &open->op_label, open->op_bmval); in do_open_lookup()
275 if (nfsd_create_is_exclusive(open->op_createmode) && status == 0) in do_open_lookup()
276 open->op_bmval[1] |= (FATTR4_WORD1_TIME_ACCESS | in do_open_lookup()
286 open->op_fname.data, open->op_fname.len, *resfh); in do_open_lookup()
293 if (is_create_with_attrs(open) && open->op_acl != NULL) in do_open_lookup()
294 do_set_nfs4_acl(rqstp, *resfh, open->op_acl, open->op_bmval); in do_open_lookup()
296 nfsd4_set_open_owner_reply_cache(cstate, open, *resfh); in do_open_lookup()
298 if (open->op_created || in do_open_lookup()
299 open->op_claim_type == NFS4_OPEN_CLAIM_DELEGATE_CUR) in do_open_lookup()
301 status = do_open_permission(rqstp, *resfh, open, accmode); in do_open_lookup()
302 set_change_info(&open->op_cinfo, current_fh); in do_open_lookup()
308 …_open_fhandle(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_open *open) in do_open_fhandle() argument
318 memset(&open->op_cinfo, 0, sizeof(struct nfsd4_change_info)); in do_open_fhandle()
320 nfsd4_set_open_owner_reply_cache(cstate, open, current_fh); in do_open_fhandle()
322 open->op_truncate = (open->op_iattr.ia_valid & ATTR_SIZE) && in do_open_fhandle()
323 (open->op_iattr.ia_size == 0); in do_open_fhandle()
333 if (open->op_claim_type == NFS4_OPEN_CLAIM_DELEG_CUR_FH) in do_open_fhandle()
336 status = do_open_permission(rqstp, current_fh, open, accmode); in do_open_fhandle()
355 struct nfsd4_open *open = &u->open; in nfsd4_open() local
363 (int)open->op_fname.len, open->op_fname.data, in nfsd4_open()
364 open->op_openowner); in nfsd4_open()
367 if (open->op_create && open->op_claim_type != NFS4_OPEN_CLAIM_NULL) in nfsd4_open()
370 open->op_created = false; in nfsd4_open()
378 open->op_claim_type != NFS4_OPEN_CLAIM_PREVIOUS) in nfsd4_open()
382 copy_clientid(&open->op_clientid, cstate->session); in nfsd4_open()
385 status = nfsd4_process_open1(cstate, open, nn); in nfsd4_open()
387 struct nfs4_replay *rp = &open->op_openowner->oo_owner.so_replay; in nfsd4_open()
400 if (open->op_xdr_error) { in nfsd4_open()
401 status = open->op_xdr_error; in nfsd4_open()
405 status = nfsd4_check_open_attributes(rqstp, cstate, open); in nfsd4_open()
412 if (opens_in_grace(net) && open->op_claim_type != NFS4_OPEN_CLAIM_PREVIOUS) in nfsd4_open()
415 if (!opens_in_grace(net) && open->op_claim_type == NFS4_OPEN_CLAIM_PREVIOUS) in nfsd4_open()
418 switch (open->op_claim_type) { in nfsd4_open()
421 status = do_open_lookup(rqstp, cstate, open, &resfh); in nfsd4_open()
426 status = nfs4_check_open_reclaim(&open->op_clientid, in nfsd4_open()
430 open->op_openowner->oo_flags |= NFS4_OO_CONFIRMED; in nfsd4_open()
435 status = do_open_fhandle(rqstp, cstate, open); in nfsd4_open()
443 open->op_claim_type); in nfsd4_open()
448 open->op_claim_type); in nfsd4_open()
457 status = nfsd4_process_open2(rqstp, resfh, open); in nfsd4_open()
458 WARN(status && open->op_created, in nfsd4_open()
469 nfsd4_cleanup_open_state(cstate, open); in nfsd4_open()
482 struct nfsd4_open *open = &op->u.open; in nfsd4_open_omfg() local
488 open->op_xdr_error = op->status; in nfsd4_open_omfg()