The patch titled Subject: gfs2: replace ll_rw_block() has been added to the -mm mm-unstable branch. Its filename is gfs2-replace-ll_rw_block.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/gfs2-replace-ll_rw_block.patch This patch will later appear in the mm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Zhang Yi <yi.zhang@xxxxxxxxxx> Subject: gfs2: replace ll_rw_block() Date: Thu, 1 Sep 2022 21:34:55 +0800 ll_rw_block() is not safe for the sync read path because it cannot guarantee that always submitting read IO if the buffer has been locked, so stop using it. We also switch to new bh_readahead() helper for the readahead path. Link: https://lkml.kernel.org/r/20220901133505.2510834-5-yi.zhang@xxxxxxxxxx Signed-off-by: Zhang Yi <yi.zhang@xxxxxxxxxx> Reviewed-by: Jan Kara <jack@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/gfs2/meta_io.c | 7 ++----- fs/gfs2/quota.c | 8 ++------ 2 files changed, 4 insertions(+), 11 deletions(-) --- a/fs/gfs2/meta_io.c~gfs2-replace-ll_rw_block +++ a/fs/gfs2/meta_io.c @@ -525,8 +525,7 @@ struct buffer_head *gfs2_meta_ra(struct if (buffer_uptodate(first_bh)) goto out; - if (!buffer_locked(first_bh)) - ll_rw_block(REQ_OP_READ | REQ_META | REQ_PRIO, 1, &first_bh); + bh_read_nowait(first_bh, REQ_META | REQ_PRIO); dblock++; extlen--; @@ -534,9 +533,7 @@ struct buffer_head *gfs2_meta_ra(struct while (extlen) { bh = gfs2_getbuf(gl, dblock, CREATE); - if (!buffer_uptodate(bh) && !buffer_locked(bh)) - ll_rw_block(REQ_OP_READ | REQ_RAHEAD | REQ_META | - REQ_PRIO, 1, &bh); + bh_readahead(bh, REQ_RAHEAD | REQ_META | REQ_PRIO); brelse(bh); dblock++; extlen--; --- a/fs/gfs2/quota.c~gfs2-replace-ll_rw_block +++ a/fs/gfs2/quota.c @@ -745,12 +745,8 @@ static int gfs2_write_buf_to_page(struct } if (PageUptodate(page)) set_buffer_uptodate(bh); - if (!buffer_uptodate(bh)) { - ll_rw_block(REQ_OP_READ | REQ_META | REQ_PRIO, 1, &bh); - wait_on_buffer(bh); - if (!buffer_uptodate(bh)) - goto unlock_out; - } + if (bh_read(bh, REQ_META | REQ_PRIO) < 0) + goto unlock_out; if (gfs2_is_jdata(ip)) gfs2_trans_add_data(ip->i_gl, bh); else _ Patches currently in -mm which might be from yi.zhang@xxxxxxxxxx are fs-buffer-remove-__breadahead_gfp.patch fs-buffer-add-some-new-buffer-read-helpers.patch fs-buffer-replace-ll_rw_block.patch gfs2-replace-ll_rw_block.patch isofs-replace-ll_rw_block.patch jbd2-replace-ll_rw_block.patch ntfs3-replace-ll_rw_block.patch ocfs2-replace-ll_rw_block.patch reiserfs-replace-ll_rw_block.patch udf-replace-ll_rw_block.patch ufs-replace-ll_rw_block.patch fs-buffer-remove-ll_rw_block-helper.patch ext2-replace-bh_submit_read-helper-with-bh_read_locked.patch fs-buffer-remove-bh_submit_read-helper.patch