Re: [PATCH 2/4] scsi_debug: fix logical block provisioning support when unmap_alignment != 0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Douglas, Martin,

Could you review this patch when you have a time?  I would like to
submit at least this patch 2/4, and 1/4 which has already been acked
by Douglas for the next merge window.

Although the patches 2/4 ~ 4/4 are all related to the logical block
provisioning support, the problems that fixed by 3/4 and 4/4 only
happen with virtual_gb option enabled, too.  On the other hand, the
problem that fixed by 2/4 is easily reproduced by, for example,
'modprobe scsi_debug lbpu=1 unmap_alignment=1 unmap_granularity=4'.
So the patch 2/4 has rather higher severity than others.

2013/7/15 Akinobu Mita <akinobu.mita@xxxxxxxxx>:
> Commit b90ebc3d5c41c9164ae04efd2e4f8204c2a186f1 ("[SCSI] scsi_debug:
> fix logical block provisioning support") fixed several issues with
> logical block provisioning support, but it still doesn't properly fix
> the cases when unmap_alignment > 0.  (for example, unmap_alignment=1
> and unmap_granularity=3)
>
> The problem is in map_index_to_lba(), which should return the first
> LBA which is corresponding to a given index of provisioning map
> (map_storep).
>
> Signed-off-by: Akinobu Mita <akinobu.mita@xxxxxxxxx>
> Cc: "James E.J. Bottomley" <JBottomley@xxxxxxxxxxxxx>
> Cc: Douglas Gilbert <dgilbert@xxxxxxxxxxxx>
> Cc: "Martin K. Petersen" <martin.petersen@xxxxxxxxxx>
> Cc: linux-scsi@xxxxxxxxxxxxxxx
> ---
>  drivers/scsi/scsi_debug.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c
> index 2f39b13..01c0ffa 100644
> --- a/drivers/scsi/scsi_debug.c
> +++ b/drivers/scsi/scsi_debug.c
> @@ -1997,8 +1997,14 @@ static unsigned long lba_to_map_index(sector_t lba)
>
>  static sector_t map_index_to_lba(unsigned long index)
>  {
> -       return index * scsi_debug_unmap_granularity -
> -               scsi_debug_unmap_alignment;
> +       sector_t lba = index * scsi_debug_unmap_granularity;
> +
> +       if (scsi_debug_unmap_alignment) {
> +               lba -= scsi_debug_unmap_granularity -
> +                       scsi_debug_unmap_alignment;
> +       }
> +
> +       return lba;
>  }
>
>  static unsigned int map_state(sector_t lba, unsigned int *num)
> --
> 1.8.3.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux