Lines Matching refs:sp

174 	struct nfs4_state_owner *sp;  in nfs4_get_renew_cred_server_locked()  local
180 sp = rb_entry(pos, struct nfs4_state_owner, so_server_node); in nfs4_get_renew_cred_server_locked()
181 if (list_empty(&sp->so_states)) in nfs4_get_renew_cred_server_locked()
183 cred = get_rpccred(sp->so_cred); in nfs4_get_renew_cred_server_locked()
391 struct nfs4_state_owner *sp; in nfs4_find_state_owner_locked() local
395 sp = rb_entry(parent, struct nfs4_state_owner, so_server_node); in nfs4_find_state_owner_locked()
397 if (cred < sp->so_cred) in nfs4_find_state_owner_locked()
399 else if (cred > sp->so_cred) in nfs4_find_state_owner_locked()
402 if (!list_empty(&sp->so_lru)) in nfs4_find_state_owner_locked()
403 list_del_init(&sp->so_lru); in nfs4_find_state_owner_locked()
404 atomic_inc(&sp->so_count); in nfs4_find_state_owner_locked()
405 return sp; in nfs4_find_state_owner_locked()
417 struct nfs4_state_owner *sp; in nfs4_insert_state_owner_locked() local
422 sp = rb_entry(parent, struct nfs4_state_owner, so_server_node); in nfs4_insert_state_owner_locked()
424 if (new->so_cred < sp->so_cred) in nfs4_insert_state_owner_locked()
426 else if (new->so_cred > sp->so_cred) in nfs4_insert_state_owner_locked()
429 if (!list_empty(&sp->so_lru)) in nfs4_insert_state_owner_locked()
430 list_del_init(&sp->so_lru); in nfs4_insert_state_owner_locked()
431 atomic_inc(&sp->so_count); in nfs4_insert_state_owner_locked()
432 return sp; in nfs4_insert_state_owner_locked()
444 nfs4_remove_state_owner_locked(struct nfs4_state_owner *sp) in nfs4_remove_state_owner_locked() argument
446 struct nfs_server *server = sp->so_server; in nfs4_remove_state_owner_locked()
448 if (!RB_EMPTY_NODE(&sp->so_server_node)) in nfs4_remove_state_owner_locked()
449 rb_erase(&sp->so_server_node, &server->state_owners); in nfs4_remove_state_owner_locked()
450 ida_remove(&server->openowner_id, sp->so_seqid.owner_id); in nfs4_remove_state_owner_locked()
480 struct nfs4_state_owner *sp; in nfs4_alloc_state_owner() local
482 sp = kzalloc(sizeof(*sp), gfp_flags); in nfs4_alloc_state_owner()
483 if (!sp) in nfs4_alloc_state_owner()
485 sp->so_server = server; in nfs4_alloc_state_owner()
486 sp->so_cred = get_rpccred(cred); in nfs4_alloc_state_owner()
487 spin_lock_init(&sp->so_lock); in nfs4_alloc_state_owner()
488 INIT_LIST_HEAD(&sp->so_states); in nfs4_alloc_state_owner()
489 nfs4_init_seqid_counter(&sp->so_seqid); in nfs4_alloc_state_owner()
490 atomic_set(&sp->so_count, 1); in nfs4_alloc_state_owner()
491 INIT_LIST_HEAD(&sp->so_lru); in nfs4_alloc_state_owner()
492 seqcount_init(&sp->so_reclaim_seqcount); in nfs4_alloc_state_owner()
493 mutex_init(&sp->so_delegreturn_mutex); in nfs4_alloc_state_owner()
494 return sp; in nfs4_alloc_state_owner()
498 nfs4_drop_state_owner(struct nfs4_state_owner *sp) in nfs4_drop_state_owner() argument
500 struct rb_node *rb_node = &sp->so_server_node; in nfs4_drop_state_owner()
503 struct nfs_server *server = sp->so_server; in nfs4_drop_state_owner()
515 static void nfs4_free_state_owner(struct nfs4_state_owner *sp) in nfs4_free_state_owner() argument
517 nfs4_destroy_seqid_counter(&sp->so_seqid); in nfs4_free_state_owner()
518 put_rpccred(sp->so_cred); in nfs4_free_state_owner()
519 kfree(sp); in nfs4_free_state_owner()
525 struct nfs4_state_owner *sp, *tmp; in nfs4_gc_state_owners() local
532 list_for_each_entry_safe(sp, tmp, &server->state_owners_lru, so_lru) { in nfs4_gc_state_owners()
534 if (time_in_range(sp->so_expires, time_min, time_max)) in nfs4_gc_state_owners()
536 list_move(&sp->so_lru, &doomed); in nfs4_gc_state_owners()
537 nfs4_remove_state_owner_locked(sp); in nfs4_gc_state_owners()
541 list_for_each_entry_safe(sp, tmp, &doomed, so_lru) { in nfs4_gc_state_owners()
542 list_del(&sp->so_lru); in nfs4_gc_state_owners()
543 nfs4_free_state_owner(sp); in nfs4_gc_state_owners()
559 struct nfs4_state_owner *sp, *new; in nfs4_get_state_owner() local
562 sp = nfs4_find_state_owner_locked(server, cred); in nfs4_get_state_owner()
564 if (sp != NULL) in nfs4_get_state_owner()
573 sp = nfs4_insert_state_owner_locked(new); in nfs4_get_state_owner()
575 } while (sp == ERR_PTR(-EAGAIN)); in nfs4_get_state_owner()
576 if (sp != new) in nfs4_get_state_owner()
580 return sp; in nfs4_get_state_owner()
595 void nfs4_put_state_owner(struct nfs4_state_owner *sp) in nfs4_put_state_owner() argument
597 struct nfs_server *server = sp->so_server; in nfs4_put_state_owner()
600 if (!atomic_dec_and_lock(&sp->so_count, &clp->cl_lock)) in nfs4_put_state_owner()
603 sp->so_expires = jiffies; in nfs4_put_state_owner()
604 list_add_tail(&sp->so_lru, &server->state_owners_lru); in nfs4_put_state_owner()
618 struct nfs4_state_owner *sp, *tmp; in nfs4_purge_state_owners() local
622 list_for_each_entry_safe(sp, tmp, &server->state_owners_lru, so_lru) { in nfs4_purge_state_owners()
623 list_move(&sp->so_lru, &doomed); in nfs4_purge_state_owners()
624 nfs4_remove_state_owner_locked(sp); in nfs4_purge_state_owners()
628 list_for_each_entry_safe(sp, tmp, &doomed, so_lru) { in nfs4_purge_state_owners()
629 list_del(&sp->so_lru); in nfs4_purge_state_owners()
630 nfs4_free_state_owner(sp); in nfs4_purge_state_owners()
1088 struct nfs4_state_owner *sp; in nfs_increment_open_seqid() local
1093 sp = container_of(seqid->sequence, struct nfs4_state_owner, so_seqid); in nfs_increment_open_seqid()
1095 nfs4_drop_state_owner(sp); in nfs_increment_open_seqid()
1096 if (!nfs4_has_session(sp->so_server->nfs_client)) in nfs_increment_open_seqid()
1444 static int nfs4_reclaim_open_state(struct nfs4_state_owner *sp, const struct nfs4_state_recovery_op… in nfs4_reclaim_open_state() argument
1458 spin_lock(&sp->so_lock); in nfs4_reclaim_open_state()
1459 raw_write_seqcount_begin(&sp->so_reclaim_seqcount); in nfs4_reclaim_open_state()
1461 list_for_each_entry(state, &sp->so_states, open_states) { in nfs4_reclaim_open_state()
1469 spin_unlock(&sp->so_lock); in nfs4_reclaim_open_state()
1470 status = ops->recover_open(sp, state); in nfs4_reclaim_open_state()
1487 spin_lock(&sp->so_lock); in nfs4_reclaim_open_state()
1508 nfs4_state_mark_reclaim_nograce(sp->so_server->nfs_client, state); in nfs4_reclaim_open_state()
1512 nfs4_state_mark_reclaim_nograce(sp->so_server->nfs_client, state); in nfs4_reclaim_open_state()
1521 spin_lock(&sp->so_lock); in nfs4_reclaim_open_state()
1524 raw_write_seqcount_end(&sp->so_reclaim_seqcount); in nfs4_reclaim_open_state()
1525 spin_unlock(&sp->so_lock); in nfs4_reclaim_open_state()
1529 spin_lock(&sp->so_lock); in nfs4_reclaim_open_state()
1530 raw_write_seqcount_end(&sp->so_reclaim_seqcount); in nfs4_reclaim_open_state()
1531 spin_unlock(&sp->so_lock); in nfs4_reclaim_open_state()
1555 struct nfs4_state_owner *sp; in nfs4_reset_seqids() local
1563 sp = rb_entry(pos, struct nfs4_state_owner, so_server_node); in nfs4_reset_seqids()
1564 sp->so_seqid.flags = 0; in nfs4_reset_seqids()
1565 spin_lock(&sp->so_lock); in nfs4_reset_seqids()
1566 list_for_each_entry(state, &sp->so_states, open_states) { in nfs4_reset_seqids()
1570 spin_unlock(&sp->so_lock); in nfs4_reset_seqids()
1605 struct nfs4_state_owner *sp; in nfs4_clear_reclaim_server() local
1613 sp = rb_entry(pos, struct nfs4_state_owner, so_server_node); in nfs4_clear_reclaim_server()
1614 spin_lock(&sp->so_lock); in nfs4_clear_reclaim_server()
1615 list_for_each_entry(state, &sp->so_states, open_states) { in nfs4_clear_reclaim_server()
1621 spin_unlock(&sp->so_lock); in nfs4_clear_reclaim_server()
1711 struct nfs4_state_owner *sp; in nfs4_do_reclaim() local
1724 sp = rb_entry(pos, in nfs4_do_reclaim()
1727 &sp->so_flags)) in nfs4_do_reclaim()
1729 atomic_inc(&sp->so_count); in nfs4_do_reclaim()
1733 status = nfs4_reclaim_open_state(sp, ops); in nfs4_do_reclaim()
1735 set_bit(ops->owner_flag_bit, &sp->so_flags); in nfs4_do_reclaim()
1736 nfs4_put_state_owner(sp); in nfs4_do_reclaim()
1741 nfs4_put_state_owner(sp); in nfs4_do_reclaim()