Lines Matching refs:key

151  *                          |key    |                 |       |
239 #define PGR_RESERVATION_HOLDER(pgr, key, it) ( \
241 ((pgr)->pgr_rsvholder) && ((pgr)->pgr_rsvholder == (key)) && \
242 ((key)->pgr_key_it) && ((key)->pgr_key_it == (it))))
272 sbd_swap_pgrkey_info(sbd_pgr_key_info_t *key)
274 key->pgr_key = BSWAP_64(key->pgr_key);
275 key->pgr_key_lpt_len = BSWAP_16(key->pgr_key_lpt_len);
276 key->pgr_key_rpt_len = BSWAP_16(key->pgr_key_rpt_len);
303 sbd_pgr_key_t *key, *last_key = NULL;
350 /* Validate the key fields */
374 key = sbd_pgr_key_alloc(lpt, (scsi_transport_id_t *)ptr,
390 key = sbd_pgr_key_alloc(lpt, rpt->rport_tptid,
395 key->pgr_key = spi_key->pgr_key;
396 key->pgr_key_flags = spi_key->pgr_key_flags;
397 key->pgr_key_prev = last_key;
400 last_key->pgr_key_next = key;
402 pgr->pgr_keylist = key;
404 last_key = key;
408 pgr->pgr_rsvholder = key;
430 sbd_pgr_key_t *key;
440 key = pgr->pgr_keylist;
441 while (key != NULL) {
444 key->pgr_key_lpt_len + key->pgr_key_rpt_len);
445 key = key->pgr_key_next;
463 key = pgr->pgr_keylist;
465 while (key != NULL) {
467 spi_key->pgr_key = key->pgr_key;
468 spi_key->pgr_key_flags = key->pgr_key_flags;
469 spi_key->pgr_key_lpt_len = key->pgr_key_lpt_len;
470 spi_key->pgr_key_rpt_len = key->pgr_key_rpt_len;
472 bcopy(key->pgr_key_lpt_id, ptr, key->pgr_key_lpt_len);
473 ptr += key->pgr_key_lpt_len;
474 bcopy(key->pgr_key_rpt_id, ptr, key->pgr_key_rpt_len);
477 if (key == pgr->pgr_rsvholder) {
483 key->pgr_key_lpt_len + key->pgr_key_rpt_len);
484 key = key->pgr_key_next;
503 key = pgr->pgr_keylist;
507 pgr->pgr_keylist = key;
518 sbd_pgr_key_t *key;
520 key = (sbd_pgr_key_t *)kmem_zalloc(sizeof (sbd_pgr_key_t), KM_SLEEP);
523 key->pgr_key_lpt_len = lpt_len;
524 key->pgr_key_lpt_id = (scsi_devid_desc_t *)kmem_zalloc(
526 bcopy(lptid, key->pgr_key_lpt_id, lpt_len);
530 key->pgr_key_flags |= SBD_PGR_KEY_TPT_ID_FLAG;
531 key->pgr_key_rpt_len = rpt_len;
532 key->pgr_key_rpt_id = (scsi_transport_id_t *)kmem_zalloc(
534 bcopy(rptid, key->pgr_key_rpt_id, rpt_len);
537 return (key);
541 sbd_pgr_key_free(sbd_pgr_key_t *key)
543 if (key->pgr_key_lpt_id) {
544 kmem_free(key->pgr_key_lpt_id, key->pgr_key_lpt_len);
546 if (key->pgr_key_rpt_id) {
547 kmem_free(key->pgr_key_rpt_id, key->pgr_key_rpt_len);
549 kmem_free(key, sizeof (sbd_pgr_key_t));
557 sbd_pgr_key_t *key;
566 key = pgr->pgr_keylist;
567 pgr->pgr_keylist = key->pgr_key_next;
568 sbd_pgr_key_free(key);
592 sbd_pgr_remove_key(sbd_lu_t *slu, sbd_pgr_key_t *key)
597 ASSERT(key);
600 if (key->pgr_key_flags & SBD_PGR_KEY_ALL_TG_PT) {
602 if (it->pgr_key_ptr == key)
606 if (key->pgr_key_it) {
607 key->pgr_key_it->pgr_key_ptr = NULL;
612 if (key->pgr_key_next) {
613 key->pgr_key_next->pgr_key_prev = key->pgr_key_prev;
615 if (key->pgr_key_prev) {
616 key->pgr_key_prev->pgr_key_next = key->pgr_key_next;
618 pgr->pgr_keylist = key->pgr_key_next;
621 sbd_pgr_key_free(key);
637 sbd_pgr_key_t *nextkey, *key = pgr->pgr_keylist;
640 while (key) {
642 nextkey = key->pgr_key_next;
643 if (match == B_TRUE && key->pgr_key == svc_key ||
644 match == B_FALSE && key->pgr_key != svc_key) {
646 * If the key is registered by current IT keep it,
649 if (key == my_key) {
653 if (it->pgr_key_ptr == key &&
659 sbd_pgr_remove_key(slu, key);
663 key = nextkey;
710 sbd_pgr_key_compare(sbd_pgr_key_t *key, scsi_devid_desc_t *lpt,
715 if (!stmf_scsilib_tptid_compare(rpt->rport_tptid, key->pgr_key_rpt_id))
720 * is set for this key;
722 if (!(key->pgr_key_flags & SBD_PGR_KEY_ALL_TG_PT) && lpt) {
723 id = key->pgr_key_lpt_id;
737 sbd_pgr_key_t *key;
739 for (key = pgr->pgr_keylist; key != NULL; key = key->pgr_key_next) {
740 if (sbd_pgr_key_compare(key, lpt, rpt) == B_TRUE) {
741 return (key);
753 sbd_pgr_key_t *key;
765 for (key = pgr->pgr_keylist; key != NULL; key = key->pgr_key_next) {
767 if ((!(key->pgr_key_flags & SBD_PGR_KEY_ALL_TG_PT)) &&
768 key->pgr_key_it != NULL)
771 * SBD_PGR_ALL_KEYS_HAS_IT is set only if no single key
777 /* Check if key matches with given lpt rpt combination */
778 if (sbd_pgr_key_compare(key, lpt, rpt) == B_FALSE)
781 /* IT nexus devid information matches with this key */
782 if (key->pgr_key_flags & SBD_PGR_KEY_ALL_TG_PT) {
785 * unless pgr->pgr_rsvholder pointing to this key.
789 if (pgr->pgr_rsvholder == key) {
790 id = key->pgr_key_lpt_id;
794 key->pgr_key_it = it;
799 key->pgr_key_it = it;
803 it->pgr_key_ptr = key;
963 sbd_pgr_key_t *key;
997 * because we are only accessing reservation key feild.
1006 key = (sbd_pgr_key_t *)((volatile sbd_pgr_key_t *)it->pgr_key_ptr);
1010 if (key == NULL) {
1024 /* Given reservation key should matches with registered key */
1026 if (key->pgr_key != rsv_key) {
1068 sbd_pgr_key_t *key;
1076 for (key = pgr->pgr_keylist; key != NULL; key = key->pgr_key_next)
1084 for (key = pgr->pgr_keylist; key != NULL; key = key->pgr_key_next) {
1085 SCSI_WRITE64(reg_key, key->pgr_key);
1174 sbd_pgr_key_t *key;
1188 for (key = pgr->pgr_keylist; key != NULL; key = key->pgr_key_next) {
1190 key->pgr_key_rpt_len;
1198 key = pgr->pgr_keylist;
1200 while (key) {
1202 SCSI_WRITE64(sts->reservation_key, key->pgr_key);
1204 (pgr->pgr_rsvholder && pgr->pgr_rsvholder == key)) {
1210 if (key->pgr_key_flags & SBD_PGR_KEY_ALL_TG_PT) {
1214 stmf_scsilib_get_lport_rtid(key->pgr_key_lpt_id));
1216 SCSI_WRITE32(sts->add_len, key->pgr_key_rpt_len);
1218 (void) memcpy(offset, key->pgr_key_rpt_id,
1219 key->pgr_key_rpt_len);
1220 offset += key->pgr_key_rpt_len;
1221 key = key->pgr_key_next;
1238 sbd_pgr_key_t *key = it->pgr_key_ptr;
1254 if (key) {
1257 key->pgr_key != rsv_key) {
1269 (key->pgr_key_flags & SBD_PGR_KEY_ALL_TG_PT)) {
1276 sbd_pgr_do_unregister(slu, it, key);
1278 key->pgr_key = svc_key;
1411 sbd_pgr_key_t *key;
1417 key = sbd_pgr_key_alloc(lpt, rpt->rport_tptid,
1419 key->pgr_key = svc_key;
1420 key->pgr_key_flags |= keyflag;
1422 if (key->pgr_key_flags & SBD_PGR_KEY_ALL_TG_PT) {
1426 key->pgr_key_it = it;
1431 it->pgr_key_ptr = key;
1437 key->pgr_key_next = pgr->pgr_keylist;
1439 pgr->pgr_keylist->pgr_key_prev = key;
1441 pgr->pgr_keylist = key;
1443 return (key);
1447 sbd_pgr_do_unregister(sbd_lu_t *slu, sbd_it_data_t *it, sbd_pgr_key_t *key)
1449 if (slu->sl_pgr->pgr_rsvholder == key) {
1453 sbd_pgr_remove_key(slu, key);
1467 sbd_pgr_key_t *key = it->pgr_key_ptr;
1469 ASSERT(key);
1478 if (PGR_RESERVATION_HOLDER(pgr, key, it)) {
1493 sbd_pgr_do_reserve(pgr, key, it, ses, pr_out);
1507 sbd_pgr_do_reserve(sbd_pgr_t *pgr, sbd_pgr_key_t *key, sbd_it_data_t *it,
1519 if (key->pgr_key_flags & SBD_PGR_KEY_ALL_TG_PT) {
1520 lpt = key->pgr_key_lpt_id;
1521 lpt_len = key->pgr_key_lpt_len;
1528 key->pgr_key_lpt_len = lpt_len;
1529 key->pgr_key_lpt_id = (scsi_devid_desc_t *)
1531 bcopy(lpt, key->pgr_key_lpt_id, lpt_len);
1532 key->pgr_key_it = it;
1536 pgr->pgr_rsvholder = key;
1547 sbd_pgr_key_t *key = it->pgr_key_ptr;
1549 ASSERT(key);
1553 pgr->pgr_rsvholder == key) {
1624 sbd_pgr_key_t *key = it->pgr_key_ptr;
1629 ASSERT(key);
1637 sbd_pgr_remove_keys(slu, it, key, svc_key, B_TRUE) == 0) {
1660 if (pgr->pgr_rsvholder != key &&
1667 if (pgr->pgr_rsvholder == key &&
1679 * svc_key matches with registered key.
1681 * IT nexus, and svc_key matches registered key for
1686 if (sbd_pgr_remove_keys(slu, it, key, svc_key, B_TRUE)
1695 sbd_pgr_do_reserve(pgr, key, it, ses, pr_out);
1708 (void) sbd_pgr_remove_keys(slu, it, key, 0, B_FALSE);
1709 sbd_pgr_do_reserve(pgr, key, it, ses, pr_out);
1711 if (sbd_pgr_remove_keys(slu, it, key, svc_key, B_TRUE)
1743 sbd_pgr_key_t *key = it->pgr_key_ptr;
1754 * Check whether the key holds the reservation or current reservation
1757 if (pgr->pgr_rsvholder != key) {
1791 if (sbd_pgr_key_compare(key, lpt, &rport)) {
1803 /* all_tg_pt is set for found key, copy lpt info to the key */
1826 /* Now reserve the key corresponding to the specified IT nexus */
1830 sbd_pgr_do_unregister(slu, it, key);
1861 sbd_pgr_key_t *key = it->pgr_key_ptr;
1862 if (key->pgr_key_it == it) {
1863 key->pgr_key_it = NULL;