summaryrefslogtreecommitdiffstats
path: root/sys-utils/blkzone.c
diff options
context:
space:
mode:
authorDamien Le Moal2017-02-24 03:48:45 +0100
committerKarel Zak2017-02-24 11:53:45 +0100
commit72a73102334a7e531e566defcd92dcb822c4e388 (patch)
tree690c07bb3106ff1cfd4bcff7b49b0f5acf1f26aa /sys-utils/blkzone.c
parentblkreport, blkreset: remove in favour of blkzone (diff)
downloadkernel-qcow2-util-linux-72a73102334a7e531e566defcd92dcb822c4e388.tar.gz
kernel-qcow2-util-linux-72a73102334a7e531e566defcd92dcb822c4e388.tar.xz
kernel-qcow2-util-linux-72a73102334a7e531e566defcd92dcb822c4e388.zip
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>
Diffstat (limited to 'sys-utils/blkzone.c')
-rw-r--r--sys-utils/blkzone.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys-utils/blkzone.c b/sys-utils/blkzone.c
index ddb13fc04..1c3a7ef7d 100644
--- a/sys-utils/blkzone.c
+++ b/sys-utils/blkzone.c
@@ -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;