Skip to content
Open
1 change: 0 additions & 1 deletion arch/um/drivers/ubd_kern.c
Original file line number Diff line number Diff line change
Expand Up @@ -786,7 +786,6 @@ static int ubd_open_dev(struct ubd *ubd_dev)
ubd_dev->cow.fd = err;
}
if (ubd_dev->no_trim == 0) {
ubd_dev->queue->limits.discard_granularity = SECTOR_SIZE;
blk_queue_max_discard_sectors(ubd_dev->queue, UBD_MAX_REQUEST);
blk_queue_max_write_zeroes_sectors(ubd_dev->queue, UBD_MAX_REQUEST);
}
Expand Down
6 changes: 1 addition & 5 deletions block/blk-merge.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,17 +115,13 @@ static struct bio *bio_split_discard(struct bio *bio,

*nsegs = 1;

/* Zero-sector (unknown) and one-sector granularities are the same. */
granularity = max(lim->discard_granularity >> 9, 1U);

max_discard_sectors =
min(lim->max_discard_sectors, bio_allowed_max_sectors(lim));
max_discard_sectors -= max_discard_sectors % granularity;

if (unlikely(!max_discard_sectors)) {
/* XXX: warn */
if (unlikely(!max_discard_sectors))
return NULL;
}

if (bio_sectors(bio) <= max_discard_sectors)
return NULL;
Expand Down
5 changes: 4 additions & 1 deletion block/blk-settings.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ void blk_set_default_limits(struct queue_limits *lim)
lim->max_discard_sectors = 0;
lim->max_hw_discard_sectors = 0;
lim->max_secure_erase_sectors = 0;
lim->discard_granularity = 0;
lim->discard_granularity = 512;
lim->discard_alignment = 0;
lim->discard_misaligned = 0;
lim->logical_block_size = lim->physical_block_size = lim->io_min = 512;
Expand Down Expand Up @@ -312,6 +312,9 @@ void blk_queue_logical_block_size(struct request_queue *q, unsigned int size)

limits->logical_block_size = size;

if (limits->discard_granularity < limits->logical_block_size)
limits->discard_granularity = limits->logical_block_size;

if (limits->physical_block_size < size)
limits->physical_block_size = size;

Expand Down
6 changes: 1 addition & 5 deletions drivers/block/nbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -345,10 +345,8 @@ static int nbd_set_size(struct nbd_device *nbd, loff_t bytesize,
if (!nbd->pid)
return 0;

if (nbd->config->flags & NBD_FLAG_SEND_TRIM) {
nbd->disk->queue->limits.discard_granularity = blksize;
if (nbd->config->flags & NBD_FLAG_SEND_TRIM)
blk_queue_max_discard_sectors(nbd->disk->queue, UINT_MAX);
}
blk_queue_logical_block_size(nbd->disk->queue, blksize);
blk_queue_physical_block_size(nbd->disk->queue, blksize);

Expand Down Expand Up @@ -1376,7 +1374,6 @@ static void nbd_config_put(struct nbd_device *nbd)
nbd->config = NULL;

nbd->tag_set.timeout = 0;
nbd->disk->queue->limits.discard_granularity = 0;
blk_queue_max_discard_sectors(nbd->disk->queue, 0);

mutex_unlock(&nbd->config_lock);
Expand Down Expand Up @@ -1869,7 +1866,6 @@ static struct nbd_device *nbd_dev_add(int index, unsigned int refs)
* Tell the block layer that we are not a rotational device
*/
blk_queue_flag_set(QUEUE_FLAG_NONROT, disk->queue);
disk->queue->limits.discard_granularity = 0;
blk_queue_max_discard_sectors(disk->queue, 0);
blk_queue_max_segment_size(disk->queue, UINT_MAX);
blk_queue_max_segments(disk->queue, USHRT_MAX);
Expand Down
1 change: 0 additions & 1 deletion drivers/block/null_blk/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1885,7 +1885,6 @@ static void null_config_discard(struct nullb *nullb)
return;
}

nullb->q->limits.discard_granularity = nullb->dev->blocksize;
blk_queue_max_discard_sectors(nullb->q, UINT_MAX >> 9);
}

Expand Down
1 change: 0 additions & 1 deletion drivers/block/zram/zram_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -2265,7 +2265,6 @@ static int zram_add(void)
ZRAM_LOGICAL_BLOCK_SIZE);
blk_queue_io_min(zram->disk->queue, PAGE_SIZE);
blk_queue_io_opt(zram->disk->queue, PAGE_SIZE);
zram->disk->queue->limits.discard_granularity = PAGE_SIZE;
blk_queue_max_discard_sectors(zram->disk->queue, UINT_MAX);
Comment on lines 2266 to 2268

/*
Expand Down
1 change: 0 additions & 1 deletion drivers/md/bcache/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -954,7 +954,6 @@ static int bcache_device_init(struct bcache_device *d, unsigned int block_size,
q->limits.max_segment_size = UINT_MAX;
q->limits.max_segments = BIO_MAX_VECS;
blk_queue_max_discard_sectors(q, UINT_MAX);
q->limits.discard_granularity = 512;
q->limits.io_min = block_size;
q->limits.logical_block_size = block_size;
q->limits.physical_block_size = block_size;
Comment on lines 956 to 959
Expand Down
4 changes: 1 addition & 3 deletions drivers/mtd/mtd_blkdevs.c
Original file line number Diff line number Diff line change
Expand Up @@ -376,10 +376,8 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new)
blk_queue_flag_set(QUEUE_FLAG_NONROT, new->rq);
blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, new->rq);

if (tr->discard) {
if (tr->discard)
blk_queue_max_discard_sectors(new->rq, UINT_MAX);
new->rq->limits.discard_granularity = tr->blksize;
}

gd->queue = new->rq;

Expand Down