• Parav Pandit's avatar
    RDMA/core: Introduce a helper function to change net namespace of rdma device · decbc7a6
    Parav Pandit authored
    Introduce a helper function that changes rdma device's net namespace which
    performs mini disable/enable sequence to have device visible only in
    assigned net namespace.
    
    Device unregistration, device rename and device change net namespace
    may be invoked concurrently.
    
    (a) device unregistration needs to wait if a device change (rename or net
        namespace change) operation is in progress.
    (b) device net namespace change should not proceed if the unregistration
        has started.
    (c) while one cpu is changing device net namespace, other cpu should not
        be able to rename or change net namespace.
    
    To address above concurrency,
    (a) Use unreg_mutex to synchronize between ib_unregister_device() and net
        namespace change operation
    (b) In cases where unregister_device() has started unregistration before
        change_netns got chance to acquire unreg_mutex, validate the refcount
        - if it dropped to zero, abort the net namespace change operation.
    
    Finally use the helper function to change net namespace of ib device to
    move the device back to init_net when such net is deleted.
    Signed-off-by: default avatarParav Pandit <parav@mellanox.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    decbc7a6
device.c 65 KB