Skip to contentSkip to conversation

remove pvmove-specific params from allocation code

PATCH New Jun'ichi Nomura 1 participant 4 messages Nov 21, 2007

lore
Share & tools
lore
#0 lore raw

PATCH 1/3 remove pvmove-specific params from allocation code

This set of patches changes pvmove to use more generalized allocation code and logic.
The approach might be adaptible to other intermediate layer manipulation.
Please let me know if this approach is acceptable or not.

[1/3] remove pvmove-specific params from allocation code [2/3] support splitted destinations of pvmove [3/3] use generic mirror allocation for pvmove

This 1st patch is basically a repost of the patch posted August:
https://www.redhat.com/archives/lvm-devel/2007-August/msg00068.html
with a few edits to comments, variable names, etc.

The patch is a preparation for other pathes in this series. This patch removes most of pvmove specific codes from extent allocation code without affecting the functionality.

Thanks,

Signature · 8 lines
Jun'ichi Nomura, NEC Corporation of America
-------------- next part --------------
A non-text attachment was scrubbed...
Name: lvm2-pvmove-cleanup-lv_extend.patch
Type: text/x-patch
Size: 12398 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/lvm-devel/attachments/20071121/1e42b778/attachment.bin>
#1 lore raw

PATCH 2/3 support splitted destinations of pvmove

Currently, pvmove can't split destination area. This patch removes the restriction. (Actually, a prepration for removing the restriction.)

If you have 1GB LV on a contiguous area of PV1 and would like to move it to 2 x 500MB PVs, PV2 and PV3, you have to manually split the pvmove session into 2.

It's because pvmove assumes 1-1 relationship between source area and destination area and forces a contiguous allocation.

This patch changes pvmove completion to split the original segment to map to the destination areas.

Other patch ("3/3" of this series) allows allocation of splitted areas for a single source area.

Thanks,

Signature · 8 lines
Jun'ichi Nomura, NEC Corporation of America
-------------- next part --------------
A non-text attachment was scrubbed...
Name: lvm2-pvmove-handle-splitted-area.patch
Type: text/x-patch
Size: 1772 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/lvm-devel/attachments/20071121/0f07c413/attachment.bin>
#2 lore raw

PATCH 3/3 use generic mirror allocation for pvmove

In reply to Jun'ichi Nomura

Extent allocation code used to have special support for pvmove since pvmove already knows PV area to use for mirrored segment.

This patch changes the pvmove's logic to the way similar to what lvconvert does for mirrored LV.
Not only clean up the allocation code, it also allows splitted allocation for destination areas.

Thanks,

Signature · 8 lines
Jun'ichi Nomura, NEC Corporation of America
-------------- next part --------------
A non-text attachment was scrubbed...
Name: lvm2-pvmove-generalized-mirror-allocation.patch
Type: text/x-patch
Size: 14681 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/lvm-devel/attachments/20071121/34e24058/attachment.bin>
#3 lore raw

PATCH 1/1 'make check' script for testing basic pvmove operations

In reply to Jun'ichi Nomura

Attached is a test script for basic pvmove operations. (Not actually in a patch form.)
I hope it gets included in the test directory for future regression testings.

To run this, put it in LVM2/test directory, then

  # cd test; ./t-pvmove-basic.sh
With the posted patch set, all tests succeeds.
Without the patches, test 15 will fail.
# ./t-pvmove-basic.sh 
*   ok 1: set up temp file and loopback device
*   ok 2: create pv1
*   ok 3: create pv2
*   ok 4: create pv3
*   ok 5: Run this: pvcreate
  /LVM2.work/test/lvm-pvmove-basic.xqtoq24243/root/dev/mapper/pv1 
  /LVM2.work/test/lvm-pvmove-basic.xqtoq24243/root/dev/mapper/pv2
  /LVM2.work/test/lvm-pvmove-basic.xqtoq24243/root/dev/mapper/pv3
*   ok 6: set up a VG
*   ok 7: create a linear LV lv1 on pv1
*   ok 8: create a striped LV lv2 on pv2 and pv3
*   ok 9: pvmove from pv1 to pv1 (same source and destination)
*   ok 10: pvmove failure should not affect lv contents
*   ok 11: pvmove from pv1 to pv2
*   ok 12: pvmove from pv2 to pv1 only for lv1
*   ok 13: pvmove from pv3 (a part of striped LV) to pv1
*   ok 14: pvmove from pv3 to pv1 (no PEs to move)
*   ok 15: pvmove from pv1:0-1 to pv2:2-2 and pv3:3-3 (splitted)
*   ok 16: pvmove abort
*   ok 17: pvmove LV isn't left
* passed all 17 test(s)

Thanks,

Signature · 8 lines
Jun'ichi Nomura, NEC Corporation of America
-------------- next part --------------
A non-text attachment was scrubbed...
Name: t-pvmove-basic.sh
Type: application/x-sh
Size: 3588 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/lvm-devel/attachments/20071121/84957a11/attachment.sh>