Message ID | 20171102000511.29106-1-ddiss@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Nov 2, 2017 at 1:05 AM, David Disseldorp <ddiss@suse.de> wrote: > RBD devices are currently incorrectly initialised with the block queue > discard_alignment set to the underlying RADOS object size. > > As per Documentation/ABI/testing/sysfs-block: > The discard_alignment parameter indicates how many bytes the beginning > of the device is offset from the internal allocation unit's natural > alignment. > > Correcting the discard_alignment parameter from the RADOS object size to > zero (the blk_set_default_limits() default) has no effect on how discard > requests are propagated through the block layer - @alignment in > __blkdev_issue_discard() remains zero. However, it does fix the UNMAP > granularity alignment value advertised to SCSI initiators via the Block > Limits VPD. > > Signed-off-by: David Disseldorp <ddiss@suse.de> > --- > drivers/block/rbd.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c > index b640ad8a6d20..016542c75e1f 100644 > --- a/drivers/block/rbd.c > +++ b/drivers/block/rbd.c > @@ -4423,7 +4423,6 @@ static int rbd_init_disk(struct rbd_device *rbd_dev) > /* enable the discard support */ > queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, q); > q->limits.discard_granularity = segment_size; > - q->limits.discard_alignment = segment_size; > blk_queue_max_discard_sectors(q, segment_size / SECTOR_SIZE); > blk_queue_max_write_zeroes_sectors(q, segment_size / SECTOR_SIZE); LGTM, applied. Thanks, Ilya -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index b640ad8a6d20..016542c75e1f 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -4423,7 +4423,6 @@ static int rbd_init_disk(struct rbd_device *rbd_dev) /* enable the discard support */ queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, q); q->limits.discard_granularity = segment_size; - q->limits.discard_alignment = segment_size; blk_queue_max_discard_sectors(q, segment_size / SECTOR_SIZE); blk_queue_max_write_zeroes_sectors(q, segment_size / SECTOR_SIZE);
RBD devices are currently incorrectly initialised with the block queue discard_alignment set to the underlying RADOS object size. As per Documentation/ABI/testing/sysfs-block: The discard_alignment parameter indicates how many bytes the beginning of the device is offset from the internal allocation unit's natural alignment. Correcting the discard_alignment parameter from the RADOS object size to zero (the blk_set_default_limits() default) has no effect on how discard requests are propagated through the block layer - @alignment in __blkdev_issue_discard() remains zero. However, it does fix the UNMAP granularity alignment value advertised to SCSI initiators via the Block Limits VPD. Signed-off-by: David Disseldorp <ddiss@suse.de> --- drivers/block/rbd.c | 1 - 1 file changed, 1 deletion(-)