• Boaz Harrosh's avatar
    ore/exofs: Change the type of the devices array (API change) · d866d875
    Boaz Harrosh authored
    In the pNFS obj-LD the device table at the layout level needs
    to point to a device_cache node, where it is possible and likely
    that many layouts will point to the same device-nodes.
    
    In Exofs we have a more orderly structure where we have a single
    array of devices that repeats twice for a round-robin view of the
    device table
    
    This patch moves to a model that can be used by the pNFS obj-LD
    where struct ore_components holds an array of ore_dev-pointers.
    (ore_dev is newly defined and contains a struct osd_dev *od
     member)
    
    Each pointer in the array of pointers will point to a bigger
    user-defined dev_struct. That can be accessed by use of the
    container_of macro.
    
    In Exofs an __alloc_dev_table() function allocates the
    ore_dev-pointers array as well as an exofs_dev array, in one
    allocation and does the addresses dance to set everything pointing
    correctly. It still keeps the double allocation trick for the
    inodes round-robin view of the table.
    
    The device table is always allocated dynamically, also for the
    single device case. So it is unconditionally freed at umount.
    Signed-off-by: default avatarBoaz Harrosh <bharrosh@panasas.com>
    d866d875
super.c 27.4 KB