Print this page
3500 Support LSI SAS2008 (Falcon) Skinny FW for mr_sas(7D)

*** 21,30 **** --- 21,34 ---- /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ + /* + * Copyright 2013 Nexenta Systems, Inc. All rights reserved. + */ + #include <limits.h> #include <sys/mdb_modapi.h> #include <sys/sysinfo.h> #include <sys/sunmdi.h> #include <sys/scsi/scsi.h>
*** 55,103 **** } return (DCMD_OK); } void ! display_targets(struct mrsas_instance m, int verbose) { int tgt; ! struct mrsas_ld *mr_ldp; char device_path[PATH_MAX]; if (verbose) { *device_path = 0; ! if (construct_path((uintptr_t)m.dip, device_path) != DCMD_OK) { strcpy(device_path, "couldn't determine device path"); } } mdb_printf("\n"); if (verbose) mdb_printf("%s\n", device_path); ! mdb_printf("dev_type target\n"); ! mdb_printf("----------"); ! mdb_printf("\n"); for (tgt = 0; tgt < MRDRV_MAX_LD; tgt++) { ! mr_ldp = (struct mrsas_ld *)&m.mr_ld_list[tgt]; ! if ((mr_ldp != NULL) && (mr_ldp->dip != NULL) && ! (mr_ldp->lun_type == MRSAS_LD_LUN)) { ! mdb_printf("sd %d", tgt); ! mdb_printf("\n"); } } mdb_printf("\n"); } void ! display_deviceinfo(struct mrsas_instance m) { uint16_t vid, did, svid, sid; ! vid = m.vendor_id; ! did = m.device_id; ! svid = m.subsysvid; ! sid = m.subsysid; mdb_printf("\n"); mdb_printf("vendor_id device_id subsysvid subsysid"); mdb_printf("\n"); mdb_printf("--------------------------------------"); --- 59,120 ---- } return (DCMD_OK); } void ! display_targets(struct mrsas_instance *m, int verbose) { int tgt; ! struct mrsas_ld mr_ldp[MRDRV_MAX_LD]; ! struct mrsas_tbolt_pd mr_pdp[MRSAS_TBOLT_PD_TGT_MAX]; char device_path[PATH_MAX]; if (verbose) { *device_path = 0; ! if (construct_path((uintptr_t)m->dip, device_path) != DCMD_OK) { strcpy(device_path, "couldn't determine device path"); } } mdb_printf("\n"); if (verbose) mdb_printf("%s\n", device_path); ! mdb_printf("Physical/Logical Target\n"); ! mdb_printf("-----------------------\n"); ! ! if (mdb_vread(&mr_ldp, sizeof (mr_ldp), (uintptr_t)m->mr_ld_list) ! == -1 || ! mdb_vread(&mr_pdp, sizeof (mr_pdp), (uintptr_t)m->mr_tbolt_pd_list) ! == -1) { ! mdb_warn("can't read list of disks"); ! return; ! } ! for (tgt = 0; tgt < MRDRV_MAX_LD; tgt++) { ! if (mr_ldp[tgt].dip != NULL && ! mr_ldp[tgt].lun_type == MRSAS_LD_LUN) { ! mdb_printf("Logical sd %d\n", tgt); } } + for (tgt = 0; tgt < MRSAS_TBOLT_PD_TGT_MAX; tgt++) { + if (mr_pdp[tgt].dip != NULL && + mr_pdp[tgt].lun_type == MRSAS_TBOLT_PD_LUN) { + mdb_printf("Physical sd %d\n", tgt); + } + } mdb_printf("\n"); } void ! display_deviceinfo(struct mrsas_instance *m) { uint16_t vid, did, svid, sid; ! vid = m->vendor_id; ! did = m->device_id; ! svid = m->subsysvid; ! sid = m->subsysid; mdb_printf("\n"); mdb_printf("vendor_id device_id subsysvid subsysid"); mdb_printf("\n"); mdb_printf("--------------------------------------");
*** 176,189 **** mdb_printf("INVALD"); } mdb_printf("\n"); if (target_info) ! display_targets(m, verbose); if (device_info) ! display_deviceinfo(m); return (rv); } void --- 193,206 ---- mdb_printf("INVALD"); } mdb_printf("\n"); if (target_info) ! display_targets(&m, verbose); if (device_info) ! display_deviceinfo(&m); return (rv); } void