From 847bf7f644ef1c5f61aa1424903be7ae400e82cc Mon Sep 17 00:00:00 2001 From: "Martin K. Petersen" Date: Mon, 11 Jan 2010 03:21:48 -0500 Subject: [PATCH] --- yaml --- r: 179680 b: refs/heads/master c: dd3d145d49c5816b79acc6761ebbd842bc50b0ee h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/block/genhd.c | 2 +- trunk/include/linux/blkdev.h | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index df644fc748a7..a0c034a8f024 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fe0b393f2c0a0d23a9bc9ed7dc51a1ee511098bd +refs/heads/master: dd3d145d49c5816b79acc6761ebbd842bc50b0ee diff --git a/trunk/block/genhd.c b/trunk/block/genhd.c index b11a4ad7d571..d13ba76a169c 100644 --- a/trunk/block/genhd.c +++ b/trunk/block/genhd.c @@ -867,7 +867,7 @@ static ssize_t disk_discard_alignment_show(struct device *dev, { struct gendisk *disk = dev_to_disk(dev); - return sprintf(buf, "%u\n", queue_discard_alignment(disk->queue)); + return sprintf(buf, "%d\n", queue_discard_alignment(disk->queue)); } static DEVICE_ATTR(range, S_IRUGO, disk_range_show, NULL); diff --git a/trunk/include/linux/blkdev.h b/trunk/include/linux/blkdev.h index 9b98173a8184..a41bcc8e140f 100644 --- a/trunk/include/linux/blkdev.h +++ b/trunk/include/linux/blkdev.h @@ -1148,8 +1148,11 @@ static inline int queue_discard_alignment(struct request_queue *q) static inline int queue_sector_discard_alignment(struct request_queue *q, sector_t sector) { - return ((sector << 9) - q->limits.discard_alignment) - & (q->limits.discard_granularity - 1); + struct queue_limits *lim = &q->limits; + unsigned int alignment = (sector << 9) & (lim->discard_granularity - 1); + + return (lim->discard_granularity + lim->discard_alignment - alignment) + & (lim->discard_granularity - 1); } static inline unsigned int queue_discard_zeroes_data(struct request_queue *q)