Re: liburing update

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 23, 2022 at 10:24:50AM +0100, Richard W.M. Jones wrote:
> io_uring (https://en.wikipedia.org/wiki/Io_uring) is an important
> kernel facility, essentially an alternate way of dispatching system
> calls more efficiently.  It's used in a lot of high performance
> situations.  Although you can talk to it directly, most users should
> be using liburing, a C library.
> 
> We haven't updated liburing for "a while", since April 2021 to
> liburing 2.0.  There have been several upstream versions since then,
> the latest is liburing 2.2, released in June.
> 
> In theory this version is compatible and uses symbol versions:
> 
> $ rpm -q --provides liburing
> liburing = 2.2-1.fc38
> liburing(x86-64) = 2.2-1.fc38
> liburing.so.2()(64bit)
> liburing.so.2(LIBURING_2.0)(64bit)
> liburing.so.2(LIBURING_2.1)(64bit)
> liburing.so.2(LIBURING_2.2)(64bit)
> 
> so in theory this is not an ABI break.  In practice I'm told that the
> API of liburing is not very stable.

Indeed, while it is perhaps ABI comaptible, it wasn't fully API
compatible, as the 2.2 changes broke QEMU builds when using -Werror
due to changed data type sizes. See this upstream QEMU fix (should
already be in version of QEMU in Fedora):

  commit 8a947c7a586e16a048894e1a0a73d154435e90ef
  Author: Haiyue Wang <haiyue.wang@xxxxxxxxx>
  Date:   Tue Feb 22 00:24:01 2022 +0800

    aio-posix: fix build failure io_uring 2.2
    
    The io_uring fixed "Don't truncate addr fields to 32-bit on 32-bit":
    https://git.kernel.dk/cgit/liburing/commit/?id=d84c29b19ed0b130000619cff40141bb1fc3615b
    
    This leads to build failure:
    ../util/fdmon-io_uring.c: In function ‘add_poll_remove_sqe’:
    ../util/fdmon-io_uring.c:182:36: error: passing argument 2 of ‘io_uring_prep_poll_remove’ makes integer from pointer without a cast [-Werror=int-conversion]
      182 |     io_uring_prep_poll_remove(sqe, node);
          |                                    ^~~~
          |                                    |
          |                                    AioHandler *
    In file included from /root/io/qemu/include/block/aio.h:18,
                     from ../util/aio-posix.h:20,
                     from ../util/fdmon-io_uring.c:49:
    /usr/include/liburing.h:415:17: note: expected ‘__u64’ {aka ‘long long unsigned int’} but argument is of type ‘AioHandler *’
      415 |           __u64 user_data)
          |           ~~~~~~^~~~~~~~~
    cc1: all warnings being treated as errors
    
    Use LIBURING_HAVE_DATA64 to check whether the io_uring supports 64-bit
    variants of the get/set userdata, to convert the paramter to the right
    data type.
    
    Signed-off-by: Haiyue Wang <haiyue.wang@xxxxxxxxx>
    Message-Id: <20220221162401.45415-1-haiyue.wang@xxxxxxxxx>
    Signed-off-by: Stefan Hajnoczi <stefanha@xxxxxxxxxx>



> TBH I don't really know how best to test this except to just do it.
> The packages that depend on liburing shouldn't have any RPM dependency
> problems (I already installed the update on my Rawhide machine), but
> it's possible they might break in subtle ways, which is in a way
> worse.  They are:

I think the respective package maintainers just need to be aware of
the change and do whatever testing they feel is needed. Ideally the
respective upstream projects ought to already be doing CI covering
this kind of scenario. I don't think its reasonable to expect the
distro maintainers of liburing to do comprehensive testing of each
of these consumers, given their broad scope & complexity.

> - ceph
> - folly
> - glusterfs
> - plocate
> - qemu
> - raft
> - rocksdb
> - root
> - samba
> 
> (so nothing important!)
> 
> I have the update prepared and ready to push to Rawhide, but open to
> suggestions if there is a better way to do this.

At least with QEMU any usage of liburing is strictly opt-in per-VM
disk configuration, and I expect the number of people who've done
so is close to zero.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux