NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
bin/44286: Partition size not correctly recognised in lvm / pvcreate
>Number: 44286
>Category: bin
>Synopsis: Partition size not correctly recognised in lvm / pvcreate
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: bin-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Dec 28 09:45:00 +0000 2010
>Originator: Martin Mersberger
>Release: NetBSD-current
>Organization:
>Environment:
NetBSD melon 5.99.41 NetBSD 5.99.41 (GENERIC-PF) #0: Sun Dec 26 23:47:17 UTC
2010 root@melon:/usr/obj/sys/arch/sparc64/compile/GENERIC-PF sparc64
>Description:
When I try to create a LVM physical volume on a raid1 raidframe set, it seems,
that DIOCGDINFO is used to determine the size of the wedge.
Looking at the code, dev-io.c, *size /= lab.d_secsize (sector size via
disklabel..) - but *size is not set beforehand (ie. when get_dev_size is
invoked in filter.c). I guess, that's not correctly implemented at the moment...
ie. a pvcreate (Don't worry about the output dev-io.c:289 - that's some debug I
added locally - but at this lines +-10, the error occurs)
melon# lvm pvcreate /dev/rraid0f -vvvv
#/usr/src/external/gpl2/lvm2/dist/tools/lvmcmdline.c:1002 Processing:
pvcreate /dev/rraid0f -vvvv
#/usr/src/external/gpl2/lvm2/dist/tools/lvmcmdline.c:1005 O_DIRECT will
be used
#/usr/src/external/gpl2/lvm2/dist/lib/config/config.c:992
global/locking_type not found in config: defaulting to 1
#/usr/src/external/gpl2/lvm2/dist/lib/config/config.c:992
global/wait_for_locks not found in config: defaulting to 1
#/usr/src/external/gpl2/lvm2/dist/lib/locking/locking.c:242 File-based
locking selected.
#/usr/src/external/gpl2/lvm2/dist/lib/config/config.c:970
global/locking_dir not found in config: defaulting to /var/lock/lvm
#/usr/src/external/gpl2/lvm2/dist/lib/config/config.c:992
metadata/pvmetadatasize not found in config: defaulting to 255
#/usr/src/external/gpl2/lvm2/dist/lib/config/config.c:992
metadata/pvmetadatacopies not found in config: defaulting to 1
#/usr/src/external/gpl2/lvm2/dist/lib/locking/file_locking.c:237 Locking
/var/lock/lvm/P_orphans WB
#/usr/src/external/gpl2/lvm2/dist/lib/locking/file_locking.c:143
_do_flock /var/lock/lvm/P_orphans:aux WB
#/usr/src/external/gpl2/lvm2/dist/lib/locking/file_locking.c:143
_do_flock /var/lock/lvm/P_orphans WB
#/usr/src/external/gpl2/lvm2/dist/lib/locking/file_locking.c:53
_undo_flock /var/lock/lvm/P_orphans:aux
#/usr/src/external/gpl2/lvm2/dist/lib/device/dev-io.c:539 Opened
/dev/rraid0f RW O_DIRECT
#/usr/src/external/gpl2/lvm2/dist/lib/device/dev-io.c:159 /dev/rraid0f:
block size is 512 bytes
#/usr/src/external/gpl2/lvm2/dist/lib/label/label.c:186 /dev/rraid0f: No
label detected
#/usr/src/external/gpl2/lvm2/dist/lib/device/dev-io.c:585 Closed
/dev/rraid0f
#/usr/src/external/gpl2/lvm2/dist/lib/device/dev-io.c:539 Opened
/dev/rraid0f RW O_EXCL O_DIRECT
#/usr/src/external/gpl2/lvm2/dist/lib/device/dev-io.c:585 Closed
/dev/rraid0f
#/usr/src/external/gpl2/lvm2/dist/lib/device/dev-io.c:289 Size via
DIOCGDINFO initial size is 0
#/usr/src/external/gpl2/lvm2/dist/lib/device/dev-io.c:309 /dev/rraid0f:
size is 0 sectors
#/usr/src/external/gpl2/lvm2/dist/lib/metadata/metadata.c:1535 /dev/rraid0f:
Size must exceed minimum of 1024 sectors.
#/usr/src/external/gpl2/lvm2/dist/lib/metadata/metadata.c:1393 Failed to
setup physical volume "/dev/rraid0f"
#/usr/src/external/gpl2/lvm2/dist/tools/pvcreate.c:105 <backtrace>
#/usr/src/external/gpl2/lvm2/dist/lib/locking/file_locking.c:76 Unlocking
/var/lock/lvm/P_orphans
#/usr/src/external/gpl2/lvm2/dist/lib/locking/file_locking.c:53
_undo_flock /var/lock/lvm/P_orphans
>How-To-Repeat:
Try to create a physical volume on a device, which does not support
DIOCGWEDGEINFO ioctls. (same effect for example, if you are using a vnd...)
>Fix:
partutil.c does contain some code (getdiskinfo), where partition sizes are
calculated via struct disklabel and partition.
IMHO, that code would give better results.
Anonother option might be, to utilize partutil.c directly in dev-io.c at let
partutil do the work.
Home |
Main Index |
Thread Index |
Old Index