• M
    block: Deprecate QUEUE_FLAG_CLUSTER and use queue_limits instead · e692cb66
    Martin K. Petersen 提交于
    When stacking devices, a request_queue is not always available. This
    forced us to have a no_cluster flag in the queue_limits that could be
    used as a carrier until the request_queue had been set up for a
    metadevice.
    
    There were several problems with that approach. First of all it was up
    to the stacking device to remember to set queue flag after stacking had
    completed. Also, the queue flag and the queue limits had to be kept in
    sync at all times. We got that wrong, which could lead to us issuing
    commands that went beyond the max scatterlist limit set by the driver.
    
    The proper fix is to avoid having two flags for tracking the same thing.
    We deprecate QUEUE_FLAG_CLUSTER and use the queue limit directly in the
    block layer merging functions. The queue_limit 'no_cluster' is turned
    into 'cluster' to avoid double negatives and to ease stacking.
    Clustering defaults to being enabled as before. The queue flag logic is
    removed from the stacking function, and explicitly setting the cluster
    flag is no longer necessary in DM and MD.
    Reported-by: NEd Lin <ed.lin@promise.com>
    Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
    Acked-by: NMike Snitzer <snitzer@redhat.com>
    Cc: stable@kernel.org
    Signed-off-by: NJens Axboe <jaxboe@fusionio.com>
    e692cb66
dm-table.c 29.0 KB