• Home
  • Raw
  • Download

Lines Matching refs:ls

164 	struct nfs4_layout_stateid *ls = layoutstateid(stid);  in nfsd4_free_layout_stateid()  local
165 struct nfs4_client *clp = ls->ls_stid.sc_client; in nfsd4_free_layout_stateid()
166 struct nfs4_file *fp = ls->ls_stid.sc_file; in nfsd4_free_layout_stateid()
168 trace_layoutstate_free(&ls->ls_stid.sc_stateid); in nfsd4_free_layout_stateid()
171 list_del_init(&ls->ls_perclnt); in nfsd4_free_layout_stateid()
175 list_del_init(&ls->ls_perfile); in nfsd4_free_layout_stateid()
178 if (!nfsd4_layout_ops[ls->ls_layout_type]->disable_recalls) in nfsd4_free_layout_stateid()
179 vfs_setlease(ls->ls_file, F_UNLCK, NULL, (void **)&ls); in nfsd4_free_layout_stateid()
180 fput(ls->ls_file); in nfsd4_free_layout_stateid()
182 if (ls->ls_recalled) in nfsd4_free_layout_stateid()
183 atomic_dec(&ls->ls_stid.sc_file->fi_lo_recalls); in nfsd4_free_layout_stateid()
185 kmem_cache_free(nfs4_layout_stateid_cache, ls); in nfsd4_free_layout_stateid()
189 nfsd4_layout_setlease(struct nfs4_layout_stateid *ls) in nfsd4_layout_setlease() argument
194 if (nfsd4_layout_ops[ls->ls_layout_type]->disable_recalls) in nfsd4_layout_setlease()
205 fl->fl_owner = ls; in nfsd4_layout_setlease()
207 fl->fl_file = ls->ls_file; in nfsd4_layout_setlease()
224 struct nfs4_layout_stateid *ls; in nfsd4_alloc_layout_stateid() local
235 ls = layoutstateid(stp); in nfsd4_alloc_layout_stateid()
236 INIT_LIST_HEAD(&ls->ls_perclnt); in nfsd4_alloc_layout_stateid()
237 INIT_LIST_HEAD(&ls->ls_perfile); in nfsd4_alloc_layout_stateid()
238 spin_lock_init(&ls->ls_lock); in nfsd4_alloc_layout_stateid()
239 INIT_LIST_HEAD(&ls->ls_layouts); in nfsd4_alloc_layout_stateid()
240 mutex_init(&ls->ls_mutex); in nfsd4_alloc_layout_stateid()
241 ls->ls_layout_type = layout_type; in nfsd4_alloc_layout_stateid()
242 nfsd4_init_cb(&ls->ls_recall, clp, &nfsd4_cb_layout_ops, in nfsd4_alloc_layout_stateid()
246 ls->ls_file = get_file(fp->fi_deleg_file); in nfsd4_alloc_layout_stateid()
248 ls->ls_file = find_any_file(fp); in nfsd4_alloc_layout_stateid()
249 BUG_ON(!ls->ls_file); in nfsd4_alloc_layout_stateid()
251 if (nfsd4_layout_setlease(ls)) { in nfsd4_alloc_layout_stateid()
252 fput(ls->ls_file); in nfsd4_alloc_layout_stateid()
254 kmem_cache_free(nfs4_layout_stateid_cache, ls); in nfsd4_alloc_layout_stateid()
260 list_add(&ls->ls_perclnt, &clp->cl_lo_states); in nfsd4_alloc_layout_stateid()
264 list_add(&ls->ls_perfile, &fp->fi_lo_states); in nfsd4_alloc_layout_stateid()
267 trace_layoutstate_alloc(&ls->ls_stid.sc_stateid); in nfsd4_alloc_layout_stateid()
268 return ls; in nfsd4_alloc_layout_stateid()
276 struct nfs4_layout_stateid *ls; in nfsd4_preprocess_layout_stateid() local
296 ls = nfsd4_alloc_layout_stateid(cstate, stid, layout_type); in nfsd4_preprocess_layout_stateid()
300 if (!ls) in nfsd4_preprocess_layout_stateid()
302 mutex_lock(&ls->ls_mutex); in nfsd4_preprocess_layout_stateid()
304 ls = container_of(stid, struct nfs4_layout_stateid, ls_stid); in nfsd4_preprocess_layout_stateid()
307 mutex_lock(&ls->ls_mutex); in nfsd4_preprocess_layout_stateid()
310 if (layout_type != ls->ls_layout_type) in nfsd4_preprocess_layout_stateid()
314 *lsp = ls; in nfsd4_preprocess_layout_stateid()
318 mutex_unlock(&ls->ls_mutex); in nfsd4_preprocess_layout_stateid()
326 nfsd4_recall_file_layout(struct nfs4_layout_stateid *ls) in nfsd4_recall_file_layout() argument
328 spin_lock(&ls->ls_lock); in nfsd4_recall_file_layout()
329 if (ls->ls_recalled) in nfsd4_recall_file_layout()
332 ls->ls_recalled = true; in nfsd4_recall_file_layout()
333 atomic_inc(&ls->ls_stid.sc_file->fi_lo_recalls); in nfsd4_recall_file_layout()
334 if (list_empty(&ls->ls_layouts)) in nfsd4_recall_file_layout()
337 trace_layout_recall(&ls->ls_stid.sc_stateid); in nfsd4_recall_file_layout()
339 atomic_inc(&ls->ls_stid.sc_count); in nfsd4_recall_file_layout()
340 nfsd4_run_cb(&ls->ls_recall); in nfsd4_recall_file_layout()
343 spin_unlock(&ls->ls_lock); in nfsd4_recall_file_layout()
390 nfsd4_recall_conflict(struct nfs4_layout_stateid *ls) in nfsd4_recall_conflict() argument
392 struct nfs4_file *fp = ls->ls_stid.sc_file; in nfsd4_recall_conflict()
399 if (l != ls) { in nfsd4_recall_conflict()
409 nfsd4_insert_layout(struct nfsd4_layoutget *lgp, struct nfs4_layout_stateid *ls) in nfsd4_insert_layout() argument
412 struct nfs4_file *fp = ls->ls_stid.sc_file; in nfsd4_insert_layout()
417 nfserr = nfsd4_recall_conflict(ls); in nfsd4_insert_layout()
420 spin_lock(&ls->ls_lock); in nfsd4_insert_layout()
421 list_for_each_entry(lp, &ls->ls_layouts, lo_perstate) { in nfsd4_insert_layout()
425 spin_unlock(&ls->ls_lock); in nfsd4_insert_layout()
432 new->lo_state = ls; in nfsd4_insert_layout()
435 nfserr = nfsd4_recall_conflict(ls); in nfsd4_insert_layout()
438 spin_lock(&ls->ls_lock); in nfsd4_insert_layout()
439 list_for_each_entry(lp, &ls->ls_layouts, lo_perstate) { in nfsd4_insert_layout()
444 atomic_inc(&ls->ls_stid.sc_count); in nfsd4_insert_layout()
445 list_add_tail(&new->lo_perstate, &ls->ls_layouts); in nfsd4_insert_layout()
448 nfs4_inc_and_copy_stateid(&lgp->lg_sid, &ls->ls_stid); in nfsd4_insert_layout()
449 spin_unlock(&ls->ls_lock); in nfsd4_insert_layout()
500 struct nfs4_layout_stateid *ls; in nfsd4_return_file_layouts() local
508 &ls); in nfsd4_return_file_layouts()
514 spin_lock(&ls->ls_lock); in nfsd4_return_file_layouts()
515 list_for_each_entry_safe(lp, n, &ls->ls_layouts, lo_perstate) { in nfsd4_return_file_layouts()
521 if (!list_empty(&ls->ls_layouts)) { in nfsd4_return_file_layouts()
523 nfs4_inc_and_copy_stateid(&lrp->lr_sid, &ls->ls_stid); in nfsd4_return_file_layouts()
526 trace_layoutstate_unhash(&ls->ls_stid.sc_stateid); in nfsd4_return_file_layouts()
527 nfs4_unhash_stid(&ls->ls_stid); in nfsd4_return_file_layouts()
530 spin_unlock(&ls->ls_lock); in nfsd4_return_file_layouts()
532 mutex_unlock(&ls->ls_mutex); in nfsd4_return_file_layouts()
533 nfs4_put_stid(&ls->ls_stid); in nfsd4_return_file_layouts()
543 struct nfs4_layout_stateid *ls, *n; in nfsd4_return_client_layouts() local
551 list_for_each_entry_safe(ls, n, &clp->cl_lo_states, ls_perclnt) { in nfsd4_return_client_layouts()
552 if (ls->ls_layout_type != lrp->lr_layout_type) in nfsd4_return_client_layouts()
556 !fh_fsid_match(&ls->ls_stid.sc_file->fi_fhandle, in nfsd4_return_client_layouts()
560 spin_lock(&ls->ls_lock); in nfsd4_return_client_layouts()
561 list_for_each_entry_safe(lp, t, &ls->ls_layouts, lo_perstate) { in nfsd4_return_client_layouts()
566 spin_unlock(&ls->ls_lock); in nfsd4_return_client_layouts()
575 nfsd4_return_all_layouts(struct nfs4_layout_stateid *ls, in nfsd4_return_all_layouts() argument
578 spin_lock(&ls->ls_lock); in nfsd4_return_all_layouts()
579 list_splice_init(&ls->ls_layouts, reaplist); in nfsd4_return_all_layouts()
580 spin_unlock(&ls->ls_lock); in nfsd4_return_all_layouts()
586 struct nfs4_layout_stateid *ls, *n; in nfsd4_return_all_client_layouts() local
590 list_for_each_entry_safe(ls, n, &clp->cl_lo_states, ls_perclnt) in nfsd4_return_all_client_layouts()
591 nfsd4_return_all_layouts(ls, &reaplist); in nfsd4_return_all_client_layouts()
600 struct nfs4_layout_stateid *ls, *n; in nfsd4_return_all_file_layouts() local
604 list_for_each_entry_safe(ls, n, &fp->fi_lo_states, ls_perfile) { in nfsd4_return_all_file_layouts()
605 if (ls->ls_stid.sc_client == clp) in nfsd4_return_all_file_layouts()
606 nfsd4_return_all_layouts(ls, &reaplist); in nfsd4_return_all_file_layouts()
614 nfsd4_cb_layout_fail(struct nfs4_layout_stateid *ls) in nfsd4_cb_layout_fail() argument
616 struct nfs4_client *clp = ls->ls_stid.sc_client; in nfsd4_cb_layout_fail()
636 argv[2] = ls->ls_file->f_path.mnt->mnt_sb->s_id; in nfsd4_cb_layout_fail()
650 struct nfs4_layout_stateid *ls = in nfsd4_cb_layout_prepare() local
653 mutex_lock(&ls->ls_mutex); in nfsd4_cb_layout_prepare()
654 nfs4_inc_and_copy_stateid(&ls->ls_recall_sid, &ls->ls_stid); in nfsd4_cb_layout_prepare()
655 mutex_unlock(&ls->ls_mutex); in nfsd4_cb_layout_prepare()
661 struct nfs4_layout_stateid *ls = in nfsd4_cb_layout_done() local
677 if (list_empty(&ls->ls_layouts)) in nfsd4_cb_layout_done()
682 nn = net_generic(ls->ls_stid.sc_client->net, nfsd_net_id); in nfsd4_cb_layout_done()
697 trace_layout_recall_fail(&ls->ls_stid.sc_stateid); in nfsd4_cb_layout_done()
699 ops = nfsd4_layout_ops[ls->ls_layout_type]; in nfsd4_cb_layout_done()
701 ops->fence_client(ls); in nfsd4_cb_layout_done()
703 nfsd4_cb_layout_fail(ls); in nfsd4_cb_layout_done()
706 trace_layout_recall_done(&ls->ls_stid.sc_stateid); in nfsd4_cb_layout_done()
715 struct nfs4_layout_stateid *ls = in nfsd4_cb_layout_release() local
719 trace_layout_recall_release(&ls->ls_stid.sc_stateid); in nfsd4_cb_layout_release()
721 nfsd4_return_all_layouts(ls, &reaplist); in nfsd4_cb_layout_release()
723 nfs4_put_stid(&ls->ls_stid); in nfsd4_cb_layout_release()