On Tue, Aug 23, 2022 at 11:38:26AM +0200, Dominik 'Rathann' Mierzejewski wrote:
> I'd suggest doing a mock, copr or scratch build and running abipkgdiff
> comparing current rawhide and the updated binary packages. It'll tell
> you if there are any subtle ABI differences.

Here's a scratch build:

  https://koji.fedoraproject.org/koji/taskinfo?taskID=91169327

The differences are:

$ abipkgdiff liburing-2.0-4.fc37.x86_64.rpm liburing-2.2-1.fc38.x86_64.rpm 
--devel-pkg1 liburing-devel-2.0-4.fc37.x86_64.rpm --devel-pkg2 
liburing-devel-2.2-1.fc38.x86_64.rpm --debug-info-pkg1 
liburing-debuginfo-2.0-4.fc37.x86_64.rpm --debug-info-pkg2 
liburing-debuginfo-2.2-1.fc38.x86_64.rpm

================ changes of 'liburing.so.2.0.0'===============
  Functions changes summary: 0 Removed, 1 Changed (24 filtered out), 16 Added 
functions
  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

  16 Added functions:

    [A] 'function ssize_t io_uring_mlock_size(unsigned int, unsigned int)'    
{io_uring_mlock_size@@LIBURING_2.1}
    [A] 'function ssize_t io_uring_mlock_size_params(unsigned int, 
io_uring_params*)'    {io_uring_mlock_size_params@@LIBURING_2.1}
    [A] 'function int io_uring_register_buf_ring(io_uring*, io_uring_buf_reg*, 
unsigned int)'    {io_uring_register_buf_ring@@LIBURING_2.2}
    [A] 'function int io_uring_register_buffers_sparse(io_uring*, unsigned 
int)'    {io_uring_register_buffers_sparse@@LIBURING_2.2}
    [A] 'function int io_uring_register_buffers_tags(io_uring*, const iovec*, 
const __u64*, unsigned int)'    {io_uring_register_buffers_tags@@LIBURING_2.1}
    [A] 'function int io_uring_register_buffers_update_tag(io_uring*, unsigned 
int, const iovec*, const __u64*, unsigned int)'    
{io_uring_register_buffers_update_tag@@LIBURING_2.1}
    [A] 'function int io_uring_register_files_sparse(io_uring*, unsigned int)'  
  {io_uring_register_files_sparse@@LIBURING_2.2}
    [A] 'function int io_uring_register_files_tags(io_uring*, const int*, const 
__u64*, unsigned int)'    {io_uring_register_files_tags@@LIBURING_2.1}
    [A] 'function int io_uring_register_files_update_tag(io_uring*, unsigned 
int, const int*, const __u64*, unsigned int)'    
{io_uring_register_files_update_tag@@LIBURING_2.1}
    [A] 'function int io_uring_register_iowq_aff(io_uring*, size_t, const 
cpu_set_t*)'    {io_uring_register_iowq_aff@@LIBURING_2.1}
    [A] 'function int io_uring_register_iowq_max_workers(io_uring*, unsigned 
int*)'    {io_uring_register_iowq_max_workers@@LIBURING_2.1}
    [A] 'function int io_uring_register_ring_fd(io_uring*)'    
{io_uring_register_ring_fd@@LIBURING_2.2}
    [A] 'function int io_uring_submit_and_wait_timeout(io_uring*, 
io_uring_cqe**, unsigned int, __kernel_timespec*, sigset_t*)'    
{io_uring_submit_and_wait_timeout@@LIBURING_2.2}
    [A] 'function int io_uring_unregister_buf_ring(io_uring*, int)'    
{io_uring_unregister_buf_ring@@LIBURING_2.2}
    [A] 'function int io_uring_unregister_iowq_aff(io_uring*)'    
{io_uring_unregister_iowq_aff@@LIBURING_2.1}
    [A] 'function int io_uring_unregister_ring_fd(io_uring*)'    
{io_uring_unregister_ring_fd@@LIBURING_2.2}

  1 function with some indirect sub-type change:

    [C] 'function int __io_uring_get_cqe(io_uring*, io_uring_cqe**, unsigned 
int, unsigned int, sigset_t*)' at queue.c:113:1 has some indirect sub-type 
changes:
      parameter 1 of type 'io_uring*' has sub-type changes:
        in pointed to type 'struct io_uring' at liburing.h:77:1:
          type size hasn't changed
          3 data member insertions:
            'int enter_ring_fd', at offset 1632 (in bits) at liburing.h:84:1
            '__u8 int_flags', at offset 1664 (in bits) at liburing.h:85:1
            'unsigned int pad2', at offset 1696 (in bits) at liburing.h:87:1
          2 data member changes (1 filtered):
            type of 'io_uring_sq sq' changed:
              type size hasn't changed
              1 data member change:
                type of 'io_uring_sqe* sqes' changed:
                  in pointed to type 'struct io_uring_sqe' at io_uring.h:21:1:
                    type size hasn't changed
                    4 data member insertions:
                      '__u16 personality', at offset 336 (in bits) at 
io_uring.h:63:1
                      'union {__s32 splice_fd_in; __u32 file_index;}', at 
offset 352 (in bits)
                      '__u64 addr3', at offset 384 (in bits) at io_uring.h:68:1
                      '__u64 __pad2[1]', at offset 448 (in bits) at 
io_uring.h:69:1
                    1 data member changes (1 filtered):
                      anonymous data member at offset 320 (in bits) changed 
from:
                        union {struct {union {__u16 buf_index; __u16 
buf_group;}; __u16 personality; __s32 splice_fd_in;}; __u64 __pad2[3];}
                      to:
                        union {__u16 buf_index; __u16 buf_group;}
                      and size changed from 192 to 16 (in bits) (by -176 bits)
            type of 'unsigned int pad[3]' changed:
              array element type 'unsigned int' changed:
                entity changed from 'unsigned int' to compatible type 'typedef 
__u8' at int-ll64.h:21:1
                  type name changed from 'unsigned int' to 'unsigned char'
                  type size changed from 32 to 8 (in bits)
              type name changed from 'unsigned int[3]' to '__u8[3]'
              array type size changed from 96 to 24
            and offset changed from 1632 to 1672 (in bits) (by +40 bits)
      parameter 2 of type 'io_uring_cqe**' has sub-type changes:
        in pointed to type 'io_uring_cqe*':
          in pointed to type 'struct io_uring_cqe' at io_uring.h:258:1:
            type size hasn't changed
            1 data member insertion:
              '__u64 big_cqe[]', at offset 128 (in bits) at io_uring.h:267:1

================ end of changes of 'liburing.so.2.0.0'===============

I guess we can ignore the added functions as those should always be safe.

The changed function __io_uring_get_cqe is documented in the header
as:

  /*
   * Helper for the peek/wait single cqe functions. Exported because of that,
   * but probably shouldn't be used directly in an application.
   */

I looked at the source of qemu & ceph and neither call this function.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
nbdkit - Flexible, fast NBD server with plugins
https://gitlab.com/nbdkit/nbdkit
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
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@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to