From: Christoph Hellwig <hch@lst.de>
To: axboe@kernel.dk, martin.petersen@oracle.com, agk@redhat.com,
snitzer@redhat.com, shli@kernel.org, philipp.reisner@linbit.com,
lars.ellenberg@linbit.com
Cc: linux-block@vger.kernel.org, linux-scsi@vger.kernel.org,
drbd-dev@lists.linbit.com, dm-devel@redhat.com,
linux-raid@vger.kernel.org
Subject: [PATCH 18/25] brd: remove discard support
Date: Fri, 31 Mar 2017 18:33:06 +0200 [thread overview]
Message-ID: <20170331163313.31821-19-hch@lst.de> (raw)
In-Reply-To: <20170331163313.31821-1-hch@lst.de>
It's just a in-driver reimplementation of writing zeroes to the pages,
which fails if the discards aren't page aligned.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/block/brd.c | 54 -----------------------------------------------------
1 file changed, 54 deletions(-)
diff --git a/drivers/block/brd.c b/drivers/block/brd.c
index 3adc32a3153b..4ec84d504780 100644
--- a/drivers/block/brd.c
+++ b/drivers/block/brd.c
@@ -134,28 +134,6 @@ static struct page *brd_insert_page(struct brd_device *brd, sector_t sector)
return page;
}
-static void brd_free_page(struct brd_device *brd, sector_t sector)
-{
- struct page *page;
- pgoff_t idx;
-
- spin_lock(&brd->brd_lock);
- idx = sector >> PAGE_SECTORS_SHIFT;
- page = radix_tree_delete(&brd->brd_pages, idx);
- spin_unlock(&brd->brd_lock);
- if (page)
- __free_page(page);
-}
-
-static void brd_zero_page(struct brd_device *brd, sector_t sector)
-{
- struct page *page;
-
- page = brd_lookup_page(brd, sector);
- if (page)
- clear_highpage(page);
-}
-
/*
* Free all backing store pages and radix tree. This must only be called when
* there are no other users of the device.
@@ -212,24 +190,6 @@ static int copy_to_brd_setup(struct brd_device *brd, sector_t sector, size_t n)
return 0;
}
-static void discard_from_brd(struct brd_device *brd,
- sector_t sector, size_t n)
-{
- while (n >= PAGE_SIZE) {
- /*
- * Don't want to actually discard pages here because
- * re-allocating the pages can result in writeback
- * deadlocks under heavy load.
- */
- if (0)
- brd_free_page(brd, sector);
- else
- brd_zero_page(brd, sector);
- sector += PAGE_SIZE >> SECTOR_SHIFT;
- n -= PAGE_SIZE;
- }
-}
-
/*
* Copy n bytes from src to the brd starting at sector. Does not sleep.
*/
@@ -338,14 +298,6 @@ static blk_qc_t brd_make_request(struct request_queue *q, struct bio *bio)
if (bio_end_sector(bio) > get_capacity(bdev->bd_disk))
goto io_error;
- if (unlikely(bio_op(bio) == REQ_OP_DISCARD)) {
- if (sector & ((PAGE_SIZE >> SECTOR_SHIFT) - 1) ||
- bio->bi_iter.bi_size & ~PAGE_MASK)
- goto io_error;
- discard_from_brd(brd, sector, bio->bi_iter.bi_size);
- goto out;
- }
-
bio_for_each_segment(bvec, bio, iter) {
unsigned int len = bvec.bv_len;
int err;
@@ -357,7 +309,6 @@ static blk_qc_t brd_make_request(struct request_queue *q, struct bio *bio)
sector += len >> SECTOR_SHIFT;
}
-out:
bio_endio(bio);
return BLK_QC_T_NONE;
io_error:
@@ -464,11 +415,6 @@ static struct brd_device *brd_alloc(int i)
* is harmless)
*/
blk_queue_physical_block_size(brd->brd_queue, PAGE_SIZE);
-
- brd->brd_queue->limits.discard_granularity = PAGE_SIZE;
- 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);
#ifdef CONFIG_BLK_DEV_RAM_DAX
queue_flag_set_unlocked(QUEUE_FLAG_DAX, brd->brd_queue);
#endif
--
2.11.0
next prev parent reply other threads:[~2017-03-31 16:33 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-31 16:32 always use REQ_OP_WRITE_ZEROES for zeroing offload Christoph Hellwig
2017-03-31 16:32 ` [PATCH 01/25] ѕd: split sd_setup_discard_cmnd Christoph Hellwig
2017-04-05 11:42 ` Martin K. Petersen
2017-03-31 16:32 ` [PATCH 02/25] block: renumber REQ_OP_WRITE_ZEROES Christoph Hellwig
2017-04-05 11:43 ` Martin K. Petersen
2017-03-31 16:32 ` [PATCH 03/25] block: implement splitting of REQ_OP_WRITE_ZEROES bios Christoph Hellwig
[not found] ` <20170331163313.31821-4-hch-jcswGhMUV9g@public.gmane.org>
2017-04-05 11:43 ` Martin K. Petersen
2017-03-31 16:32 ` [PATCH 04/25] sd: implement REQ_OP_WRITE_ZEROES Christoph Hellwig
[not found] ` <20170331163313.31821-5-hch-jcswGhMUV9g@public.gmane.org>
2017-04-05 11:44 ` Martin K. Petersen
2017-03-31 16:32 ` [PATCH 05/25] md: support REQ_OP_WRITE_ZEROES Christoph Hellwig
2017-03-31 16:32 ` [PATCH 06/25] dm io: discards don't take a payload Christoph Hellwig
2017-03-31 16:32 ` [PATCH 07/25] dm: support REQ_OP_WRITE_ZEROES Christoph Hellwig
2017-03-31 16:32 ` [PATCH 08/25] dm kcopyd: switch to use REQ_OP_WRITE_ZEROES Christoph Hellwig
2017-03-31 16:32 ` [PATCH 09/25] block: stop using blkdev_issue_write_same for zeroing Christoph Hellwig
[not found] ` <20170331163313.31821-10-hch-jcswGhMUV9g@public.gmane.org>
2017-04-05 11:45 ` Martin K. Petersen
2017-03-31 16:32 ` [PATCH 10/25] block: add a flags argument to (__)blkdev_issue_zeroout Christoph Hellwig
[not found] ` <20170331163313.31821-11-hch-jcswGhMUV9g@public.gmane.org>
2017-04-05 11:46 ` Martin K. Petersen
2017-03-31 16:32 ` [PATCH 11/25] block: add a REQ_UNMAP flag for REQ_OP_WRITE_ZEROES Christoph Hellwig
[not found] ` <20170331163313.31821-12-hch-jcswGhMUV9g@public.gmane.org>
2017-04-05 11:46 ` Martin K. Petersen
2017-03-31 16:33 ` [PATCH 12/25] block: add a new BLKDEV_ZERO_NOFALLBACK flag Christoph Hellwig
[not found] ` <20170331163313.31821-13-hch-jcswGhMUV9g@public.gmane.org>
2017-04-05 11:47 ` Martin K. Petersen
2017-03-31 16:33 ` [PATCH 13/25] block_dev: use blkdev_issue_zerout for hole punches Christoph Hellwig
[not found] ` <20170331163313.31821-14-hch-jcswGhMUV9g@public.gmane.org>
2017-04-05 11:48 ` Martin K. Petersen
2017-03-31 16:33 ` [PATCH 14/25] sd: implement unmapping Write Zeroes Christoph Hellwig
[not found] ` <20170331163313.31821-15-hch-jcswGhMUV9g@public.gmane.org>
2017-04-05 11:48 ` Martin K. Petersen
2017-03-31 16:33 ` [PATCH 15/25] nvme: implement REQ_OP_WRITE_ZEROES Christoph Hellwig
[not found] ` <20170331163313.31821-16-hch-jcswGhMUV9g@public.gmane.org>
2017-04-05 11:49 ` Martin K. Petersen
2017-03-31 16:33 ` [PATCH 16/25] zram: " Christoph Hellwig
2017-03-31 16:33 ` [PATCH 17/25] loop: " Christoph Hellwig
2017-03-31 16:33 ` Christoph Hellwig [this message]
2017-03-31 16:33 ` [PATCH 19/25] rbd: remove the discard_zeroes_data flag Christoph Hellwig
2017-03-31 16:33 ` [PATCH 20/25] rsxx: " Christoph Hellwig
2017-03-31 16:33 ` [PATCH 21/25] mmc: " Christoph Hellwig
2017-03-31 16:33 ` [PATCH 22/25] block: stop using discards for zeroing Christoph Hellwig
[not found] ` <20170331163313.31821-23-hch-jcswGhMUV9g@public.gmane.org>
2017-04-05 11:55 ` Martin K. Petersen
2017-03-31 16:33 ` [PATCH 23/25] drbd: make intelligent use of blkdev_issue_zeroout Christoph Hellwig
2017-03-31 16:33 ` [PATCH 24/25] drbd: implement REQ_OP_WRITE_ZEROES Christoph Hellwig
2017-03-31 16:33 ` [PATCH 25/25] block: remove the discard_zeroes_data flag Christoph Hellwig
[not found] ` <20170331163313.31821-26-hch-jcswGhMUV9g@public.gmane.org>
2017-04-05 11:56 ` Martin K. Petersen
2017-04-03 6:06 ` always use REQ_OP_WRITE_ZEROES for zeroing offload Hannes Reinecke
[not found] ` <20170331163313.31821-1-hch-jcswGhMUV9g@public.gmane.org>
2017-04-05 11:40 ` Martin K. Petersen
[not found] ` <yq1vaqjt74b.fsf-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2017-04-05 12:08 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170331163313.31821-19-hch@lst.de \
--to=hch@lst.de \
--cc=agk@redhat.com \
--cc=axboe@kernel.dk \
--cc=dm-devel@redhat.com \
--cc=drbd-dev@lists.linbit.com \
--cc=lars.ellenberg@linbit.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-raid@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=philipp.reisner@linbit.com \
--cc=shli@kernel.org \
--cc=snitzer@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).