Lines Matching defs:login

97 	struct sbp_login_descriptor *login, *found = NULL;
100 list_for_each_entry(login, &session->login_list, link) {
101 if (login->login_lun == unpacked_lun)
102 found = login;
116 struct sbp_login_descriptor *login;
124 list_for_each_entry(login, &sess->login_list, link) {
125 if (login->login_lun != unpacked_lun)
128 if (!exclusive || login->exclusive)
143 struct sbp_login_descriptor *login, *found = NULL;
150 list_for_each_entry(login, &sess->login_list, link) {
151 if (login->login_id == login_id)
152 found = login;
235 static void sbp_login_release(struct sbp_login_descriptor *login,
238 struct sbp_session *sess = login->sess;
242 sbp_target_agent_unregister(login->tgt_agt);
246 list_del(&login->link);
252 kfree(login);
265 struct sbp_login_descriptor *login;
274 pr_notice("login to unknown LUN: %d\n",
298 login = sbp_login_find_by_lun(sess, unpacked_lun);
299 if (login) {
305 * treat this like a reconnect, but send the login
306 * response block like a fresh login.
310 * the firmware has an active login to the target. When
322 * check exclusive bit in login request
327 pr_warn("refusing exclusive login with other active logins\n");
336 * check exclusive bit in any existing login descriptor
340 pr_warn("refusing login while another exclusive login present\n");
395 login = kmalloc(sizeof(*login), GFP_KERNEL);
396 if (!login) {
397 pr_err("failed to allocate login descriptor\n");
407 login->sess = sess;
408 login->login_lun = unpacked_lun;
409 login->status_fifo_addr = sbp2_pointer_to_addr(&req->orb.status_fifo);
410 login->exclusive = LOGIN_ORB_EXCLUSIVE(be32_to_cpu(req->orb.misc));
411 login->login_id = atomic_inc_return(&login_id);
413 login->tgt_agt = sbp_target_agent_register(login);
414 if (IS_ERR(login->tgt_agt)) {
415 ret = PTR_ERR(login->tgt_agt);
419 kfree(login);
428 list_add_tail(&login->link, &sess->login_list);
434 pr_err("failed to allocate login response block\n");
436 sbp_login_release(login, true);
449 (login->login_id & 0xffff));
451 addr_to_sbp2_pointer(login->tgt_agt->handler.offset,
459 pr_debug("failed to write login response block: %x\n", ret);
462 sbp_login_release(login, true);
497 struct sbp_login_descriptor *login;
511 login = sbp_login_find_by_id(tpg,
514 if (!login) {
515 pr_err("mgt_agent RECONNECT unknown login ID\n");
523 if (login->sess->guid != guid) {
524 pr_err("mgt_agent RECONNECT login GUID doesn't match\n");
532 spin_lock_bh(&login->sess->lock);
533 if (login->sess->card)
534 fw_card_put(login->sess->card);
537 login->sess->generation = req->generation;
538 login->sess->node_id = req->node_addr;
539 login->sess->card = fw_card_get(req->card);
540 login->sess->speed = req->speed;
541 spin_unlock_bh(&login->sess->lock);
555 struct sbp_login_descriptor *login;
559 login = sbp_login_find_by_id(tpg, id);
560 if (!login) {
561 pr_warn("cannot find login: %d\n", id);
570 login->login_lun, login->login_id);
572 if (req->node_addr != login->sess->node_id) {
581 sbp_login_release(login, true);
619 struct sbp_login_descriptor *login, *temp;
625 list_for_each_entry_safe(login, temp, &sess->login_list, link) {
626 login->sess = NULL;
627 list_move_tail(&login->link, &login_list);
631 list_for_each_entry_safe(login, temp, &login_list, link) {
632 list_del(&login->link);
633 sbp_login_release(login, false);
802 struct sbp_session *sess = agent->login->sess;
934 struct sbp_session *sess = agent->login->sess;
949 req->login = agent->login;
1013 struct sbp_login_descriptor *login)
1028 agent->login = login;
1089 struct sbp_login_descriptor *login = req->login;
1090 struct sbp_session *sess = login->sess;
1194 struct sbp_login_descriptor *login = req->login;
1195 struct sbp_session *sess = login->sess;
1213 unpacked_lun = req->login->login_lun;
1241 struct sbp_session *sess = req->login->sess;
1331 struct sbp_login_descriptor *login = req->login;
1336 login->status_fifo_addr, &req->status, length);