lkml.org 
[lkml]   [2010]   [Jan]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[06/30] block: Fix incorrect reporting of partition alignment
    2.6.32-stable review patch.  If anyone has any objections, please let us know.

    ------------------

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

    commit 81744ee44ab2845c16ffd7d6f762f7b4a49a4750 upstream

    queue_sector_alignment_offset returned the wrong value which caused
    partitions to report an incorrect alignment_offset. Since offset
    calculation is needed several places it has been split into a separate
    helper function.

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

    ---
    include/linux/blkdev.h | 11 +++++++++--
    1 file changed, 9 insertions(+), 2 deletions(-)

    --- a/include/linux/blkdev.h
    +++ b/include/linux/blkdev.h
    @@ -1114,11 +1114,18 @@ static inline int queue_alignment_offset
    return q->limits.alignment_offset;
    }

    +static inline int queue_limit_alignment_offset(struct queue_limits *lim, sector_t offset)
    +{
    + unsigned int granularity = max(lim->physical_block_size, lim->io_min);
    +
    + offset &= granularity - 1;
    + return (granularity + lim->alignment_offset - offset) & (granularity - 1);
    +}
    +
    static inline int queue_sector_alignment_offset(struct request_queue *q,
    sector_t sector)
    {
    - return ((sector << 9) - q->limits.alignment_offset)
    - & (q->limits.io_min - 1);
    + return queue_limit_alignment_offset(&q->limits, sector << 9);
    }

    static inline int bdev_alignment_offset(struct block_device *bdev)



    \
     
     \ /
      Last update: 2010-01-21 05:27    [W:0.025 / U:1.340 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site