Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 722672 - dev-libs/libaio: broken on x32, causes sys-fs/lvm2 runtime failure
Summary: dev-libs/libaio: broken on x32, causes sys-fs/lvm2 runtime failure
Status: UNCONFIRMED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: AMD64 Linux
: Low major (vote)
Assignee: Gentoo's Team for Core System packages
URL:
Whiteboard:
Keywords: PATCH
Depends on:
Blocks: x32
  Show dependency tree
 
Reported: 2020-05-12 11:09 UTC by burak
Modified: 2024-03-04 11:32 UTC (History)
5 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
emerge --info (emerge-info,4.98 KB, text/plain)
2020-05-12 11:09 UTC, burak
Details
qlist -ISRv (qlist-isrv,8.61 KB, text/plain)
2020-05-12 11:10 UTC, burak
Details
proposed patch for libaio (libaio-x32.patch,1.50 KB, patch)
2024-03-03 03:36 UTC, Andrii Batyiev
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description burak 2020-05-12 11:09:56 UTC
Created attachment 638422 [details]
emerge --info

Hi,

x32-lvm2 doesn't work properly on x32 ABI. I've created simple 
test system with latest x32 stage3 image (which is stage3-x32-20200422T214502Z.tar.xz right now) with sys-kernel/gentoo-kernel-bin on my qemu system.


x32test ~ # truncate -s 4G test.img
x32test ~ # losetup -f test.img 
x32test ~ # 
x32test ~ # losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE      DIO LOG-SEC
/dev/loop0         0      0         0  0 /root/test.img   0     512
x32test ~ # 
x32test ~ # 
x32test ~ # pvcreate /dev/loop0
  WARNING: Failed to connect to lvmetad. Falling back to device scanning.
  Error reading device /dev/loop0 at 0 length 4096.
  Error reading device /dev/sda at 0 length 512.
  Error reading device /dev/sda at 0 length 4096.
  Error reading device /dev/sda1 at 0 length 4096.
  Error reading device /dev/root at 0 length 4096.
  Device /dev/loop0 excluded by a filter.
x32test ~ # 
x32test ~ # lvm
lvm> lvs
  WARNING: Failed to connect to lvmetad. Falling back to device scanning.
lvm> vgs
lvm> pvs
  Error reading device /dev/loop0 at 0 length 4096.
  Error reading device /dev/sda at 0 length 512.
  Error reading device /dev/sda at 0 length 4096.
  Error reading device /dev/sda1 at 0 length 4096.
  Error reading device /dev/root at 0 length 4096.
lvm> exit
  Exiting.
x32test ~ # /etc/init.d/lvmetad start
 * Starting lvmetad ...                                                                                                                                           [ ok ]
x32test ~ # pvcreate /dev/loop0
  Error reading device /dev/loop0 at 0 length 4096.
  Error reading device /dev/loop0 at 0 length 4096.
  Error reading device /dev/sda at 0 length 512.
  Error reading device /dev/sda at 0 length 4096.
  Error reading device /dev/sda1 at 0 length 4096.
  Error reading device /dev/root at 0 length 4096.
  Device /dev/loop0 excluded by a filter.
x32test ~ # 


lvm dev filter is gentoo default filter which works on loop* devices (excluded by the filter)

x32test ~ # lvmconfig  --typeconfig diff
devices {
	filter=["r|/dev/nbd.*|","a/.*/"]
}
x32test ~ # 


and its use flags

x32test ~ # emerge lvm2 -v1p

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] sys-fs/lvm2-2.02.187-r2::gentoo  USE="readline thin udev -device-mapper-only -lvm2create_initrd -sanlock (-selinux) -static -static-libs -systemd" 0 KiB
Comment 1 burak 2020-05-12 11:10:36 UTC
Created attachment 638424 [details]
qlist -ISRv
Comment 2 burak 2020-05-12 12:00:01 UTC
It seems, this is libaio issue FEATURES=test dev-libs/libaio-0.3.110:0 failed with only x32 abi. When the, testing version of libaio emerged,

ACCEPT_KEYWORDS=~amd64 FEATURES=test emerge libaio -v1a

x32 tests failed with mem allocs fails, however lvm2 works on sync-io


x32test ~ # truncate -s 4G test.img
x32test ~ # losetup -f test.img 
x32test ~ # losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE      DIO LOG-SEC
/dev/loop0         0      0         0  0 /root/test.img   0     512
x32test ~ # pvcreate  /dev/loop0
  WARNING: Failed to connect to lvmetad. Falling back to device scanning.
  Failed to set up async io, using sync io.
  Physical volume "/dev/loop0" successfully created.
x32test ~ # 
x32test ~ # pvs
  WARNING: Failed to connect to lvmetad. Falling back to device scanning.
  Failed to set up async io, using sync io.
  PV         VG Fmt  Attr PSize PFree
  /dev/loop0    lvm2 ---  4.00g 4.00g
x32test ~ # qlist -ISv lvm2 libaio
dev-libs/libaio-0.3.112:0
sys-fs/lvm2-2.02.187-r2:0
Comment 3 Mike Gilbert gentoo-dev 2020-05-13 23:29:08 UTC
Making this low priority since I doubt anyone uses x32 for real work.

Patches welcome.
Comment 4 Andrii Batyiev 2024-03-03 03:36:05 UTC
Created attachment 886569 [details, diff]
proposed patch for libaio

It seems like underlying issue is problems with libaio, here is the patch that fixes:
1. wrong syscall numbers
2. problem with variable sizes (32 vs 64)

It passes tests (FEATURES=test) now.

Upstream is dead though.
Comment 5 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2024-03-04 11:31:53 UTC
(In reply to Andrii Batyiev from comment #4)
> Created attachment 886569 [details, diff] [details, diff]
> proposed patch for libaio
> 
> It seems like underlying issue is problems with libaio, here is the patch
> that fixes:
> 1. wrong syscall numbers
> 2. problem with variable sizes (32 vs 64)
> 
> It passes tests (FEATURES=test) now.
> 
> Upstream is dead though.

I don't suppose you could try submit it at https://pagure.io/libaio/pull-requests, just so we have a reference for it?