diff options
author | Ming Lei <ming.lei@redhat.com> | 2019-12-04 14:31:15 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2019-12-04 19:04:26 +0300 |
commit | f1acbf2186dfe761a05ce35c0f36246caed44403 (patch) | |
tree | fd7aa83908a5910608eb56fa9d9a8a134af49c07 | |
parent | 36582a5a456100ebe4983e3d63b8cbc7e62a0ddc (diff) | |
download | linux-f1acbf2186dfe761a05ce35c0f36246caed44403.tar.xz |
brd: warn on un-aligned buffer
Queue dma alignment limit requires users(fs, target, ...) of block layer
to pass aligned buffer.
So far brd doesn't support un-aligned buffer, even though it is easy
to support it.
However, given brd is often used for debug purpose, and there are other
drivers which can't support un-aligned buffer too.
So add warning so that brd users know what to fix.
Reported-by: Stephen Rust <srust@blockbridge.com>
Cc: Stephen Rust <srust@blockbridge.com>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r-- | drivers/block/brd.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/block/brd.c b/drivers/block/brd.c index c2e5b2ad88bc..a8730cc4db10 100644 --- a/drivers/block/brd.c +++ b/drivers/block/brd.c @@ -297,6 +297,10 @@ static blk_qc_t brd_make_request(struct request_queue *q, struct bio *bio) unsigned int len = bvec.bv_len; int err; + /* Don't support un-aligned buffer */ + WARN_ON_ONCE((bvec.bv_offset & (SECTOR_SIZE - 1)) || + (len & (SECTOR_SIZE - 1))); + err = brd_do_bvec(brd, bvec.bv_page, len, bvec.bv_offset, bio_op(bio), sector); if (err) |