Lines Matching refs:tlink
3426 cifs_put_tlink(struct tcon_link *tlink) in cifs_put_tlink() argument
3428 if (!tlink || IS_ERR(tlink)) in cifs_put_tlink()
3431 if (!atomic_dec_and_test(&tlink->tl_count) || in cifs_put_tlink()
3432 test_bit(TCON_LINK_IN_TREE, &tlink->tl_flags)) { in cifs_put_tlink()
3433 tlink->tl_time = jiffies; in cifs_put_tlink()
3437 if (!IS_ERR(tlink_tcon(tlink))) in cifs_put_tlink()
3438 cifs_put_tcon(tlink_tcon(tlink)); in cifs_put_tlink()
3439 kfree(tlink); in cifs_put_tlink()
3513 struct tcon_link *tlink; in cifs_match_super() local
3518 tlink = cifs_get_tlink(cifs_sb_master_tlink(cifs_sb)); in cifs_match_super()
3519 if (tlink == NULL) { in cifs_match_super()
3524 tcon = tlink_tcon(tlink); in cifs_match_super()
3541 cifs_put_tlink(tlink); in cifs_match_super()
4167 struct tcon_link *tlink; in mount_setup_tlink() local
4170 tlink = kzalloc(sizeof(*tlink), GFP_KERNEL); in mount_setup_tlink()
4171 if (tlink == NULL) in mount_setup_tlink()
4174 tlink->tl_uid = ses->linux_uid; in mount_setup_tlink()
4175 tlink->tl_tcon = tcon; in mount_setup_tlink()
4176 tlink->tl_time = jiffies; in mount_setup_tlink()
4177 set_bit(TCON_LINK_MASTER, &tlink->tl_flags); in mount_setup_tlink()
4178 set_bit(TCON_LINK_IN_TREE, &tlink->tl_flags); in mount_setup_tlink()
4180 cifs_sb->master_tlink = tlink; in mount_setup_tlink()
4182 tlink_rb_insert(&cifs_sb->tlink_tree, tlink); in mount_setup_tlink()
5001 struct tcon_link *tlink; in cifs_umount() local
5007 tlink = rb_entry(node, struct tcon_link, tl_rbnode); in cifs_umount()
5008 cifs_get_tlink(tlink); in cifs_umount()
5009 clear_bit(TCON_LINK_IN_TREE, &tlink->tl_flags); in cifs_umount()
5013 cifs_put_tlink(tlink); in cifs_umount()
5175 struct tcon_link *tlink; in tlink_rb_search() local
5178 tlink = rb_entry(node, struct tcon_link, tl_rbnode); in tlink_rb_search()
5180 if (uid_gt(tlink->tl_uid, uid)) in tlink_rb_search()
5182 else if (uid_lt(tlink->tl_uid, uid)) in tlink_rb_search()
5185 return tlink; in tlink_rb_search()
5195 struct tcon_link *tlink; in tlink_rb_insert() local
5198 tlink = rb_entry(*new, struct tcon_link, tl_rbnode); in tlink_rb_insert()
5201 if (uid_gt(tlink->tl_uid, new_tlink->tl_uid)) in tlink_rb_insert()
5232 struct tcon_link *tlink, *newtlink; in cifs_sb_tlink() local
5238 tlink = tlink_rb_search(&cifs_sb->tlink_tree, fsuid); in cifs_sb_tlink()
5239 if (tlink) in cifs_sb_tlink()
5240 cifs_get_tlink(tlink); in cifs_sb_tlink()
5243 if (tlink == NULL) { in cifs_sb_tlink()
5244 newtlink = kzalloc(sizeof(*tlink), GFP_KERNEL); in cifs_sb_tlink()
5255 tlink = tlink_rb_search(&cifs_sb->tlink_tree, fsuid); in cifs_sb_tlink()
5256 if (tlink) { in cifs_sb_tlink()
5257 cifs_get_tlink(tlink); in cifs_sb_tlink()
5262 tlink = newtlink; in cifs_sb_tlink()
5263 tlink_rb_insert(&cifs_sb->tlink_tree, tlink); in cifs_sb_tlink()
5267 ret = wait_on_bit(&tlink->tl_flags, TCON_LINK_PENDING, in cifs_sb_tlink()
5270 cifs_put_tlink(tlink); in cifs_sb_tlink()
5275 if (!IS_ERR(tlink->tl_tcon)) in cifs_sb_tlink()
5276 return tlink; in cifs_sb_tlink()
5279 if (time_before(jiffies, tlink->tl_time + TLINK_ERROR_EXPIRE)) { in cifs_sb_tlink()
5280 cifs_put_tlink(tlink); in cifs_sb_tlink()
5284 if (test_and_set_bit(TCON_LINK_PENDING, &tlink->tl_flags)) in cifs_sb_tlink()
5288 tlink->tl_tcon = cifs_construct_tcon(cifs_sb, fsuid); in cifs_sb_tlink()
5289 clear_bit(TCON_LINK_PENDING, &tlink->tl_flags); in cifs_sb_tlink()
5290 wake_up_bit(&tlink->tl_flags, TCON_LINK_PENDING); in cifs_sb_tlink()
5292 if (IS_ERR(tlink->tl_tcon)) { in cifs_sb_tlink()
5293 cifs_put_tlink(tlink); in cifs_sb_tlink()
5297 return tlink; in cifs_sb_tlink()
5312 struct tcon_link *tlink; in cifs_prune_tlinks() local
5326 tlink = rb_entry(tmp, struct tcon_link, tl_rbnode); in cifs_prune_tlinks()
5328 if (test_bit(TCON_LINK_MASTER, &tlink->tl_flags) || in cifs_prune_tlinks()
5329 atomic_read(&tlink->tl_count) != 0 || in cifs_prune_tlinks()
5330 time_after(tlink->tl_time + TLINK_IDLE_EXPIRE, jiffies)) in cifs_prune_tlinks()
5333 cifs_get_tlink(tlink); in cifs_prune_tlinks()
5334 clear_bit(TCON_LINK_IN_TREE, &tlink->tl_flags); in cifs_prune_tlinks()
5338 cifs_put_tlink(tlink); in cifs_prune_tlinks()