Patchwork megasas: Correct target/lun mapping

login
register
mail settings
Submitter Hannes Reinecke
Date Nov. 12, 2012, 2:42 p.m.
Message ID <1352731362-19524-1-git-send-email-hare@suse.de>
Download mbox | patch
Permalink /patch/198409/
State New
Headers show

Comments

Hannes Reinecke - Nov. 12, 2012, 2:42 p.m.
The structure to reference a logical drive has an unused field,
which can be used to carry the lun ID. This enabled seabios to
establish the proper target/LUN mapping.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Gerd Hofmann <kraxel@redhat.com>
Paolo Bonzini - Nov. 12, 2012, 3:43 p.m.
Il 12/11/2012 15:42, Hannes Reinecke ha scritto:
> The structure to reference a logical drive has an unused field,
> which can be used to carry the lun ID. This enabled seabios to
> establish the proper target/LUN mapping.
> 
> Signed-off-by: Hannes Reinecke <hare@suse.de>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Gerd Hofmann <kraxel@redhat.com>

Applied to scsi-next branch.

Paolo

> 
> diff --git a/hw/megasas.c b/hw/megasas.c
> index 7a2036e..395feb3 100644
> --- a/hw/megasas.c
> +++ b/hw/megasas.c
> @@ -1080,6 +1080,7 @@ static int megasas_dcmd_ld_get_list(MegasasState *s, MegasasCmd *cmd)
>          /* Logical device size is in blocks */
>          bdrv_get_geometry(conf->bs, &ld_size);
>          info.ld_list[num_ld_disks].ld.v.target_id = sdev->id;
> +        info.ld_list[num_ld_disks].ld.v.lun_id = sdev->lun;
>          info.ld_list[num_ld_disks].state = MFI_LD_STATE_OPTIMAL;
>          info.ld_list[num_ld_disks].size = cpu_to_le64(ld_size);
>          num_ld_disks++;
> diff --git a/hw/mfi.h b/hw/mfi.h
> index 436b690..cd8355b 100644
> --- a/hw/mfi.h
> +++ b/hw/mfi.h
> @@ -1085,7 +1085,7 @@ struct mfi_pd_list {
>  union mfi_ld_ref {
>      struct {
>          uint8_t target_id;
> -        uint8_t reserved;
> +        uint8_t lun_id;
>          uint16_t seq;
>      } v;
>      uint32_t ref;
> 
>

Patch

diff --git a/hw/megasas.c b/hw/megasas.c
index 7a2036e..395feb3 100644
--- a/hw/megasas.c
+++ b/hw/megasas.c
@@ -1080,6 +1080,7 @@  static int megasas_dcmd_ld_get_list(MegasasState *s, MegasasCmd *cmd)
         /* Logical device size is in blocks */
         bdrv_get_geometry(conf->bs, &ld_size);
         info.ld_list[num_ld_disks].ld.v.target_id = sdev->id;
+        info.ld_list[num_ld_disks].ld.v.lun_id = sdev->lun;
         info.ld_list[num_ld_disks].state = MFI_LD_STATE_OPTIMAL;
         info.ld_list[num_ld_disks].size = cpu_to_le64(ld_size);
         num_ld_disks++;
diff --git a/hw/mfi.h b/hw/mfi.h
index 436b690..cd8355b 100644
--- a/hw/mfi.h
+++ b/hw/mfi.h
@@ -1085,7 +1085,7 @@  struct mfi_pd_list {
 union mfi_ld_ref {
     struct {
         uint8_t target_id;
-        uint8_t reserved;
+        uint8_t lun_id;
         uint16_t seq;
     } v;
     uint32_t ref;