• M
    dm: calculate queue limits during resume not load · 754c5fc7
    Mike Snitzer 提交于
    Currently, device-mapper maintains a separate instance of 'struct
    queue_limits' for each table of each device.  When the configuration of
    a device is to be changed, first its table is loaded and this structure
    is populated, then the device is 'resumed' and the calculated
    queue_limits are applied.
    
    This places restrictions on how userspace may process related devices,
    where it is often advantageous to 'load' tables for several devices
    at once before 'resuming' them together.  As the new queue_limits
    only take effect after the 'resume', if they are changing and one
    device uses another, the latter must be 'resumed' before the former
    may be 'loaded'.
    
    This patch moves the calculation of these queue_limits out of
    the 'load' operation into 'resume'.  Since we are no longer
    pre-calculating this struct, we no longer need to maintain copies
    within our dm structs.
    
    dm_set_device_limits() now passes the 'start' of the device's
    data area (aka pe_start) as the 'offset' to blk_stack_limits().
    
    init_valid_queue_limits() is replaced by blk_set_default_limits().
    Signed-off-by: NMike Snitzer <snitzer@redhat.com>
    Cc: martin.petersen@oracle.com
    Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
    754c5fc7
device-mapper.h 10.3 KB