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()
390 struct nfs4_state_owner *sp; in nfs4_find_state_owner_locked() local
394 sp = rb_entry(parent, struct nfs4_state_owner, so_server_node); in nfs4_find_state_owner_locked()
396 if (cred < sp->so_cred) in nfs4_find_state_owner_locked()
398 else if (cred > sp->so_cred) in nfs4_find_state_owner_locked()
401 if (!list_empty(&sp->so_lru)) in nfs4_find_state_owner_locked()
402 list_del_init(&sp->so_lru); in nfs4_find_state_owner_locked()
403 atomic_inc(&sp->so_count); in nfs4_find_state_owner_locked()
404 return sp; in nfs4_find_state_owner_locked()
416 struct nfs4_state_owner *sp; in nfs4_insert_state_owner_locked() local
421 sp = rb_entry(parent, struct nfs4_state_owner, so_server_node); in nfs4_insert_state_owner_locked()
423 if (new->so_cred < sp->so_cred) in nfs4_insert_state_owner_locked()
425 else if (new->so_cred > sp->so_cred) in nfs4_insert_state_owner_locked()
428 if (!list_empty(&sp->so_lru)) in nfs4_insert_state_owner_locked()
429 list_del_init(&sp->so_lru); in nfs4_insert_state_owner_locked()
430 atomic_inc(&sp->so_count); in nfs4_insert_state_owner_locked()
431 return sp; in nfs4_insert_state_owner_locked()
443 nfs4_remove_state_owner_locked(struct nfs4_state_owner *sp) in nfs4_remove_state_owner_locked() argument
445 struct nfs_server *server = sp->so_server; in nfs4_remove_state_owner_locked()
447 if (!RB_EMPTY_NODE(&sp->so_server_node)) in nfs4_remove_state_owner_locked()
448 rb_erase(&sp->so_server_node, &server->state_owners); in nfs4_remove_state_owner_locked()
449 ida_remove(&server->openowner_id, sp->so_seqid.owner_id); in nfs4_remove_state_owner_locked()
479 struct nfs4_state_owner *sp; in nfs4_alloc_state_owner() local
481 sp = kzalloc(sizeof(*sp), gfp_flags); in nfs4_alloc_state_owner()
482 if (!sp) in nfs4_alloc_state_owner()
484 sp->so_server = server; in nfs4_alloc_state_owner()
485 sp->so_cred = get_rpccred(cred); in nfs4_alloc_state_owner()
486 spin_lock_init(&sp->so_lock); in nfs4_alloc_state_owner()
487 INIT_LIST_HEAD(&sp->so_states); in nfs4_alloc_state_owner()
488 nfs4_init_seqid_counter(&sp->so_seqid); in nfs4_alloc_state_owner()
489 atomic_set(&sp->so_count, 1); in nfs4_alloc_state_owner()
490 INIT_LIST_HEAD(&sp->so_lru); in nfs4_alloc_state_owner()
491 seqcount_init(&sp->so_reclaim_seqcount); in nfs4_alloc_state_owner()
492 mutex_init(&sp->so_delegreturn_mutex); in nfs4_alloc_state_owner()
493 return sp; in nfs4_alloc_state_owner()
497 nfs4_drop_state_owner(struct nfs4_state_owner *sp) in nfs4_drop_state_owner() argument
499 struct rb_node *rb_node = &sp->so_server_node; in nfs4_drop_state_owner()
502 struct nfs_server *server = sp->so_server; in nfs4_drop_state_owner()
514 static void nfs4_free_state_owner(struct nfs4_state_owner *sp) in nfs4_free_state_owner() argument
516 nfs4_destroy_seqid_counter(&sp->so_seqid); in nfs4_free_state_owner()
517 put_rpccred(sp->so_cred); in nfs4_free_state_owner()
518 kfree(sp); in nfs4_free_state_owner()
524 struct nfs4_state_owner *sp, *tmp; in nfs4_gc_state_owners() local
531 list_for_each_entry_safe(sp, tmp, &server->state_owners_lru, so_lru) { in nfs4_gc_state_owners()
533 if (time_in_range(sp->so_expires, time_min, time_max)) in nfs4_gc_state_owners()
535 list_move(&sp->so_lru, &doomed); in nfs4_gc_state_owners()
536 nfs4_remove_state_owner_locked(sp); in nfs4_gc_state_owners()
540 list_for_each_entry_safe(sp, tmp, &doomed, so_lru) { in nfs4_gc_state_owners()
541 list_del(&sp->so_lru); in nfs4_gc_state_owners()
542 nfs4_free_state_owner(sp); in nfs4_gc_state_owners()
558 struct nfs4_state_owner *sp, *new; in nfs4_get_state_owner() local
561 sp = nfs4_find_state_owner_locked(server, cred); in nfs4_get_state_owner()
563 if (sp != NULL) in nfs4_get_state_owner()
572 sp = nfs4_insert_state_owner_locked(new); in nfs4_get_state_owner()
574 } while (sp == ERR_PTR(-EAGAIN)); in nfs4_get_state_owner()
575 if (sp != new) in nfs4_get_state_owner()
579 return sp; in nfs4_get_state_owner()
594 void nfs4_put_state_owner(struct nfs4_state_owner *sp) in nfs4_put_state_owner() argument
596 struct nfs_server *server = sp->so_server; in nfs4_put_state_owner()
599 if (!atomic_dec_and_lock(&sp->so_count, &clp->cl_lock)) in nfs4_put_state_owner()
602 sp->so_expires = jiffies; in nfs4_put_state_owner()
603 list_add_tail(&sp->so_lru, &server->state_owners_lru); in nfs4_put_state_owner()
617 struct nfs4_state_owner *sp, *tmp; in nfs4_purge_state_owners() local
621 list_for_each_entry_safe(sp, tmp, &server->state_owners_lru, so_lru) { in nfs4_purge_state_owners()
622 list_move(&sp->so_lru, &doomed); in nfs4_purge_state_owners()
623 nfs4_remove_state_owner_locked(sp); in nfs4_purge_state_owners()
627 list_for_each_entry_safe(sp, tmp, &doomed, so_lru) { in nfs4_purge_state_owners()
628 list_del(&sp->so_lru); in nfs4_purge_state_owners()
629 nfs4_free_state_owner(sp); in nfs4_purge_state_owners()
1087 struct nfs4_state_owner *sp; in nfs_increment_open_seqid() local
1092 sp = container_of(seqid->sequence, struct nfs4_state_owner, so_seqid); in nfs_increment_open_seqid()
1094 nfs4_drop_state_owner(sp); in nfs_increment_open_seqid()
1095 if (!nfs4_has_session(sp->so_server->nfs_client)) in nfs_increment_open_seqid()
1443 static int nfs4_reclaim_open_state(struct nfs4_state_owner *sp, const struct nfs4_state_recovery_op… in nfs4_reclaim_open_state() argument
1457 spin_lock(&sp->so_lock); in nfs4_reclaim_open_state()
1458 raw_write_seqcount_begin(&sp->so_reclaim_seqcount); in nfs4_reclaim_open_state()
1460 list_for_each_entry(state, &sp->so_states, open_states) { in nfs4_reclaim_open_state()
1468 spin_unlock(&sp->so_lock); in nfs4_reclaim_open_state()
1469 status = ops->recover_open(sp, state); in nfs4_reclaim_open_state()
1486 spin_lock(&sp->so_lock); in nfs4_reclaim_open_state()
1507 nfs4_state_mark_reclaim_nograce(sp->so_server->nfs_client, state); in nfs4_reclaim_open_state()
1511 nfs4_state_mark_reclaim_nograce(sp->so_server->nfs_client, state); in nfs4_reclaim_open_state()
1520 spin_lock(&sp->so_lock); in nfs4_reclaim_open_state()
1523 raw_write_seqcount_end(&sp->so_reclaim_seqcount); in nfs4_reclaim_open_state()
1524 spin_unlock(&sp->so_lock); in nfs4_reclaim_open_state()
1528 spin_lock(&sp->so_lock); in nfs4_reclaim_open_state()
1529 raw_write_seqcount_end(&sp->so_reclaim_seqcount); in nfs4_reclaim_open_state()
1530 spin_unlock(&sp->so_lock); in nfs4_reclaim_open_state()
1554 struct nfs4_state_owner *sp; in nfs4_reset_seqids() local
1562 sp = rb_entry(pos, struct nfs4_state_owner, so_server_node); in nfs4_reset_seqids()
1563 sp->so_seqid.flags = 0; in nfs4_reset_seqids()
1564 spin_lock(&sp->so_lock); in nfs4_reset_seqids()
1565 list_for_each_entry(state, &sp->so_states, open_states) { in nfs4_reset_seqids()
1569 spin_unlock(&sp->so_lock); in nfs4_reset_seqids()
1604 struct nfs4_state_owner *sp; in nfs4_clear_reclaim_server() local
1612 sp = rb_entry(pos, struct nfs4_state_owner, so_server_node); in nfs4_clear_reclaim_server()
1613 spin_lock(&sp->so_lock); in nfs4_clear_reclaim_server()
1614 list_for_each_entry(state, &sp->so_states, open_states) { in nfs4_clear_reclaim_server()
1620 spin_unlock(&sp->so_lock); in nfs4_clear_reclaim_server()
1710 struct nfs4_state_owner *sp; in nfs4_do_reclaim() local
1723 sp = rb_entry(pos, in nfs4_do_reclaim()
1726 &sp->so_flags)) in nfs4_do_reclaim()
1728 if (!atomic_inc_not_zero(&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()