lkml.org 
[lkml]   [2010]   [Jan]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[23/29] DM: Fix device mapper topology stacking
    2.6.32-stable review patch.  If anyone has any objections, please let us know.

    ------------------
    From: Martin K. Petersen <martin.petersen@oracle.com>

    commit b27d7f16d3c6c27345d4280a739809c1c2c4c0b5 upstream.

    Make DM use bdev_stack_limits() function so that partition offsets get
    taken into account when calculating alignment. Clarify stacking
    warnings.

    Also remove obsolete clearing of final alignment_offset and misalignment
    flag.

    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Cc: Alasdair G. Kergon <agk@redhat.com>
    Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/md/dm-table.c | 20 +++++---------------
    1 file changed, 5 insertions(+), 15 deletions(-)
    --- a/drivers/md/dm-table.c
    +++ b/drivers/md/dm-table.c
    @@ -499,16 +499,15 @@ int dm_set_device_limits(struct dm_targe
    return 0;
    }

    - if (blk_stack_limits(limits, &q->limits, start << 9) < 0)
    - DMWARN("%s: target device %s is misaligned: "
    + if (bdev_stack_limits(limits, bdev, start) < 0)
    + DMWARN("%s: adding target device %s caused an alignment inconsistency: "
    "physical_block_size=%u, logical_block_size=%u, "
    "alignment_offset=%u, start=%llu",
    dm_device_name(ti->table->md), bdevname(bdev, b),
    q->limits.physical_block_size,
    q->limits.logical_block_size,
    q->limits.alignment_offset,
    - (unsigned long long) start << 9);
    -
    + (unsigned long long) start << SECTOR_SHIFT);

    /*
    * Check if merge fn is supported.
    @@ -1025,9 +1024,9 @@ combine_limits:
    * for the table.
    */
    if (blk_stack_limits(limits, &ti_limits, 0) < 0)
    - DMWARN("%s: target device "
    + DMWARN("%s: adding target device "
    "(start sect %llu len %llu) "
    - "is misaligned",
    + "caused an alignment inconsistency",
    dm_device_name(table->md),
    (unsigned long long) ti->begin,
    (unsigned long long) ti->len);
    @@ -1079,15 +1078,6 @@ void dm_table_set_restrictions(struct dm
    struct queue_limits *limits)
    {
    /*
    - * Each target device in the table has a data area that should normally
    - * be aligned such that the DM device's alignment_offset is 0.
    - * FIXME: Propagate alignment_offsets up the stack and warn of
    - * sub-optimal or inconsistent settings.
    - */
    - limits->alignment_offset = 0;
    - limits->misaligned = 0;
    -
    - /*
    * Copy table's limits to the DM device's request_queue
    */
    q->limits = *limits;



    \
     
     \ /
      Last update: 2010-01-23 01:25    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean