Lines Matching refs:tlink
2670 cifs_put_tlink(struct tcon_link *tlink) in cifs_put_tlink() argument
2672 if (!tlink || IS_ERR(tlink)) in cifs_put_tlink()
2675 if (!atomic_dec_and_test(&tlink->tl_count) || in cifs_put_tlink()
2676 test_bit(TCON_LINK_IN_TREE, &tlink->tl_flags)) { in cifs_put_tlink()
2677 tlink->tl_time = jiffies; in cifs_put_tlink()
2681 if (!IS_ERR(tlink_tcon(tlink))) in cifs_put_tlink()
2682 cifs_put_tcon(tlink_tcon(tlink)); in cifs_put_tlink()
2683 kfree(tlink); in cifs_put_tlink()
2741 struct tcon_link *tlink; in cifs_match_super() local
2746 tlink = cifs_get_tlink(cifs_sb_master_tlink(cifs_sb)); in cifs_match_super()
2747 if (IS_ERR(tlink)) { in cifs_match_super()
2751 tcon = tlink_tcon(tlink); in cifs_match_super()
2767 cifs_put_tlink(tlink); in cifs_match_super()
3446 struct tcon_link *tlink; in cifs_mount() local
3472 tlink = NULL; in cifs_mount()
3596 tlink = kzalloc(sizeof *tlink, GFP_KERNEL); in cifs_mount()
3597 if (tlink == NULL) { in cifs_mount()
3602 tlink->tl_uid = ses->linux_uid; in cifs_mount()
3603 tlink->tl_tcon = tcon; in cifs_mount()
3604 tlink->tl_time = jiffies; in cifs_mount()
3605 set_bit(TCON_LINK_MASTER, &tlink->tl_flags); in cifs_mount()
3606 set_bit(TCON_LINK_IN_TREE, &tlink->tl_flags); in cifs_mount()
3608 cifs_sb->master_tlink = tlink; in cifs_mount()
3610 tlink_rb_insert(&cifs_sb->tlink_tree, tlink); in cifs_mount()
3813 struct tcon_link *tlink; in cifs_umount() local
3819 tlink = rb_entry(node, struct tcon_link, tl_rbnode); in cifs_umount()
3820 cifs_get_tlink(tlink); in cifs_umount()
3821 clear_bit(TCON_LINK_IN_TREE, &tlink->tl_flags); in cifs_umount()
3825 cifs_put_tlink(tlink); in cifs_umount()
3967 struct tcon_link *tlink; in tlink_rb_search() local
3970 tlink = rb_entry(node, struct tcon_link, tl_rbnode); in tlink_rb_search()
3972 if (uid_gt(tlink->tl_uid, uid)) in tlink_rb_search()
3974 else if (uid_lt(tlink->tl_uid, uid)) in tlink_rb_search()
3977 return tlink; in tlink_rb_search()
3987 struct tcon_link *tlink; in tlink_rb_insert() local
3990 tlink = rb_entry(*new, struct tcon_link, tl_rbnode); in tlink_rb_insert()
3993 if (uid_gt(tlink->tl_uid, new_tlink->tl_uid)) in tlink_rb_insert()
4024 struct tcon_link *tlink, *newtlink; in cifs_sb_tlink() local
4030 tlink = tlink_rb_search(&cifs_sb->tlink_tree, fsuid); in cifs_sb_tlink()
4031 if (tlink) in cifs_sb_tlink()
4032 cifs_get_tlink(tlink); in cifs_sb_tlink()
4035 if (tlink == NULL) { in cifs_sb_tlink()
4036 newtlink = kzalloc(sizeof(*tlink), GFP_KERNEL); in cifs_sb_tlink()
4047 tlink = tlink_rb_search(&cifs_sb->tlink_tree, fsuid); in cifs_sb_tlink()
4048 if (tlink) { in cifs_sb_tlink()
4049 cifs_get_tlink(tlink); in cifs_sb_tlink()
4054 tlink = newtlink; in cifs_sb_tlink()
4055 tlink_rb_insert(&cifs_sb->tlink_tree, tlink); in cifs_sb_tlink()
4059 ret = wait_on_bit(&tlink->tl_flags, TCON_LINK_PENDING, in cifs_sb_tlink()
4062 cifs_put_tlink(tlink); in cifs_sb_tlink()
4067 if (!IS_ERR(tlink->tl_tcon)) in cifs_sb_tlink()
4068 return tlink; in cifs_sb_tlink()
4071 if (time_before(jiffies, tlink->tl_time + TLINK_ERROR_EXPIRE)) { in cifs_sb_tlink()
4072 cifs_put_tlink(tlink); in cifs_sb_tlink()
4076 if (test_and_set_bit(TCON_LINK_PENDING, &tlink->tl_flags)) in cifs_sb_tlink()
4080 tlink->tl_tcon = cifs_construct_tcon(cifs_sb, fsuid); in cifs_sb_tlink()
4081 clear_bit(TCON_LINK_PENDING, &tlink->tl_flags); in cifs_sb_tlink()
4082 wake_up_bit(&tlink->tl_flags, TCON_LINK_PENDING); in cifs_sb_tlink()
4084 if (IS_ERR(tlink->tl_tcon)) { in cifs_sb_tlink()
4085 cifs_put_tlink(tlink); in cifs_sb_tlink()
4089 return tlink; in cifs_sb_tlink()
4104 struct tcon_link *tlink; in cifs_prune_tlinks() local
4118 tlink = rb_entry(tmp, struct tcon_link, tl_rbnode); in cifs_prune_tlinks()
4120 if (test_bit(TCON_LINK_MASTER, &tlink->tl_flags) || in cifs_prune_tlinks()
4121 atomic_read(&tlink->tl_count) != 0 || in cifs_prune_tlinks()
4122 time_after(tlink->tl_time + TLINK_IDLE_EXPIRE, jiffies)) in cifs_prune_tlinks()
4125 cifs_get_tlink(tlink); in cifs_prune_tlinks()
4126 clear_bit(TCON_LINK_IN_TREE, &tlink->tl_flags); in cifs_prune_tlinks()
4130 cifs_put_tlink(tlink); in cifs_prune_tlinks()