mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
pvmove: Accept PE ranges as start+length.
This commit is contained in:
parent
bbcc120e5a
commit
7233e584ad
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.103 -
|
Version 2.02.103 -
|
||||||
======================================
|
======================================
|
||||||
|
Support start+length notation with command line PE ranges.
|
||||||
Exit cleanly with message when pvmove cannot restart because LV is inactive.
|
Exit cleanly with message when pvmove cannot restart because LV is inactive.
|
||||||
|
|
||||||
Version 2.02.102 - 23rd September 2013
|
Version 2.02.102 - 23rd September 2013
|
||||||
|
@ -123,6 +123,13 @@ inclusive on /dev/sdb1 - like this:
|
|||||||
.sp
|
.sp
|
||||||
.B pvmove /dev/sdb1:1000-1999
|
.B pvmove /dev/sdb1:1000-1999
|
||||||
.P
|
.P
|
||||||
|
A range can also be specified as start+length, so
|
||||||
|
.sp
|
||||||
|
.B pvmove /dev/sdb1:1000+1000
|
||||||
|
.P
|
||||||
|
also refers to 1000 Physical Extents starting from Physical Extent number 1000.
|
||||||
|
(Counting starts from 0, so this refers to the 1001st to the 2000th inclusive.)
|
||||||
|
.P
|
||||||
To move a range of Physical Extents to a specific location (which must have
|
To move a range of Physical Extents to a specific location (which must have
|
||||||
sufficent free extents) use the form:
|
sufficent free extents) use the form:
|
||||||
.sp
|
.sp
|
||||||
|
@ -1081,7 +1081,7 @@ static int _parse_pes(struct dm_pool *mem, char *c, struct dm_list *pe_ranges,
|
|||||||
const char *pvname, uint32_t size)
|
const char *pvname, uint32_t size)
|
||||||
{
|
{
|
||||||
char *endptr;
|
char *endptr;
|
||||||
uint32_t start, end;
|
uint32_t start, end, len;
|
||||||
|
|
||||||
/* Default to whole PV */
|
/* Default to whole PV */
|
||||||
if (!c) {
|
if (!c) {
|
||||||
@ -1121,7 +1121,16 @@ static int _parse_pes(struct dm_pool *mem, char *c, struct dm_list *pe_ranges,
|
|||||||
goto error;
|
goto error;
|
||||||
c = endptr;
|
c = endptr;
|
||||||
}
|
}
|
||||||
|
} else if (*c == '+') { /* Length? */
|
||||||
|
c++;
|
||||||
|
if (isdigit(*c)) {
|
||||||
|
if (!xstrtouint32(c, &endptr, 10, &len))
|
||||||
|
goto error;
|
||||||
|
c = endptr;
|
||||||
|
end = start + (len ? (len - 1) : 0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (*c && *c != ':')
|
if (*c && *c != ':')
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user