On Mon, 2013-02-11 at 18:34 +0100, Martin Peschke wrote: > Both start_sect and nr_sects in struct partition are __le32 and > require cpu_to_le32() on assignment. Steffen Maier has pointed me at: block/partitions/msdos.c: return (sector_t)get_unaligned_le32(&p->start_sect); Unfortunately, both get_unaligned_le32() and le32_to_cpu() appear to be in use for start_sect and nr_sects. Any one who would argue for changing my patch from cpu_to_le32 to put_unaligned_le32()? Thanks, Martin > > Without this fix tools like fdisk show an invalid partition table > for SCSI devices emulated by scsi_debug on big-endian architectures, > like s390x. Besides a kernel message like this was emitted: > > sda: p1 start 536870912 is beyond EOD, enabling native capacity > sda: p1 start 536870912 is beyond EOD, truncated > > For verification 'xxd -l 512 /dev/sda' has been used to make sure > that this fix makes scsi_debug generated partition tables on s390x > look like the ones generated on my laptop. > > Signed-off-by: Martin Peschke <mpeschke@xxxxxxxxxxxxxxxxxx> > Reviewed-by: Steffen Maier <maier@xxxxxxxxxxxxxxxxxx> > > --- > drivers/scsi/scsi_debug.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > --- a/drivers/scsi/scsi_debug.c > +++ b/drivers/scsi/scsi_debug.c > @@ -2662,8 +2662,8 @@ static void __init sdebug_build_parts(un > / sdebug_sectors_per; > pp->end_sector = (end_sec % sdebug_sectors_per) + 1; > > - pp->start_sect = start_sec; > - pp->nr_sects = end_sec - start_sec + 1; > + pp->start_sect = cpu_to_le32(start_sec); > + pp->nr_sects = cpu_to_le32(end_sec - start_sec + 1); > pp->sys_ind = 0x83; /* plain Linux partition */ > } > } > > > -- > 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 > -- 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