On 8/25/21 5:55 AM, Song Liu wrote:
On Mon, Aug 23, 2021 at 6:17 PM Guoqing Jiang <guoqing.jiang@xxxxxxxxx> wrote:
From: Guoqing Jiang <jiangguoqing@xxxxxxxxxx>
We can't split write behind bio with more than BIO_MAX_VECS sectors,
otherwise the below call trace was triggered because we could allocate
oversized write behind bio later.
[ 8.097936] bvec_alloc+0x90/0xc0
[ 8.098934] bio_alloc_bioset+0x1b3/0x260
[ 8.099959] raid1_make_request+0x9ce/0xc50 [raid1]
[ 8.100988] ? __bio_clone_fast+0xa8/0xe0
[ 8.102008] md_handle_request+0x158/0x1d0 [md_mod]
[ 8.103050] md_submit_bio+0xcd/0x110 [md_mod]
[ 8.104084] submit_bio_noacct+0x139/0x530
[ 8.105127] submit_bio+0x78/0x1d0
[ 8.106163] ext4_io_submit+0x48/0x60 [ext4]
[ 8.107242] ext4_writepages+0x652/0x1170 [ext4]
[ 8.108300] ? do_writepages+0x41/0x100
[ 8.109338] ? __ext4_mark_inode_dirty+0x240/0x240 [ext4]
[ 8.110406] do_writepages+0x41/0x100
[ 8.111450] __filemap_fdatawrite_range+0xc5/0x100
[ 8.112513] file_write_and_wait_range+0x61/0xb0
[ 8.113564] ext4_sync_file+0x73/0x370 [ext4]
[ 8.114607] __x64_sys_fsync+0x33/0x60
[ 8.115635] do_syscall_64+0x33/0x40
[ 8.116670] entry_SYSCALL_64_after_hwframe+0x44/0xae
Thanks for the comment from Christoph.
[1]. https://bugs.archlinux.org/task/70992
Reported-by: Jens Stutte <jens@xxxxxxxxxxxxxxxxxx>
Tested-by: Jens Stutte <jens@xxxxxxxxxxxxxxxxxx>
Reviewed-by: Christoph Hellwig <hch@xxxxxx>
Signed-off-by: Guoqing Jiang <jiangguoqing@xxxxxxxxxx>
I am confused. Which tree does this apply to?
Sorry, I forgot to mention it in this version (actually it is v4). It
depends
on commit 018eca456c4b4dca56aaf1ec27f309c74d0fe246 in block tree
for-next branch, so it would be better to be picked by block tree for now
to avoid compile issue, or after you rebase md tree from block tree with
that commit included.
Thanks,
Guoqing