Lines Matching defs:tree_conn
25 struct ksmbd_tree_connect *tree_conn = NULL;
33 tree_conn = kzalloc(sizeof(struct ksmbd_tree_connect), GFP_KERNEL);
34 if (!tree_conn) {
39 tree_conn->id = ksmbd_acquire_tree_conn_id(sess);
40 if (tree_conn->id < 0) {
48 tree_conn,
59 tree_conn->flags = resp->connection_flags;
60 if (test_tree_conn_flag(tree_conn, KSMBD_TREE_CONN_FLAG_UPDATE)) {
74 tree_conn->user = sess->user;
75 tree_conn->share_conf = sc;
76 tree_conn->t_state = TREE_NEW;
77 status.tree_conn = tree_conn;
78 atomic_set(&tree_conn->refcount, 1);
79 init_waitqueue_head(&tree_conn->refcount_q);
81 ret = xa_err(xa_store(&sess->tree_conns, tree_conn->id, tree_conn,
91 if (tree_conn)
92 ksmbd_release_tree_conn_id(sess, tree_conn->id);
94 kfree(tree_conn);
112 struct ksmbd_tree_connect *tree_conn)
117 xa_erase(&sess->tree_conns, tree_conn->id);
120 if (!atomic_dec_and_test(&tree_conn->refcount))
121 wait_event(tree_conn->refcount_q,
122 atomic_read(&tree_conn->refcount) == 0);
124 ret = ksmbd_ipc_tree_disconnect_request(sess->id, tree_conn->id);
125 ksmbd_release_tree_conn_id(sess, tree_conn->id);
126 ksmbd_share_config_put(tree_conn->share_conf);
127 kfree(tree_conn);