Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2bb4cd5c authored by Jens Axboe's avatar Jens Axboe
Browse files

block: have drivers use blk_queue_max_discard_sectors()



Some drivers use it now, others just set the limits field manually.
But in preparation for splitting this into a hard and soft limit,
ensure that they all call the proper function for setting the hw
limit for discards.

Reviewed-by: default avatarJeff Moyer <jmoyer@redhat.com>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 6c71013e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -500,7 +500,7 @@ static struct brd_device *brd_alloc(int i)
	blk_queue_physical_block_size(brd->brd_queue, PAGE_SIZE);

	brd->brd_queue->limits.discard_granularity = PAGE_SIZE;
	brd->brd_queue->limits.max_discard_sectors = UINT_MAX;
	blk_queue_max_discard_sectors(brd->brd_queue, UINT_MAX);
	brd->brd_queue->limits.discard_zeroes_data = 1;
	queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, brd->brd_queue);

+2 −2
Original line number Diff line number Diff line
@@ -1156,14 +1156,14 @@ static void drbd_setup_queue_param(struct drbd_device *device, struct drbd_backi
			/* For now, don't allow more than one activity log extent worth of data
			 * to be discarded in one go. We may need to rework drbd_al_begin_io()
			 * to allow for even larger discard ranges */
			q->limits.max_discard_sectors = DRBD_MAX_DISCARD_SECTORS;
			blk_queue_max_discard_sectors(q, DRBD_MAX_DISCARD_SECTORS);

			queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, q);
			/* REALLY? Is stacking secdiscard "legal"? */
			if (blk_queue_secdiscard(b))
				queue_flag_set_unlocked(QUEUE_FLAG_SECDISCARD, q);
		} else {
			q->limits.max_discard_sectors = 0;
			blk_queue_max_discard_sectors(q, 0);
			queue_flag_clear_unlocked(QUEUE_FLAG_DISCARD, q);
			queue_flag_clear_unlocked(QUEUE_FLAG_SECDISCARD, q);
		}
+2 −2
Original line number Diff line number Diff line
@@ -675,7 +675,7 @@ static void loop_config_discard(struct loop_device *lo)
	    lo->lo_encrypt_key_size) {
		q->limits.discard_granularity = 0;
		q->limits.discard_alignment = 0;
		q->limits.max_discard_sectors = 0;
		blk_queue_max_discard_sectors(q, 0);
		q->limits.discard_zeroes_data = 0;
		queue_flag_clear_unlocked(QUEUE_FLAG_DISCARD, q);
		return;
@@ -683,7 +683,7 @@ static void loop_config_discard(struct loop_device *lo)

	q->limits.discard_granularity = inode->i_sb->s_blocksize;
	q->limits.discard_alignment = 0;
	q->limits.max_discard_sectors = UINT_MAX >> 9;
	blk_queue_max_discard_sectors(q, UINT_MAX >> 9);
	q->limits.discard_zeroes_data = 1;
	queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, q);
}
+1 −1
Original line number Diff line number Diff line
@@ -822,7 +822,7 @@ static int __init nbd_init(void)
		queue_flag_set_unlocked(QUEUE_FLAG_NONROT, disk->queue);
		queue_flag_clear_unlocked(QUEUE_FLAG_ADD_RANDOM, disk->queue);
		disk->queue->limits.discard_granularity = 512;
		disk->queue->limits.max_discard_sectors = UINT_MAX;
		blk_queue_max_discard_sectors(disk->queue, UINT_MAX);
		disk->queue->limits.discard_zeroes_data = 0;
		blk_queue_max_hw_sectors(disk->queue, 65536);
		disk->queue->limits.max_sectors = 256;
+1 −1
Original line number Diff line number Diff line
@@ -1935,7 +1935,7 @@ static void nvme_config_discard(struct nvme_ns *ns)
	ns->queue->limits.discard_zeroes_data = 0;
	ns->queue->limits.discard_alignment = logical_block_size;
	ns->queue->limits.discard_granularity = logical_block_size;
	ns->queue->limits.max_discard_sectors = 0xffffffff;
	blk_queue_max_discard_sectors(ns->queue, 0xffffffff);
	queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, ns->queue);
}

Loading