Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <axboe@fb.com>

+15 -15
+1 -1
drivers/block/brd.c
··· 500 500 blk_queue_physical_block_size(brd->brd_queue, PAGE_SIZE); 501 501 502 502 brd->brd_queue->limits.discard_granularity = PAGE_SIZE; 503 - brd->brd_queue->limits.max_discard_sectors = UINT_MAX; 503 + blk_queue_max_discard_sectors(brd->brd_queue, UINT_MAX); 504 504 brd->brd_queue->limits.discard_zeroes_data = 1; 505 505 queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, brd->brd_queue); 506 506
+2 -2
drivers/block/drbd/drbd_nl.c
··· 1156 1156 /* For now, don't allow more than one activity log extent worth of data 1157 1157 * to be discarded in one go. We may need to rework drbd_al_begin_io() 1158 1158 * to allow for even larger discard ranges */ 1159 - q->limits.max_discard_sectors = DRBD_MAX_DISCARD_SECTORS; 1159 + blk_queue_max_discard_sectors(q, DRBD_MAX_DISCARD_SECTORS); 1160 1160 1161 1161 queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, q); 1162 1162 /* REALLY? Is stacking secdiscard "legal"? */ 1163 1163 if (blk_queue_secdiscard(b)) 1164 1164 queue_flag_set_unlocked(QUEUE_FLAG_SECDISCARD, q); 1165 1165 } else { 1166 - q->limits.max_discard_sectors = 0; 1166 + blk_queue_max_discard_sectors(q, 0); 1167 1167 queue_flag_clear_unlocked(QUEUE_FLAG_DISCARD, q); 1168 1168 queue_flag_clear_unlocked(QUEUE_FLAG_SECDISCARD, q); 1169 1169 }
+2 -2
drivers/block/loop.c
··· 675 675 lo->lo_encrypt_key_size) { 676 676 q->limits.discard_granularity = 0; 677 677 q->limits.discard_alignment = 0; 678 - q->limits.max_discard_sectors = 0; 678 + blk_queue_max_discard_sectors(q, 0); 679 679 q->limits.discard_zeroes_data = 0; 680 680 queue_flag_clear_unlocked(QUEUE_FLAG_DISCARD, q); 681 681 return; ··· 683 683 684 684 q->limits.discard_granularity = inode->i_sb->s_blocksize; 685 685 q->limits.discard_alignment = 0; 686 - q->limits.max_discard_sectors = UINT_MAX >> 9; 686 + blk_queue_max_discard_sectors(q, UINT_MAX >> 9); 687 687 q->limits.discard_zeroes_data = 1; 688 688 queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, q); 689 689 }
+1 -1
drivers/block/nbd.c
··· 822 822 queue_flag_set_unlocked(QUEUE_FLAG_NONROT, disk->queue); 823 823 queue_flag_clear_unlocked(QUEUE_FLAG_ADD_RANDOM, disk->queue); 824 824 disk->queue->limits.discard_granularity = 512; 825 - disk->queue->limits.max_discard_sectors = UINT_MAX; 825 + blk_queue_max_discard_sectors(disk->queue, UINT_MAX); 826 826 disk->queue->limits.discard_zeroes_data = 0; 827 827 blk_queue_max_hw_sectors(disk->queue, 65536); 828 828 disk->queue->limits.max_sectors = 256;
+1 -1
drivers/block/nvme-core.c
··· 1935 1935 ns->queue->limits.discard_zeroes_data = 0; 1936 1936 ns->queue->limits.discard_alignment = logical_block_size; 1937 1937 ns->queue->limits.discard_granularity = logical_block_size; 1938 - ns->queue->limits.max_discard_sectors = 0xffffffff; 1938 + blk_queue_max_discard_sectors(ns->queue, 0xffffffff); 1939 1939 queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, ns->queue); 1940 1940 } 1941 1941
+1 -1
drivers/block/rbd.c
··· 3803 3803 queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, q); 3804 3804 q->limits.discard_granularity = segment_size; 3805 3805 q->limits.discard_alignment = segment_size; 3806 - q->limits.max_discard_sectors = segment_size / SECTOR_SIZE; 3806 + blk_queue_max_discard_sectors(q, segment_size / SECTOR_SIZE); 3807 3807 q->limits.discard_zeroes_data = 1; 3808 3808 3809 3809 blk_queue_merge_bvec(q, rbd_merge_bvec);
+1 -1
drivers/block/skd_main.c
··· 4422 4422 /* DISCARD Flag initialization. */ 4423 4423 q->limits.discard_granularity = 8192; 4424 4424 q->limits.discard_alignment = 0; 4425 - q->limits.max_discard_sectors = UINT_MAX >> 9; 4425 + blk_queue_max_discard_sectors(q, UINT_MAX >> 9); 4426 4426 q->limits.discard_zeroes_data = 1; 4427 4427 queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, q); 4428 4428 queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q);
+1 -1
drivers/block/zram/zram_drv.c
··· 1244 1244 blk_queue_io_min(zram->disk->queue, PAGE_SIZE); 1245 1245 blk_queue_io_opt(zram->disk->queue, PAGE_SIZE); 1246 1246 zram->disk->queue->limits.discard_granularity = PAGE_SIZE; 1247 - zram->disk->queue->limits.max_discard_sectors = UINT_MAX; 1247 + blk_queue_max_discard_sectors(zram->disk->queue, UINT_MAX); 1248 1248 /* 1249 1249 * zram_bio_discard() will clear all logical blocks if logical block 1250 1250 * size is identical with physical block size(PAGE_SIZE). But if it is
+1 -1
drivers/md/bcache/super.c
··· 830 830 q->limits.max_sectors = UINT_MAX; 831 831 q->limits.max_segment_size = UINT_MAX; 832 832 q->limits.max_segments = BIO_MAX_PAGES; 833 - q->limits.max_discard_sectors = UINT_MAX; 833 + blk_queue_max_discard_sectors(q, UINT_MAX); 834 834 q->limits.discard_granularity = 512; 835 835 q->limits.io_min = block_size; 836 836 q->limits.logical_block_size = block_size;
+1 -1
drivers/mmc/card/queue.c
··· 165 165 return; 166 166 167 167 queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, q); 168 - q->limits.max_discard_sectors = max_discard; 168 + blk_queue_max_discard_sectors(q, max_discard); 169 169 if (card->erased_byte == 0 && !mmc_can_discard(card)) 170 170 q->limits.discard_zeroes_data = 1; 171 171 q->limits.discard_granularity = card->pref_erase << 9;
+1 -1
drivers/mtd/mtd_blkdevs.c
··· 423 423 424 424 if (tr->discard) { 425 425 queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, new->rq); 426 - new->rq->limits.max_discard_sectors = UINT_MAX; 426 + blk_queue_max_discard_sectors(new->rq, UINT_MAX); 427 427 } 428 428 429 429 gd->queue = new->rq;
+2 -2
drivers/scsi/sd.c
··· 647 647 switch (mode) { 648 648 649 649 case SD_LBP_DISABLE: 650 - q->limits.max_discard_sectors = 0; 650 + blk_queue_max_discard_sectors(q, 0); 651 651 queue_flag_clear_unlocked(QUEUE_FLAG_DISCARD, q); 652 652 return; 653 653 ··· 675 675 break; 676 676 } 677 677 678 - q->limits.max_discard_sectors = max_blocks * (logical_block_size >> 9); 678 + blk_queue_max_discard_sectors(q, max_blocks * (logical_block_size >> 9)); 679 679 queue_flag_set_unlocked(QUEUE_FLAG_DISCARD, q); 680 680 } 681 681