mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
block: add a bdev_discard_granularity helper
Abstract away implementation details from file systems by providing a block_device based helper to retrieve the discard granularity. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Acked-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com> [drbd] Acked-by: Ryusuke Konishi <konishi.ryusuke@gmail.com> Acked-by: David Sterba <dsterba@suse.com> [btrfs] Link: https://lore.kernel.org/r/20220415045258.199825-26-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
committed by
Jens Axboe
parent
70200574cc
commit
7b47ef52d0
@@ -1425,7 +1425,6 @@ static void sanitize_disk_conf(struct drbd_device *device, struct disk_conf *dis
|
||||
struct drbd_backing_dev *nbc)
|
||||
{
|
||||
struct block_device *bdev = nbc->backing_bdev;
|
||||
struct request_queue *q = bdev->bd_disk->queue;
|
||||
|
||||
if (disk_conf->al_extents < DRBD_AL_EXTENTS_MIN)
|
||||
disk_conf->al_extents = DRBD_AL_EXTENTS_MIN;
|
||||
@@ -1442,12 +1441,14 @@ static void sanitize_disk_conf(struct drbd_device *device, struct disk_conf *dis
|
||||
if (disk_conf->rs_discard_granularity) {
|
||||
int orig_value = disk_conf->rs_discard_granularity;
|
||||
sector_t discard_size = bdev_max_discard_sectors(bdev) << 9;
|
||||
unsigned int discard_granularity = bdev_discard_granularity(bdev);
|
||||
int remainder;
|
||||
|
||||
if (q->limits.discard_granularity > disk_conf->rs_discard_granularity)
|
||||
disk_conf->rs_discard_granularity = q->limits.discard_granularity;
|
||||
if (discard_granularity > disk_conf->rs_discard_granularity)
|
||||
disk_conf->rs_discard_granularity = discard_granularity;
|
||||
|
||||
remainder = disk_conf->rs_discard_granularity % q->limits.discard_granularity;
|
||||
remainder = disk_conf->rs_discard_granularity %
|
||||
discard_granularity;
|
||||
disk_conf->rs_discard_granularity += remainder;
|
||||
|
||||
if (disk_conf->rs_discard_granularity > discard_size)
|
||||
|
||||
Reference in New Issue
Block a user