• Jason Gunthorpe's avatar
    IB/uverbs: Move the FD uobj type struct file allocation to alloc_commit · aba94548
    Jason Gunthorpe authored
    Allocating the struct file during alloc_begin creates this strange
    asymmetry with IDR, where the FD has two krefs pointing at it during the
    pre-commit phase. In particular this makes the abort process for FD very
    strange and confusing.
    
    For instance abort currently calls the type's destroy_object twice, and
    the fops release once if abort is done. This is very counter intuitive. No
    fops should be called until alloc_commit succeeds, and destroy_object
    should only ever be called once.
    
    Moving the struct file allocation to the alloc_commit is now simple, as we
    already support failure of rdma_alloc_commit_uobject, with all the
    required rollback pieces.
    
    This creates an understandable symmetry with IDR and simplifies/fixes the
    abort handling for FD types.
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    aba94548
rdma_core.c 24.8 KB