blkzone: Reset all zones when length is not specified

If length is 0, operate on all zones starting from offset.
This also fix the maximum length calculation from offset.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
This commit is contained in:
Damien Le Moal 2017-02-24 11:48:45 +09:00 committed by Karel Zak
parent 22fae330d9
commit 72a7310233
1 changed files with 5 additions and 3 deletions

View File

@ -235,10 +235,12 @@ static int blkzone_reset(struct blkzone_control *ctl)
if (ctl->offset > ctl->total_sectors)
errx(EXIT_FAILURE, _("%s: offset is greater than device size"), ctl->devname);
zlen = ctl->length * zonesize;
if (!ctl->length)
zlen = ctl->total_sectors;
else
zlen = ctl->length * zonesize;
if (ctl->offset + zlen > ctl->total_sectors)
zlen = ctl->total_sectors - ctl->length;
zlen = ctl->total_sectors - ctl->offset;
za.sector = ctl->offset;
za.nr_sectors = zlen;