Bug 121842

Summary: [PATCH] LVM on PPC64: pvmove failed to move physical extent from one PV to another.
Product: Red Hat Enterprise Linux 3 Reporter: Wendy Cheng <nobody+wcheng>
Component: kernelAssignee: David Howells <dhowells>
Status: CLOSED ERRATA QA Contact: Brian Brock <bbrock>
Severity: medium Docs Contact:
Priority: medium    
Version: 3.0CC: agk, heinzm, petrides, riel, tao
Target Milestone: ---   
Target Release: ---   
Hardware: powerpc   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2004-09-02 04:31:27 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Wendy Cheng 2004-04-28 15:48:32 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1)
Gecko/20020830

Description of problem:
Red Hat Issue Tracker number:   IT# 35830
Bug Reported by:                Glen Johnson (IBM LTC)
IBM Technical Account Manager:  Mike Gahagan
HardWare Environment:           ppc64

The "pvmove" command uses the PE_LOCKED_COPY (0x4004fe51) ioctl to
finish the move from one physical extent to another. Unfortunately,
this ioctl has not been handled at all on ppc64 kernel and always
return -EINVAL. 

If we add (hack) COMPATIBLE_IOCTL(PE_LOCKED_COPY) as:

--- arch/ppc64/kernel.orig/ioctl32.c	2004-03-05 10:32:56.000000000 +0530
+++ arch/ppc64/kernel/ioctl32.c	2004-03-02 16:23:39.000000000 +0530
@@ -4366,6 +4366,7 @@
 COMPATIBLE_IOCTL(VG_RENAME),
 COMPATIBLE_IOCTL(VG_REDUCE),
 COMPATIBLE_IOCTL(PE_LOCK_UNLOCK),
+COMPATIBLE_IOCTL(PE_LOCKED_COPY),
 COMPATIBLE_IOCTL(PV_FLUSH),
 COMPATIBLE_IOCTL(LVM_LOCK_LVM),
 COMPATIBLE_IOCTL(LVM_GET_IOP_VERSION),

then then "pvmove" completes without error.



Version-Release number of selected component (if applicable):
RHEL3 (kernel-2.4.21-x.EL)

How reproducible:
Always

Steps to Reproduce:
On a ppc64 machine:

1. Create two physical volume, and then create a volume group on them.
   e.g. shell> parted #create 2 spare disk partitions - each 800MB. 
        shell> vgscan #if first run of LVM
        shell> pvcreate /dev/sda5 /dev/sda6
        shell> vgcreate vg001 /dev/sda5 /dev/sda6
2. Create a logical volume, then create and mount a file system on it.
   e.g. shell> lvcreate -L 200M -n lv001 vg001
        shell> mkfs.ext3 /dev/vg001/lv001
        shell> mkdir /lvmtst
        shell> mount /dev/vg001/lv001 /lvmtst
3. Move the physical extent from one physical volume to another
   e.g. shell> pvdisplay -v /dev/sda5
        shell> pvdisplay -v /dev/sda6
        shell> pvmove -v /dev/sdc5

pvmove -- ERROR reading input physical volume "/dev/sdc5" (still
4194304 bytes
to read)
pvmove -- ERROR "pv_move_pe(): read input PV" moving physical extents
    

Actual Results:  The "pvmove" command fails with the following error
messages:

pvmove -- ERROR reading input physical volume "/dev/sdc5" (still
4194304 bytes to read)
pvmove -- ERROR "pv_move_pe(): read input PV" moving physical extents



Expected Results:  The command (pvmove) finished successfully

Additional info:

1. The x86 doesn't have this problem. 
2. Experiments were done on p655.test.redhat.com (192.168.33.46).
3. Contact James Laska (QA Engineer) if you need machine access.

Comment 5 Ernie Petrides 2004-05-13 03:45:43 UTC
Wendy's patch above has just been committed to the RHEL3 U3
patch pool this evening (in kernel version 2.4.21-15.4.EL).


Comment 6 John Flanagan 2004-09-02 04:31:27 UTC
An errata has been issued which should help the problem 
described in this bug report. This report is therefore being 
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files, 
please follow the link below. You may reopen this bug report 
if the solution does not work for you.

http://rhn.redhat.com/errata/RHBA-2004-433.html