diff options
author | Ming Lei <ming.lei@redhat.com> | 2020-01-05 09:41:14 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-01-17 19:48:21 +0100 |
commit | 3fe209c8432b829a605c5b7c932d39469c25277d (patch) | |
tree | e09f61e75701f609aa7d5e6edc6368234a9b88aa /fs/internal.h | |
parent | 80a332f418585c817446dee19112527ad78063c0 (diff) | |
download | linux-stable-3fe209c8432b829a605c5b7c932d39469c25277d.tar.gz linux-stable-3fe209c8432b829a605c5b7c932d39469c25277d.tar.bz2 linux-stable-3fe209c8432b829a605c5b7c932d39469c25277d.zip |
fs: move guard_bio_eod() after bio_set_op_attrs
commit 83c9c547168e8b914ea6398430473a4de68c52cc upstream.
Commit 85a8ce62c2ea ("block: add bio_truncate to fix guard_bio_eod")
adds bio_truncate() for handling bio EOD. However, bio_truncate()
doesn't use the passed 'op' parameter from guard_bio_eod's callers.
So bio_trunacate() may retrieve wrong 'op', and zering pages may
not be done for READ bio.
Fixes this issue by moving guard_bio_eod() after bio_set_op_attrs()
in submit_bh_wbc() so that bio_truncate() can always retrieve correct
op info.
Meantime remove the 'op' parameter from guard_bio_eod() because it isn't
used any more.
Cc: Carlos Maiolino <cmaiolino@redhat.com>
Cc: linux-fsdevel@vger.kernel.org
Fixes: 85a8ce62c2ea ("block: add bio_truncate to fix guard_bio_eod")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Fold in kerneldoc and bio_op() change.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'fs/internal.h')
-rw-r--r-- | fs/internal.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/internal.h b/fs/internal.h index 315fcd8d237c..7651e8b8ef13 100644 --- a/fs/internal.h +++ b/fs/internal.h @@ -38,7 +38,7 @@ static inline int __sync_blockdev(struct block_device *bdev, int wait) /* * buffer.c */ -extern void guard_bio_eod(int rw, struct bio *bio); +extern void guard_bio_eod(struct bio *bio); extern int __block_write_begin_int(struct page *page, loff_t pos, unsigned len, get_block_t *get_block, struct iomap *iomap); |