ocfs2-devel.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [Ocfs2-devel] [PATCH v2 00/14] fs/buffer: remove ll_rw_block()
@ 2022-09-01 13:34 Zhang Yi via Ocfs2-devel
  2022-09-01 13:34 ` [Ocfs2-devel] [PATCH v2 01/14] fs/buffer: remove __breadahead_gfp() Zhang Yi via Ocfs2-devel
                   ` (13 more replies)
  0 siblings, 14 replies; 46+ messages in thread
From: Zhang Yi via Ocfs2-devel @ 2022-09-01 13:34 UTC (permalink / raw)
  To: linux-ext4, linux-fsdevel, linux-kernel, cluster-devel, ntfs3,
	ocfs2-devel, reiserfs-devel, jack
  Cc: axboe, hch, tytso, agruenba, yi.zhang, almaz.alexandrovich, viro,
	yukuai3, rpeterso, dushistov, chengzhihao1

Changes since v1:
 - Remove redundant uptodate check in __bh_read(), use
   bh_uptodate_or_lock() in bh_read() and bh_read_nowait().
 - Improve the lock order in __bh_read_batch().
 - Add return value 1 to bh_read(), indicate the buffer has been
   already uptodate and no need to submit read IO, ext2 code in patch
   13 need to know this case.
 - Remove bh_read_locked() helper.
 - Exchange the parameter sequence of bhs[] array and it's number in
   bh_read[*]_batch() helpers.

v1: https://lore.kernel.org/linux-fsdevel/20220831072111.3569680-1-yi.zhang@huawei.com/T/#t

Thanks,
Yi.

ll_rw_block() will skip locked buffer before submitting IO, it assumes
that locked buffer means it is under IO. This assumption is not always
true because we cannot guarantee every buffer lock path would submit
IO. After commit 88dbcbb3a484 ("blkdev: avoid migration stalls for
blkdev pages"), buffer_migrate_folio_norefs() becomes one exceptional
case, and there may be others. So ll_rw_block() is not safe on the sync
read path, we could get false positive EIO return value when filesystem
reading metadata. It seems that it could be only used on the readahead
path.

Unfortunately, many filesystem misuse the ll_rw_block() on the sync read
path. This patch set just remove ll_rw_block() and add new friendly
helpers, which could prevent false positive EIO on the read metadata
path. Thanks for the suggestion from Jan, the original discussion is at
[1].

 patch 1: remove unused helpers in fs/buffer.c
 patch 2: add new bh_read_[*] helpers
 patch 3-11: remove all ll_rw_block() calls in filesystems
 patch 12-14: do some leftover cleanups.

[1]. https://lore.kernel.org/linux-mm/20220825080146.2021641-1-chengzhihao1@huawei.com/

Zhang Yi (14):
  fs/buffer: remove __breadahead_gfp()
  fs/buffer: add some new buffer read helpers
  fs/buffer: replace ll_rw_block()
  gfs2: replace ll_rw_block()
  isofs: replace ll_rw_block()
  jbd2: replace ll_rw_block()
  ntfs3: replace ll_rw_block()
  ocfs2: replace ll_rw_block()
  reiserfs: replace ll_rw_block()
  udf: replace ll_rw_block()
  ufs: replace ll_rw_block()
  fs/buffer: remove ll_rw_block() helper
  ext2: replace bh_submit_read() helper with bh_read_locked()
  fs/buffer: remove bh_submit_read() helper

 fs/buffer.c                 | 154 +++++++++++++++---------------------
 fs/ext2/balloc.c            |   7 +-
 fs/gfs2/meta_io.c           |   7 +-
 fs/gfs2/quota.c             |   8 +-
 fs/isofs/compress.c         |   2 +-
 fs/jbd2/journal.c           |  15 ++--
 fs/jbd2/recovery.c          |  16 ++--
 fs/ntfs3/inode.c            |   7 +-
 fs/ocfs2/aops.c             |   2 +-
 fs/ocfs2/super.c            |   4 +-
 fs/reiserfs/journal.c       |  11 +--
 fs/reiserfs/stree.c         |   4 +-
 fs/reiserfs/super.c         |   4 +-
 fs/udf/dir.c                |   2 +-
 fs/udf/directory.c          |   2 +-
 fs/udf/inode.c              |   8 +-
 fs/ufs/balloc.c             |  12 +--
 include/linux/buffer_head.h |  48 ++++++++---
 18 files changed, 146 insertions(+), 167 deletions(-)

-- 
2.31.1


_______________________________________________
Ocfs2-devel mailing list
Ocfs2-devel@oss.oracle.com
https://oss.oracle.com/mailman/listinfo/ocfs2-devel

^ permalink raw reply	[flat|nested] 46+ messages in thread

end of thread, other threads:[~2022-09-06  1:06 UTC | newest]

Thread overview: 46+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-01 13:34 [Ocfs2-devel] [PATCH v2 00/14] fs/buffer: remove ll_rw_block() Zhang Yi via Ocfs2-devel
2022-09-01 13:34 ` [Ocfs2-devel] [PATCH v2 01/14] fs/buffer: remove __breadahead_gfp() Zhang Yi via Ocfs2-devel
2022-09-05  5:52   ` Christoph Hellwig via Ocfs2-devel
2022-09-01 13:34 ` [Ocfs2-devel] [PATCH v2 02/14] fs/buffer: add some new buffer read helpers Zhang Yi via Ocfs2-devel
2022-09-01 15:44   ` Jan Kara via Ocfs2-devel
2022-09-05  5:52   ` Christoph Hellwig via Ocfs2-devel
2022-09-01 13:34 ` [Ocfs2-devel] [PATCH v2 03/14] fs/buffer: replace ll_rw_block() Zhang Yi via Ocfs2-devel
2022-09-01 15:45   ` Jan Kara via Ocfs2-devel
2022-09-05  5:53   ` Christoph Hellwig via Ocfs2-devel
2022-09-01 13:34 ` [Ocfs2-devel] [PATCH v2 04/14] gfs2: " Zhang Yi via Ocfs2-devel
2022-09-01 15:46   ` Jan Kara via Ocfs2-devel
2022-09-05  5:54   ` Christoph Hellwig via Ocfs2-devel
2022-09-05 14:10   ` Andreas Gruenbacher via Ocfs2-devel
2022-09-01 13:34 ` [Ocfs2-devel] [PATCH v2 05/14] isofs: " Zhang Yi via Ocfs2-devel
2022-09-05  5:54   ` Christoph Hellwig via Ocfs2-devel
2022-09-01 13:34 ` [Ocfs2-devel] [PATCH v2 06/14] jbd2: " Zhang Yi via Ocfs2-devel
2022-09-01 15:50   ` Jan Kara via Ocfs2-devel
2022-09-05  5:54   ` Christoph Hellwig via Ocfs2-devel
2022-09-05  8:23   ` Theodore Ts'o via Ocfs2-devel
2022-09-01 13:34 ` [Ocfs2-devel] [PATCH v2 07/14] ntfs3: " Zhang Yi via Ocfs2-devel
2022-09-01 15:47   ` Jan Kara via Ocfs2-devel
2022-09-05  5:54   ` Christoph Hellwig via Ocfs2-devel
2022-09-01 13:34 ` [Ocfs2-devel] [PATCH v2 08/14] ocfs2: " Zhang Yi via Ocfs2-devel
2022-09-01 15:51   ` Jan Kara via Ocfs2-devel
2022-09-05  5:55   ` Christoph Hellwig via Ocfs2-devel
2022-09-06  1:06   ` Joseph Qi via Ocfs2-devel
2022-09-01 13:35 ` [Ocfs2-devel] [PATCH v2 09/14] reiserfs: " Zhang Yi via Ocfs2-devel
2022-09-01 15:52   ` Jan Kara via Ocfs2-devel
2022-09-05  5:55   ` Christoph Hellwig via Ocfs2-devel
2022-09-01 13:35 ` [Ocfs2-devel] [PATCH v2 10/14] udf: " Zhang Yi via Ocfs2-devel
2022-09-01 15:58   ` Jan Kara via Ocfs2-devel
2022-09-05  5:55   ` Christoph Hellwig via Ocfs2-devel
2022-09-01 13:35 ` [Ocfs2-devel] [PATCH v2 11/14] ufs: " Zhang Yi via Ocfs2-devel
2022-09-01 15:59   ` Jan Kara via Ocfs2-devel
2022-09-05  5:56   ` Christoph Hellwig via Ocfs2-devel
2022-09-01 13:35 ` [Ocfs2-devel] [PATCH v2 12/14] fs/buffer: remove ll_rw_block() helper Zhang Yi via Ocfs2-devel
2022-09-05  5:56   ` Christoph Hellwig via Ocfs2-devel
2022-09-01 13:35 ` [Ocfs2-devel] [PATCH v2 13/14] ext2: replace bh_submit_read() helper with bh_read_locked() Zhang Yi via Ocfs2-devel
2022-09-01 15:59   ` Jan Kara via Ocfs2-devel
2022-09-02  0:30   ` Al Viro via Ocfs2-devel
2022-09-02  1:32     ` Zhang Yi via Ocfs2-devel
2022-09-02  1:51       ` Al Viro via Ocfs2-devel
2022-09-02  1:58         ` Zhang Yi via Ocfs2-devel
2022-09-05  5:56   ` Christoph Hellwig via Ocfs2-devel
2022-09-01 13:35 ` [Ocfs2-devel] [PATCH v2 14/14] fs/buffer: remove bh_submit_read() helper Zhang Yi via Ocfs2-devel
2022-09-05  5:57   ` Christoph Hellwig via Ocfs2-devel

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).