On Tue, Feb 26, 2019 at 01:56:10PM +0200, Leon Romanovsky wrote: > From: Leon Romanovsky <leonro@xxxxxxxxxxxx> > > Changelog: > v0->v1: > * Rebased. > * rdma_init_coredev is made static > * ib_compat_device is just ib_core_device as id not used. > * Using XA_FLAGS_ALLOC > * Added missing xa_destroy > * Use xa_reserve, xa_store during add_one_compat_dev > * Extra NULL initialization > * No need for locking during xa_alloc > * Put add_remove/compat_devs in enable/disable device > > >From Parav: > > Currently 'infiniband' class is registered as net namespace agnostic > class due to which all rdma devices are visible in all net namespaces. > Due to which net namespace filter needs to be applied on per sysfs > entry such as GID or GID attribute for RoCE. This is fine as long > as there is one rdma device shared among multiple net namespaces. > > However, when there are multiple rdma devices, it is desired to see only > one or more rdma devices per net namespace. With different link layer > types, there are various use case and mode exists. At minimum there are > two use cases. > > (a) a shared rdma device among multiple net namespaces > (b) rdma device bound to a particular net namespace > > In preparation to support backward compatibility to existing use cases > and also to support future (rdma device bound to net namespace), > > 1. Prepare rdma infiniband class to be net namespace aware; So that when > rdma device is bound to a net namespace in future, it can be restricted > to a single net namespace. This requires a class to be net namespace > aware. By doing so, a standard kernel framework of sysfs can be utilized > to isolate devices in net namespaces. > This is similar to how net class is net namespace aware following > standard kernel architecture. > > 2. Replicate the sysfs tree in non init_net namespaces for backward > compatibility, so that existing applications continue to operate in > shared mode. > > This functionality is achieved by ib_core implementing a compat > ib_core_device which replicates the device and sysfs entries in non > init_net namespaces. It is desired to not create a full ib_device, > therefore an internal ib_core_device object is created which represents > only needed device tree and sysfs entries. > > A diagram, details and its objectives are captured in > Documentation/infiniband/core_devices.txt. > > Thanks > > Parav Pandit (5): > RDMA/core: Introduce ib_core_device to hold device > RDMA/core: Restrict sysfs entries view to init_net > RDMA/core: Implement compat device/sysfs tree in net namespace > RDMA/core: Support core port attributes in non init_net Applied to for-next, thanks > RDMA/core: Add Documentation for ib_core_device This didn't seem to add much value, so I dropped it.. Jason