drbd: split out a drbd_discard_supported helper
Add a helper to check if discard is supported for a given connection / backing device combination. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Philipp Reisner <philipp.reisner@linbit.com> Reviewed-by: Lars Ellenberg <lars.ellenberg@linbit.com> Tested-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com> Link: https://lore.kernel.org/r/20240306140332.623759-7-philipp.reisner@linbit.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
e3992e02c9
commit
5eaee6e9c8
|
@ -1231,6 +1231,22 @@ static unsigned int drbd_max_discard_sectors(struct drbd_connection *connection)
|
|||
return AL_EXTENT_SIZE >> 9;
|
||||
}
|
||||
|
||||
static bool drbd_discard_supported(struct drbd_connection *connection,
|
||||
struct drbd_backing_dev *bdev)
|
||||
{
|
||||
if (bdev && !bdev_max_discard_sectors(bdev->backing_bdev))
|
||||
return false;
|
||||
|
||||
if (connection->cstate >= C_CONNECTED &&
|
||||
!(connection->agreed_features & DRBD_FF_TRIM)) {
|
||||
drbd_info(connection,
|
||||
"peer DRBD too old, does not support TRIM: disabling discards\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static void decide_on_discard_support(struct drbd_device *device,
|
||||
struct drbd_backing_dev *bdev)
|
||||
{
|
||||
|
@ -1239,16 +1255,9 @@ static void decide_on_discard_support(struct drbd_device *device,
|
|||
struct request_queue *q = device->rq_queue;
|
||||
unsigned int max_discard_sectors;
|
||||
|
||||
if (bdev && !bdev_max_discard_sectors(bdev->backing_bdev))
|
||||
if (!drbd_discard_supported(connection, bdev))
|
||||
goto not_supported;
|
||||
|
||||
if (connection->cstate >= C_CONNECTED &&
|
||||
!(connection->agreed_features & DRBD_FF_TRIM)) {
|
||||
drbd_info(connection,
|
||||
"peer DRBD too old, does not support TRIM: disabling discards\n");
|
||||
goto not_supported;
|
||||
}
|
||||
|
||||
/*
|
||||
* We don't care for the granularity, really.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue