Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 1684298 - glusterfs 6 changed API, qemu needs adjustments
Summary: glusterfs 6 changed API, qemu needs adjustments
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: qemu
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Fedora Virtualization Maintainers
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 1684500 (view as bug list)
Depends On:
Blocks: 1684496 1684500
TreeView+ depends on / blocked
 
Reported: 2019-02-28 22:17 UTC by Cole Robinson
Modified: 2019-03-25 15:40 UTC (History)
16 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 1684496 1684500 (view as bug list)
Environment:
Last Closed: 2019-03-25 15:40:36 UTC


Attachments (Terms of Use)

Description Cole Robinson 2019-02-28 22:17:42 UTC
qemu fails to rebuild in rawhide, seems like glusterfs related issues, using 6.0-0.1.rc0.fc31

https://koji.fedoraproject.org/koji/taskinfo?taskID=33109555
https://kojipkgs.fedoraproject.org//work/tasks/9555/33109555/build.log

A few example errors below. Any idea what's going on here?

BUILDSTDERR: /builddir/build/BUILD/qemu-3.1.0/block/gluster.c: In function 'qemu_gluster_co_pwrite_zeroes':
BUILDSTDERR: /builddir/build/BUILD/qemu-3.1.0/block/gluster.c:994:52: warning: passing argument 4 of 'glfs_zerofill_async' from incompatible pointer type [-Wincompatible-pointer-types]
BUILDSTDERR:   994 |     ret = glfs_zerofill_async(s->fd, offset, size, gluster_finish_aiocb, &acb);
BUILDSTDERR:       |                                                    ^~~~~~~~~~~~~~~~~~~~
BUILDSTDERR:       |                                                    |
BUILDSTDERR:       |                                                    void (*)(struct glfs_fd *, ssize_t,  void *) {aka void (*)(struct glfs_fd *, long int,  void *)}
BUILDSTDERR: In file included from /builddir/build/BUILD/qemu-3.1.0/block/gluster.c:12:
BUILDSTDERR: /usr/include/glusterfs/api/glfs.h:993:73: note: expected 'glfs_io_cbk' {aka 'void (*)(struct glfs_fd *, long int,  struct glfs_stat *, struct glfs_stat *, void *)'} but argument is of type 'void (*)(struct glfs_fd *, ssize_t,  void *)' {aka 'void (*)(struct glfs_fd *, long int,  void *)'}
BUILDSTDERR:   993 | glfs_zerofill_async(glfs_fd_t *fd, off_t length, off_t len, glfs_io_cbk fn,
BUILDSTDERR:       |                                                             ~~~~~~~~~~~~^~
BUILDSTDERR: /builddir/build/BUILD/qemu-3.1.0/block/gluster.c: In function 'qemu_gluster_do_truncate':
BUILDSTDERR: /builddir/build/BUILD/qemu-3.1.0/block/gluster.c:1035:13: error: too few arguments to function 'glfs_ftruncate'
BUILDSTDERR:  1035 |         if (glfs_ftruncate(fd, offset)) {

Comment 1 Kaleb KEITHLEY 2019-03-01 11:44:13 UTC
Nope. It's not a bug in glusterfs.

qemu needs to fix its call to glfs_ftruncate() to add the missing parameter.

GlusterFS uses versioned symbols in libgfapi.  Old programs compiled & linked against an older libgfapi.so will continue to work with a new libgfapi.so, but when (re)compiling with the new library you have to keep up with the API changes.

I will be closing this aa NOTABUG in a few days.

Comment 2 Daniel Berrange 2019-03-01 11:50:34 UTC
So glusterfs is intentionally breaking API ?  That is really unpleasant behaviour as it means all existing releases of QEMU are broken with latest glusterfs.

Would be much better to just add glfs_ftruncate2() alongside the existing API if it needed extra parameters to avoid needlessly breaking applications.

Comment 3 Kaleb KEITHLEY 2019-03-01 14:42:23 UTC
GlusterFS is intentionally following the design decisions that were taken several years ago and well publicized at the time. Namely that the API will not be bloated with multiple versions of functions like foo(), foo2(), ... foo27().

The ABI is maintained with versioned symbols. No promise was ever made or implied WRT the API. The alternative was that the SO_VERSION/SO_NAME was going to be bumped every time the API changed. Doing that breaks both the API and the ABI. That's even more unpleasant for existing releases of QEMU and all the other users of gfapi.

If you're unhappy with this, I suggest taking this up with the GlusterFS community by opening a BZ against Gluster itself (https://bugzilla.redhat.com/enter_bug.cgi?product=GlusterFS) or by sending email to devel@gluster.org.

Comment 4 Cole Robinson 2019-03-03 22:40:25 UTC
I'm struggling to even get a rawhide setup with latest glusterfs installed, it's dependent on new readline as part of a huge rebuild but none of the packages seem to be in any stock fedora repos. So I'm disabling qemu gluster bits for now just to get something building: lack of qemu is blocking someones compose, I'm getting mails about it

Comment 5 Kaleb KEITHLEY 2019-03-05 12:03:31 UTC
Igor,

I can't install this on f30 either, due to dnf is still compiled with readline-7.

Any idea when dnf will be recompiled with readline-8?

Thanks

Comment 6 Igor Gnatenko 2019-03-05 12:52:47 UTC
What exactly depends on readline-7? Can you post more information? Every critical component was rebuilt with readline-8.

Comment 7 Kaleb KEITHLEY 2019-03-05 13:37:21 UTC
dnf. dnf requires readline-7.0. See comment 5. You built readline-8.0 in f30 on 17 Feb., but the latest build of dnf in f30 was by pkratoch  on 13 Feb.  Also lvm2 requires readline-7.0.

Is there something borked in the f30/rawhide repos? I've been running this f30/rawhide box for a while now and updating it frequently.I am not the only one experiencing this, see comment 4.

(My build of glusterfs-6.0-0.1.rc0 on f30 was built on 1 Mar. with readline-8.0)

On my f30/rawhide box:

$ rpm -q readline
readline-7.0-13.fc30.x86_64

$ sudo dnf update -y readline
Last metadata expiration check: 1:56:08 ago on Tue 05 Mar 2019 06:06:46 AM EST.
Dependencies resolved.
Nothing to do.
Complete!

$sudo dnf update --allowerasing -y readline-8.0-2.fc30.x86_64.rpm
Dependencies resolved.

 Problem: The operation would result in removing the following protected packages: dnf
====================================================================================
 Package           Architecture    Version              Repository             Size
====================================================================================
Skipping packages with conflicts:
(add '--best' to command line to force their upgrade):
 readline          x86_64          8.0-2.fc30           @commandline          191 k

Transaction Summary
====================================================================================
Skip  1 Package

Nothing to do.
Complete!

and even:
$ sudo dnf update --allowerasing --best -y readline-8.0-2.fc30.x86_64.rpm
Last metadata expiration check: 2:08:56 ago on Tue 05 Mar 2019 06:06:46 AM EST.
Error: 
 Problem: The operation would result in removing the following protected packages: dnf
(try to add '--skip-broken' to skip uninstallable packages)


All this because (after manually downloading gluster rpms because dnf is not seeing them in the repo):
$ sudo dnf install -y glusterfs*-6.0-0.1.rc0.fc30.x86_64.rpm python3-gluster-6.0-0.1.rc0.fc30.x86_64.rpm 
Last metadata expiration check: 2:12:06 ago on Tue 05 Mar 2019 06:06:46 AM EST.
Error: 
 Problem 1: conflicting requests
  - nothing provides libreadline.so.8()(64bit) needed by glusterfs-cli-6.0-0.1.rc0.fc30.x86_64
 Problem 2: conflicting requests
  - nothing provides libreadline.so.8()(64bit) needed by glusterfs-server-6.0-0.1.rc0.fc30.x86_64
(try to add '--skip-broken' to skip uninstallable packages)


or (after also manually downloading readline-8.0 because dnf is also not seeing it in the repo, see above):

$ sudo dnf install --allowerasing -y glusterfs*-6.0-0.1.rc0.fc30.x86_64.rpm python3-gluster-6.0-0.1.rc0.fc30.x86_64.rpm readline-8.0-2.fc30.x86_64.rpm
Last metadata expiration check: 2:14:45 ago on Tue 05 Mar 2019 06:06:46 AM EST.
Error: 
 Problem 1: package glusterfs-server-6.0-0.1.rc0.fc30.x86_64 requires lvm2, but none of the providers can be installed
  - package lvm2-2.02.183-2.fc30.x86_64 requires libreadline.so.7()(64bit), but none of the providers can be installed
  - cannot install both readline-8.0-2.fc30.x86_64 and readline-7.0-13.fc30.x86_64
  - conflicting requests
 Problem 2: python3-3.7.2-6.fc30.i686 has inferior architecture
  - package python3-gluster-6.0-0.1.rc0.fc30.x86_64 requires python3, but none of the providers can be installed
  - package python3-gluster-6.0-0.1.rc0.fc30.x86_64 requires python(abi) = 3.7, but none of the providers can be installed
  - package python3-3.7.2-6.fc30.x86_64 requires libpython3.7m.so.1.0()(64bit), but none of the providers can be installed
  - package python3-3.7.2-6.fc30.x86_64 requires python3-libs(x86-64) = 3.7.2-6.fc30, but none of the providers can be installed
  - package python3-libs-3.7.2-6.fc30.x86_64 requires libreadline.so.7()(64bit), but none of the providers can be installed
  - cannot install both readline-8.0-2.fc30.x86_64 and readline-7.0-13.fc30.x86_64
  - package glusterfs-cli-6.0-0.1.rc0.fc30.x86_64 requires libreadline.so.8()(64bit), but none of the providers can be installed
  - conflicting requests
(try to add '--skip-broken' to skip uninstallable packages)

Comment 8 Igor Gnatenko 2019-03-05 13:41:32 UTC
>  - package python3-libs-3.7.2-6.fc30.x86_64 requires libreadline.so.7()(64bit), but none of the providers can be installed

This is the key here. But this one was built with new readline -- python3-3.7.2-7.fc30.

---

Which repos do you use?

Comment 9 Kaleb KEITHLEY 2019-03-05 14:08:52 UTC
fedora-rawhide[rawhide] (and fedora-rawhide-modular) as installed when I originally installed this f30/rawhide box.

I've tried enabling fedora-updates and fedora-updates-testing; no diff

Comment 10 Igor Gnatenko 2019-03-05 14:29:07 UTC
There was no successful compose since then. You can use koji repo:

[koji]
name=Koji $releasever - $basearch
baseurl=https://kojipkgs.fedoraproject.org/repos/f$releasever-build/latest/$basearch/
enabled=1
metadata_expire=1h
gpgcheck=0

Comment 11 Kaleb KEITHLEY 2019-03-05 15:19:11 UTC
That works. Thanks.

Comment 12 Niels de Vos 2019-03-05 15:50:55 UTC
Patches have been posted: https://lists.nongnu.org/archive/html/qemu-block/2019-03/msg00083.html

Comment 13 Cole Robinson 2019-03-20 23:37:02 UTC
*** Bug 1684500 has been marked as a duplicate of this bug. ***

Comment 15 Cole Robinson 2019-03-25 15:40:36 UTC
Rawhide has these patches now, as does the pending f30 update, so closing


Note You need to log in before you can comment on or make changes to this bug.