Lines Matching defs:tlink
2739 cifs_put_tlink(struct tcon_link *tlink)
2741 if (!tlink || IS_ERR(tlink))
2744 if (!atomic_dec_and_test(&tlink->tl_count) ||
2745 test_bit(TCON_LINK_IN_TREE, &tlink->tl_flags)) {
2746 tlink->tl_time = jiffies;
2750 if (!IS_ERR(tlink_tcon(tlink)))
2751 cifs_put_tcon(tlink_tcon(tlink));
2752 kfree(tlink);
2837 struct tcon_link *tlink;
2849 tlink = cifs_get_tlink(cifs_sb_master_tlink(cifs_sb));
2850 if (IS_ERR_OR_NULL(tlink)) {
2851 pr_warn_once("%s: skip super matching due to bad tlink(%p)\n",
2852 __func__, tlink);
2856 tcon = tlink_tcon(tlink);
2882 cifs_put_tlink(tlink);
3467 struct tcon_link *tlink;
3470 tlink = kzalloc(sizeof(*tlink), GFP_KERNEL);
3471 if (tlink == NULL)
3474 tlink->tl_uid = ses->linux_uid;
3475 tlink->tl_tcon = tcon;
3476 tlink->tl_time = jiffies;
3477 set_bit(TCON_LINK_MASTER, &tlink->tl_flags);
3478 set_bit(TCON_LINK_IN_TREE, &tlink->tl_flags);
3480 cifs_sb->master_tlink = tlink;
3482 tlink_rb_insert(&cifs_sb->tlink_tree, tlink);
3802 struct tcon_link *tlink;
3808 tlink = rb_entry(node, struct tcon_link, tl_rbnode);
3809 cifs_get_tlink(tlink);
3810 clear_bit(TCON_LINK_IN_TREE, &tlink->tl_flags);
3814 cifs_put_tlink(tlink);
4050 /* find and return a tlink with given uid */
4055 struct tcon_link *tlink;
4058 tlink = rb_entry(node, struct tcon_link, tl_rbnode);
4060 if (uid_gt(tlink->tl_uid, uid))
4062 else if (uid_lt(tlink->tl_uid, uid))
4065 return tlink;
4075 struct tcon_link *tlink;
4078 tlink = rb_entry(*new, struct tcon_link, tl_rbnode);
4081 if (uid_gt(tlink->tl_uid, new_tlink->tl_uid))
4112 struct tcon_link *tlink, *newtlink;
4118 tlink = tlink_rb_search(&cifs_sb->tlink_tree, fsuid);
4119 if (tlink)
4120 cifs_get_tlink(tlink);
4123 if (tlink == NULL) {
4124 newtlink = kzalloc(sizeof(*tlink), GFP_KERNEL);
4135 tlink = tlink_rb_search(&cifs_sb->tlink_tree, fsuid);
4136 if (tlink) {
4137 cifs_get_tlink(tlink);
4142 tlink = newtlink;
4143 tlink_rb_insert(&cifs_sb->tlink_tree, tlink);
4147 ret = wait_on_bit(&tlink->tl_flags, TCON_LINK_PENDING,
4150 cifs_put_tlink(tlink);
4155 if (!IS_ERR(tlink->tl_tcon))
4156 return tlink;
4159 if (time_before(jiffies, tlink->tl_time + TLINK_ERROR_EXPIRE)) {
4160 cifs_put_tlink(tlink);
4164 if (test_and_set_bit(TCON_LINK_PENDING, &tlink->tl_flags))
4168 tlink->tl_tcon = cifs_construct_tcon(cifs_sb, fsuid);
4169 clear_bit(TCON_LINK_PENDING, &tlink->tl_flags);
4170 wake_up_bit(&tlink->tl_flags, TCON_LINK_PENDING);
4172 if (IS_ERR(tlink->tl_tcon)) {
4173 cifs_put_tlink(tlink);
4177 return tlink;
4192 struct tcon_link *tlink;
4195 * Because we drop the spinlock in the loop in order to put the tlink
4206 tlink = rb_entry(tmp, struct tcon_link, tl_rbnode);
4208 if (test_bit(TCON_LINK_MASTER, &tlink->tl_flags) ||
4209 atomic_read(&tlink->tl_count) != 0 ||
4210 time_after(tlink->tl_time + TLINK_IDLE_EXPIRE, jiffies))
4213 cifs_get_tlink(tlink);
4214 clear_bit(TCON_LINK_IN_TREE, &tlink->tl_flags);
4218 cifs_put_tlink(tlink);