From ca3b8945247d4cfb82a351e1a293910f66fbde81 Mon Sep 17 00:00:00 2001 From: Yuri Pankov Date: Wed, 2 Feb 2011 14:26:35 -0800 Subject: [PATCH] 573 stmfadm doesn't display target and initiator aliases for iscsit Reviewed by: garrett@nexenta.com Reviewed by: deano@rattie.demon.co.uk Approved by: garrett@nexenta.com --- .../uts/common/io/comstar/port/iscsit/iscsit_login.c | 4 ++++ usr/src/uts/common/io/comstar/port/iscsit/iscsit_sess.c | 3 +++ usr/src/uts/common/io/comstar/port/iscsit/iscsit_tgt.c | 17 +++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/usr/src/uts/common/io/comstar/port/iscsit/iscsit_login.c b/usr/src/uts/common/io/comstar/port/iscsit/iscsit_login.c index e65e9a30a5..4648defcd7 100644 --- a/usr/src/uts/common/io/comstar/port/iscsit/iscsit_login.c +++ b/usr/src/uts/common/io/comstar/port/iscsit/iscsit_login.c @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ #include @@ -2565,6 +2566,9 @@ iscsit_process_negotiated_values(iscsit_conn_t *ict) ict->ict_sess->ist_initiator_alias = kmem_alloc(strlen(string_val) + 1, KM_SLEEP); (void) strcpy(ict->ict_sess->ist_initiator_alias, string_val); + if (ict->ict_sess->ist_stmf_sess) + ict->ict_sess->ist_stmf_sess->ss_rport_alias = + strdup(string_val); } if ((nvrc = nvlist_lookup_string(lsm->icl_negotiated_values, diff --git a/usr/src/uts/common/io/comstar/port/iscsit/iscsit_sess.c b/usr/src/uts/common/io/comstar/port/iscsit/iscsit_sess.c index 92e490bc83..d35a1b327b 100644 --- a/usr/src/uts/common/io/comstar/port/iscsit/iscsit_sess.c +++ b/usr/src/uts/common/io/comstar/port/iscsit/iscsit_sess.c @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ #include @@ -228,6 +229,8 @@ iscsit_sess_unref(void *ist_void) kmem_free(iss->ss_rport_id, sizeof (scsi_devid_desc_t) + strlen(ist->ist_initiator_name) + 1); stmf_remote_port_free(iss->ss_rport); + if (iss->ss_rport_alias) + strfree(iss->ss_rport_alias); stmf_free(iss); } mutex_exit(&ist->ist_mutex); diff --git a/usr/src/uts/common/io/comstar/port/iscsit/iscsit_tgt.c b/usr/src/uts/common/io/comstar/port/iscsit/iscsit_tgt.c index 0325a7f817..50252cb611 100644 --- a/usr/src/uts/common/io/comstar/port/iscsit/iscsit_tgt.c +++ b/usr/src/uts/common/io/comstar/port/iscsit/iscsit_tgt.c @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ #include @@ -852,6 +853,7 @@ iscsit_tgt_create(it_tgt_t *cfg_tgt) { iscsit_tgt_t *result; stmf_local_port_t *lport; + char *alias; /* * Each target is an STMF local port. @@ -889,6 +891,10 @@ iscsit_tgt_create(it_tgt_t *cfg_tgt) idm_refcnt_init(&result->target_refcnt, result); idm_refcnt_init(&result->target_sess_refcnt, result); + /* Set target alias */ + if (nvlist_lookup_string(cfg_tgt->tgt_properties, "alias", &alias) == 0) + lport->lport_alias = strdup(alias); + /* Finish initializing local port */ /* * Would like infinite timeout, but this is about as long as can @@ -939,6 +945,7 @@ iscsit_tgt_modify(iscsit_tgt_t *tgt, it_tgt_t *cfg_tgt) { idm_status_t idmrc = IDM_STATUS_SUCCESS; list_t tpgt_del_list; + char *alias; /* Merge TPGT */ list_create(&tpgt_del_list, sizeof (iscsit_tpgt_t), @@ -952,6 +959,14 @@ iscsit_tgt_modify(iscsit_tgt_t *tgt, it_tgt_t *cfg_tgt) (void) nvlist_dup(cfg_tgt->tgt_properties, &tgt->target_props, KM_SLEEP); + /* Update alias */ + if (tgt->target_stmf_lport->lport_alias) { + strfree(tgt->target_stmf_lport->lport_alias); + tgt->target_stmf_lport->lport_alias = NULL; + } + if (nvlist_lookup_string(tgt->target_props, "alias", &alias) == 0) + tgt->target_stmf_lport->lport_alias = strdup(alias); + if ((idmrc = iscsit_tgt_merge_tpgt(tgt, cfg_tgt, &tpgt_del_list)) != IDM_STATUS_SUCCESS) { /* This should never happen */ @@ -1046,6 +1061,8 @@ iscsit_tgt_destroy(iscsit_tgt_t *tgt) avl_destroy(&tgt->target_tpgt_list); avl_destroy(&tgt->target_sess_list); mutex_destroy(&tgt->target_mutex); + if (tgt->target_stmf_lport->lport_alias) + strfree(tgt->target_stmf_lport->lport_alias); stmf_free(tgt->target_stmf_lport); /* Also frees "tgt' */ iscsit_global_rele(); } -- 2.11.4.GIT