• Jiri Pirko's avatar
    devlink: introduce object and nested devlink relationship infra · c137743b
    Jiri Pirko authored
    It is a bit tricky to maintain relationship between devlink objects and
    nested devlink instances due to following aspects:
    
    1) Locking. It is necessary to lock the devlink instance that contains
       the object first, only after that to lock the nested instance.
    2) Lifetimes. Objects (e.g devlink port) may be removed before
       the nested devlink instance.
    3) Notifications. If nested instance changes (e.g. gets
       registered/unregistered) the nested-in object needs to send
       appropriate notifications.
    
    Resolve this by introducing an xarray that holds 1:1 relationships
    between devlink object and related nested devlink instance.
    Use that xarray index to get the object/nested devlink instance on
    the other side.
    
    Provide necessary helpers:
    devlink_rel_nested_in_add/clear() to add and clear the relationship.
    devlink_rel_nested_in_notify() to call the nested-in object to send
    	notifications during nested instance register/unregister/netns
    	change.
    devlink_rel_devlink_handle_put() to be used by nested-in object fill
    	function to fill the nested handle.
    Signed-off-by: default avatarJiri Pirko <jiri@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c137743b
dev.c 36.1 KB