All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhang Yi via Ocfs2-devel <ocfs2-devel@oss.oracle.com>
To: <linux-ext4@vger.kernel.org>, <linux-fsdevel@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <cluster-devel@redhat.com>,
	<ntfs3@lists.linux.dev>, <ocfs2-devel@oss.oracle.com>,
	<reiserfs-devel@vger.kernel.org>, <jack@suse.cz>
Cc: axboe@kernel.dk, hch@infradead.org, tytso@mit.edu,
	agruenba@redhat.com, yi.zhang@huawei.com,
	almaz.alexandrovich@paragon-software.com,
	viro@zeniv.linux.org.uk, yukuai3@huawei.com, rpeterso@redhat.com,
	dushistov@mail.ru, chengzhihao1@huawei.com
Subject: [Ocfs2-devel] [PATCH v2 06/14] jbd2: replace ll_rw_block()
Date: Thu, 1 Sep 2022 21:34:57 +0800	[thread overview]
Message-ID: <20220901133505.2510834-7-yi.zhang@huawei.com> (raw)
In-Reply-To: <20220901133505.2510834-1-yi.zhang@huawei.com>

ll_rw_block() is not safe for the sync read path because it cannot
guarantee that submitting read IO if the buffer has been locked. We
could get false positive EIO after wait_on_buffer() if the buffer has
been locked by others. So stop using ll_rw_block() in
journal_get_superblock(). We also switch to new bh_readahead_batch()
for the buffer array readahead path.

Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
---
 fs/jbd2/journal.c  | 15 ++++++---------
 fs/jbd2/recovery.c | 16 ++++++++++------
 2 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
index 6350d3857c89..140b070471c0 100644
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
@@ -1893,19 +1893,16 @@ static int journal_get_superblock(journal_t *journal)
 {
 	struct buffer_head *bh;
 	journal_superblock_t *sb;
-	int err = -EIO;
+	int err;
 
 	bh = journal->j_sb_buffer;
 
 	J_ASSERT(bh != NULL);
-	if (!buffer_uptodate(bh)) {
-		ll_rw_block(REQ_OP_READ, 1, &bh);
-		wait_on_buffer(bh);
-		if (!buffer_uptodate(bh)) {
-			printk(KERN_ERR
-				"JBD2: IO error reading journal superblock\n");
-			goto out;
-		}
+	err = bh_read(bh, 0);
+	if (err < 0) {
+		printk(KERN_ERR
+			"JBD2: IO error reading journal superblock\n");
+		goto out;
 	}
 
 	if (buffer_verified(bh))
diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c
index f548479615c6..1f878c315b03 100644
--- a/fs/jbd2/recovery.c
+++ b/fs/jbd2/recovery.c
@@ -100,7 +100,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
 		if (!buffer_uptodate(bh) && !buffer_locked(bh)) {
 			bufs[nbufs++] = bh;
 			if (nbufs == MAXBUF) {
-				ll_rw_block(REQ_OP_READ, nbufs, bufs);
+				bh_readahead_batch(nbufs, bufs, 0);
 				journal_brelse_array(bufs, nbufs);
 				nbufs = 0;
 			}
@@ -109,7 +109,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
 	}
 
 	if (nbufs)
-		ll_rw_block(REQ_OP_READ, nbufs, bufs);
+		bh_readahead_batch(nbufs, bufs, 0);
 	err = 0;
 
 failed:
@@ -152,9 +152,14 @@ static int jread(struct buffer_head **bhp, journal_t *journal,
 		return -ENOMEM;
 
 	if (!buffer_uptodate(bh)) {
-		/* If this is a brand new buffer, start readahead.
-                   Otherwise, we assume we are already reading it.  */
-		if (!buffer_req(bh))
+		/*
+		 * If this is a brand new buffer, start readahead.
+		 * Otherwise, we assume we are already reading it.
+		 */
+		bool need_readahead = !buffer_req(bh);
+
+		bh_read_nowait(bh, 0);
+		if (need_readahead)
 			do_readahead(journal, offset);
 		wait_on_buffer(bh);
 	}
@@ -687,7 +692,6 @@ static int do_one_pass(journal_t *journal,
 					mark_buffer_dirty(nbh);
 					BUFFER_TRACE(nbh, "marking uptodate");
 					++info->nr_replays;
-					/* ll_rw_block(WRITE, 1, &nbh); */
 					unlock_buffer(nbh);
 					brelse(obh);
 					brelse(nbh);
-- 
2.31.1


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

WARNING: multiple messages have this Message-ID (diff)
From: Zhang Yi <yi.zhang@huawei.com>
To: <linux-ext4@vger.kernel.org>, <linux-fsdevel@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <cluster-devel@redhat.com>,
	<ntfs3@lists.linux.dev>, <ocfs2-devel@oss.oracle.com>,
	<reiserfs-devel@vger.kernel.org>, <jack@suse.cz>
Cc: <tytso@mit.edu>, <akpm@linux-foundation.org>, <axboe@kernel.dk>,
	<viro@zeniv.linux.org.uk>, <rpeterso@redhat.com>,
	<agruenba@redhat.com>, <almaz.alexandrovich@paragon-software.com>,
	<mark@fasheh.com>, <dushistov@mail.ru>, <hch@infradead.org>,
	<yi.zhang@huawei.com>, <chengzhihao1@huawei.com>,
	<yukuai3@huawei.com>
Subject: [PATCH v2 06/14] jbd2: replace ll_rw_block()
Date: Thu, 1 Sep 2022 21:34:57 +0800	[thread overview]
Message-ID: <20220901133505.2510834-7-yi.zhang@huawei.com> (raw)
In-Reply-To: <20220901133505.2510834-1-yi.zhang@huawei.com>

ll_rw_block() is not safe for the sync read path because it cannot
guarantee that submitting read IO if the buffer has been locked. We
could get false positive EIO after wait_on_buffer() if the buffer has
been locked by others. So stop using ll_rw_block() in
journal_get_superblock(). We also switch to new bh_readahead_batch()
for the buffer array readahead path.

Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
---
 fs/jbd2/journal.c  | 15 ++++++---------
 fs/jbd2/recovery.c | 16 ++++++++++------
 2 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
index 6350d3857c89..140b070471c0 100644
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
@@ -1893,19 +1893,16 @@ static int journal_get_superblock(journal_t *journal)
 {
 	struct buffer_head *bh;
 	journal_superblock_t *sb;
-	int err = -EIO;
+	int err;
 
 	bh = journal->j_sb_buffer;
 
 	J_ASSERT(bh != NULL);
-	if (!buffer_uptodate(bh)) {
-		ll_rw_block(REQ_OP_READ, 1, &bh);
-		wait_on_buffer(bh);
-		if (!buffer_uptodate(bh)) {
-			printk(KERN_ERR
-				"JBD2: IO error reading journal superblock\n");
-			goto out;
-		}
+	err = bh_read(bh, 0);
+	if (err < 0) {
+		printk(KERN_ERR
+			"JBD2: IO error reading journal superblock\n");
+		goto out;
 	}
 
 	if (buffer_verified(bh))
diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c
index f548479615c6..1f878c315b03 100644
--- a/fs/jbd2/recovery.c
+++ b/fs/jbd2/recovery.c
@@ -100,7 +100,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
 		if (!buffer_uptodate(bh) && !buffer_locked(bh)) {
 			bufs[nbufs++] = bh;
 			if (nbufs == MAXBUF) {
-				ll_rw_block(REQ_OP_READ, nbufs, bufs);
+				bh_readahead_batch(nbufs, bufs, 0);
 				journal_brelse_array(bufs, nbufs);
 				nbufs = 0;
 			}
@@ -109,7 +109,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
 	}
 
 	if (nbufs)
-		ll_rw_block(REQ_OP_READ, nbufs, bufs);
+		bh_readahead_batch(nbufs, bufs, 0);
 	err = 0;
 
 failed:
@@ -152,9 +152,14 @@ static int jread(struct buffer_head **bhp, journal_t *journal,
 		return -ENOMEM;
 
 	if (!buffer_uptodate(bh)) {
-		/* If this is a brand new buffer, start readahead.
-                   Otherwise, we assume we are already reading it.  */
-		if (!buffer_req(bh))
+		/*
+		 * If this is a brand new buffer, start readahead.
+		 * Otherwise, we assume we are already reading it.
+		 */
+		bool need_readahead = !buffer_req(bh);
+
+		bh_read_nowait(bh, 0);
+		if (need_readahead)
 			do_readahead(journal, offset);
 		wait_on_buffer(bh);
 	}
@@ -687,7 +692,6 @@ static int do_one_pass(journal_t *journal,
 					mark_buffer_dirty(nbh);
 					BUFFER_TRACE(nbh, "marking uptodate");
 					++info->nr_replays;
-					/* ll_rw_block(WRITE, 1, &nbh); */
 					unlock_buffer(nbh);
 					brelse(obh);
 					brelse(nbh);
-- 
2.31.1


WARNING: multiple messages have this Message-ID (diff)
From: Zhang Yi <yi.zhang@huawei.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH v2 06/14] jbd2: replace ll_rw_block()
Date: Thu, 1 Sep 2022 21:34:57 +0800	[thread overview]
Message-ID: <20220901133505.2510834-7-yi.zhang@huawei.com> (raw)
In-Reply-To: <20220901133505.2510834-1-yi.zhang@huawei.com>

ll_rw_block() is not safe for the sync read path because it cannot
guarantee that submitting read IO if the buffer has been locked. We
could get false positive EIO after wait_on_buffer() if the buffer has
been locked by others. So stop using ll_rw_block() in
journal_get_superblock(). We also switch to new bh_readahead_batch()
for the buffer array readahead path.

Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
---
 fs/jbd2/journal.c  | 15 ++++++---------
 fs/jbd2/recovery.c | 16 ++++++++++------
 2 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
index 6350d3857c89..140b070471c0 100644
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
@@ -1893,19 +1893,16 @@ static int journal_get_superblock(journal_t *journal)
 {
 	struct buffer_head *bh;
 	journal_superblock_t *sb;
-	int err = -EIO;
+	int err;
 
 	bh = journal->j_sb_buffer;
 
 	J_ASSERT(bh != NULL);
-	if (!buffer_uptodate(bh)) {
-		ll_rw_block(REQ_OP_READ, 1, &bh);
-		wait_on_buffer(bh);
-		if (!buffer_uptodate(bh)) {
-			printk(KERN_ERR
-				"JBD2: IO error reading journal superblock\n");
-			goto out;
-		}
+	err = bh_read(bh, 0);
+	if (err < 0) {
+		printk(KERN_ERR
+			"JBD2: IO error reading journal superblock\n");
+		goto out;
 	}
 
 	if (buffer_verified(bh))
diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c
index f548479615c6..1f878c315b03 100644
--- a/fs/jbd2/recovery.c
+++ b/fs/jbd2/recovery.c
@@ -100,7 +100,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
 		if (!buffer_uptodate(bh) && !buffer_locked(bh)) {
 			bufs[nbufs++] = bh;
 			if (nbufs == MAXBUF) {
-				ll_rw_block(REQ_OP_READ, nbufs, bufs);
+				bh_readahead_batch(nbufs, bufs, 0);
 				journal_brelse_array(bufs, nbufs);
 				nbufs = 0;
 			}
@@ -109,7 +109,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
 	}
 
 	if (nbufs)
-		ll_rw_block(REQ_OP_READ, nbufs, bufs);
+		bh_readahead_batch(nbufs, bufs, 0);
 	err = 0;
 
 failed:
@@ -152,9 +152,14 @@ static int jread(struct buffer_head **bhp, journal_t *journal,
 		return -ENOMEM;
 
 	if (!buffer_uptodate(bh)) {
-		/* If this is a brand new buffer, start readahead.
-                   Otherwise, we assume we are already reading it.  */
-		if (!buffer_req(bh))
+		/*
+		 * If this is a brand new buffer, start readahead.
+		 * Otherwise, we assume we are already reading it.
+		 */
+		bool need_readahead = !buffer_req(bh);
+
+		bh_read_nowait(bh, 0);
+		if (need_readahead)
 			do_readahead(journal, offset);
 		wait_on_buffer(bh);
 	}
@@ -687,7 +692,6 @@ static int do_one_pass(journal_t *journal,
 					mark_buffer_dirty(nbh);
 					BUFFER_TRACE(nbh, "marking uptodate");
 					++info->nr_replays;
-					/* ll_rw_block(WRITE, 1, &nbh); */
 					unlock_buffer(nbh);
 					brelse(obh);
 					brelse(nbh);
-- 
2.31.1


WARNING: multiple messages have this Message-ID (diff)
From: Zhang Yi <yi.zhang@huawei.com>
To: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org, cluster-devel@redhat.com,
	ntfs3@lists.linux.dev, ocfs2-devel@oss.oracle.com,
	reiserfs-devel@vger.kernel.org, jack@suse.cz
Cc: axboe@kernel.dk, tytso@mit.edu, yi.zhang@huawei.com,
	mark@fasheh.com, almaz.alexandrovich@paragon-software.com,
	viro@zeniv.linux.org.uk, yukuai3@huawei.com, dushistov@mail.ru,
	akpm@linux-foundation.org, chengzhihao1@huawei.com
Subject: [PATCH v2 06/14] jbd2: replace ll_rw_block()
Date: Thu, 1 Sep 2022 21:34:57 +0800	[thread overview]
Message-ID: <20220901133505.2510834-7-yi.zhang@huawei.com> (raw)
In-Reply-To: <20220901133505.2510834-1-yi.zhang@huawei.com>

ll_rw_block() is not safe for the sync read path because it cannot
guarantee that submitting read IO if the buffer has been locked. We
could get false positive EIO after wait_on_buffer() if the buffer has
been locked by others. So stop using ll_rw_block() in
journal_get_superblock(). We also switch to new bh_readahead_batch()
for the buffer array readahead path.

Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
---
 fs/jbd2/journal.c  | 15 ++++++---------
 fs/jbd2/recovery.c | 16 ++++++++++------
 2 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
index 6350d3857c89..140b070471c0 100644
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
@@ -1893,19 +1893,16 @@ static int journal_get_superblock(journal_t *journal)
 {
 	struct buffer_head *bh;
 	journal_superblock_t *sb;
-	int err = -EIO;
+	int err;
 
 	bh = journal->j_sb_buffer;
 
 	J_ASSERT(bh != NULL);
-	if (!buffer_uptodate(bh)) {
-		ll_rw_block(REQ_OP_READ, 1, &bh);
-		wait_on_buffer(bh);
-		if (!buffer_uptodate(bh)) {
-			printk(KERN_ERR
-				"JBD2: IO error reading journal superblock\n");
-			goto out;
-		}
+	err = bh_read(bh, 0);
+	if (err < 0) {
+		printk(KERN_ERR
+			"JBD2: IO error reading journal superblock\n");
+		goto out;
 	}
 
 	if (buffer_verified(bh))
diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c
index f548479615c6..1f878c315b03 100644
--- a/fs/jbd2/recovery.c
+++ b/fs/jbd2/recovery.c
@@ -100,7 +100,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
 		if (!buffer_uptodate(bh) && !buffer_locked(bh)) {
 			bufs[nbufs++] = bh;
 			if (nbufs == MAXBUF) {
-				ll_rw_block(REQ_OP_READ, nbufs, bufs);
+				bh_readahead_batch(nbufs, bufs, 0);
 				journal_brelse_array(bufs, nbufs);
 				nbufs = 0;
 			}
@@ -109,7 +109,7 @@ static int do_readahead(journal_t *journal, unsigned int start)
 	}
 
 	if (nbufs)
-		ll_rw_block(REQ_OP_READ, nbufs, bufs);
+		bh_readahead_batch(nbufs, bufs, 0);
 	err = 0;
 
 failed:
@@ -152,9 +152,14 @@ static int jread(struct buffer_head **bhp, journal_t *journal,
 		return -ENOMEM;
 
 	if (!buffer_uptodate(bh)) {
-		/* If this is a brand new buffer, start readahead.
-                   Otherwise, we assume we are already reading it.  */
-		if (!buffer_req(bh))
+		/*
+		 * If this is a brand new buffer, start readahead.
+		 * Otherwise, we assume we are already reading it.
+		 */
+		bool need_readahead = !buffer_req(bh);
+
+		bh_read_nowait(bh, 0);
+		if (need_readahead)
 			do_readahead(journal, offset);
 		wait_on_buffer(bh);
 	}
@@ -687,7 +692,6 @@ static int do_one_pass(journal_t *journal,
 					mark_buffer_dirty(nbh);
 					BUFFER_TRACE(nbh, "marking uptodate");
 					++info->nr_replays;
-					/* ll_rw_block(WRITE, 1, &nbh); */
 					unlock_buffer(nbh);
 					brelse(obh);
 					brelse(nbh);
-- 
2.31.1


  parent reply	other threads:[~2022-09-01 13:24 UTC|newest]

Thread overview: 165+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-01 13:34 [PATCH v2 00/14] fs/buffer: remove ll_rw_block() Zhang Yi
2022-09-01 13:34 ` Zhang Yi
2022-09-01 13:34 ` [Cluster-devel] " Zhang Yi
2022-09-01 13:34 ` [Ocfs2-devel] " Zhang Yi via Ocfs2-devel
2022-09-01 13:34 ` [PATCH v2 01/14] fs/buffer: remove __breadahead_gfp() Zhang Yi
2022-09-01 13:34   ` Zhang Yi
2022-09-01 13:34   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:34   ` [Ocfs2-devel] " Zhang Yi via Ocfs2-devel
2022-09-05  5:52   ` Christoph Hellwig
2022-09-05  5:52     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:52     ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-09-01 13:34 ` [PATCH v2 02/14] fs/buffer: add some new buffer read helpers Zhang Yi
2022-09-01 13:34   ` Zhang Yi
2022-09-01 13:34   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:34   ` [Ocfs2-devel] " Zhang Yi via Ocfs2-devel
2022-09-01 15:44   ` Jan Kara
2022-09-01 15:44     ` [Cluster-devel] " Jan Kara
2022-09-01 15:44     ` [Ocfs2-devel] " Jan Kara via Ocfs2-devel
2022-09-05  5:52   ` Christoph Hellwig
2022-09-05  5:52     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:52     ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-09-01 13:34 ` [PATCH v2 03/14] fs/buffer: replace ll_rw_block() Zhang Yi
2022-09-01 13:34   ` Zhang Yi
2022-09-01 13:34   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:34   ` [Ocfs2-devel] " Zhang Yi via Ocfs2-devel
2022-09-01 15:45   ` Jan Kara
2022-09-01 15:45     ` [Cluster-devel] " Jan Kara
2022-09-01 15:45     ` [Ocfs2-devel] " Jan Kara via Ocfs2-devel
2022-09-05  5:53   ` Christoph Hellwig
2022-09-05  5:53     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:53     ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-09-01 13:34 ` [PATCH v2 04/14] gfs2: " Zhang Yi
2022-09-01 13:34   ` Zhang Yi
2022-09-01 13:34   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:34   ` [Ocfs2-devel] " Zhang Yi via Ocfs2-devel
2022-09-01 15:46   ` Jan Kara
2022-09-01 15:46     ` [Cluster-devel] " Jan Kara
2022-09-01 15:46     ` [Ocfs2-devel] " Jan Kara via Ocfs2-devel
2022-09-05  5:54   ` Christoph Hellwig
2022-09-05  5:54     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:54     ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-09-05 14:10   ` Andreas Gruenbacher
2022-09-05 14:10     ` [Cluster-devel] " Andreas Gruenbacher
2022-09-05 14:10     ` [Ocfs2-devel] " Andreas Gruenbacher via Ocfs2-devel
2022-09-01 13:34 ` [PATCH v2 05/14] isofs: " Zhang Yi
2022-09-01 13:34   ` Zhang Yi
2022-09-01 13:34   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:34   ` [Ocfs2-devel] " Zhang Yi via Ocfs2-devel
2022-09-05  5:54   ` Christoph Hellwig
2022-09-05  5:54     ` Christoph Hellwig
2022-09-05  5:54     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:54     ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-09-01 13:34 ` Zhang Yi via Ocfs2-devel [this message]
2022-09-01 13:34   ` [PATCH v2 06/14] jbd2: " Zhang Yi
2022-09-01 13:34   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:34   ` Zhang Yi
2022-09-01 15:50   ` Jan Kara
2022-09-01 15:50     ` [Cluster-devel] " Jan Kara
2022-09-01 15:50     ` [Ocfs2-devel] " Jan Kara via Ocfs2-devel
2022-09-05  5:54   ` Christoph Hellwig
2022-09-05  5:54     ` Christoph Hellwig
2022-09-05  5:54     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:54     ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-09-05  8:23   ` Theodore Ts'o
2022-09-05  8:23     ` [Cluster-devel] " Theodore Ts'o
2022-09-05  8:23     ` [Ocfs2-devel] " 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 13:34   ` Zhang Yi
2022-09-01 13:34   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:34   ` Zhang Yi
2022-09-01 15:47   ` [Ocfs2-devel] " Jan Kara via Ocfs2-devel
2022-09-01 15:47     ` [Cluster-devel] " Jan Kara
2022-09-01 15:47     ` Jan Kara
2022-09-05  5:54   ` Christoph Hellwig
2022-09-05  5:54     ` Christoph Hellwig
2022-09-05  5:54     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:54     ` [Ocfs2-devel] " 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 13:34   ` Zhang Yi
2022-09-01 13:34   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:34   ` Zhang Yi
2022-09-01 15:51   ` Jan Kara
2022-09-01 15:51     ` [Cluster-devel] " Jan Kara
2022-09-01 15:51     ` [Ocfs2-devel] " Jan Kara via Ocfs2-devel
2022-09-05  5:55   ` Christoph Hellwig
2022-09-05  5:55     ` Christoph Hellwig
2022-09-05  5:55     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:55     ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-09-06  1:06   ` Joseph Qi
2022-09-06  1:06     ` [Cluster-devel] " Joseph Qi
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 13:35   ` Zhang Yi
2022-09-01 13:35   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:35   ` Zhang Yi
2022-09-01 15:52   ` Jan Kara
2022-09-01 15:52     ` [Cluster-devel] " Jan Kara
2022-09-01 15:52     ` [Ocfs2-devel] " Jan Kara via Ocfs2-devel
2022-09-05  5:55   ` Christoph Hellwig
2022-09-05  5:55     ` Christoph Hellwig
2022-09-05  5:55     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:55     ` [Ocfs2-devel] " 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 13:35   ` Zhang Yi
2022-09-01 13:35   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:35   ` Zhang Yi
2022-09-01 15:58   ` Jan Kara
2022-09-01 15:58     ` [Cluster-devel] " Jan Kara
2022-09-01 15:58     ` [Ocfs2-devel] " Jan Kara via Ocfs2-devel
2022-09-05  5:55   ` Christoph Hellwig
2022-09-05  5:55     ` Christoph Hellwig
2022-09-05  5:55     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:55     ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel
2022-09-01 13:35 ` [PATCH v2 11/14] ufs: " Zhang Yi
2022-09-01 13:35   ` Zhang Yi
2022-09-01 13:35   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:35   ` [Ocfs2-devel] " Zhang Yi via Ocfs2-devel
2022-09-01 15:59   ` Jan Kara
2022-09-01 15:59     ` [Cluster-devel] " Jan Kara
2022-09-01 15:59     ` [Ocfs2-devel] " Jan Kara via Ocfs2-devel
2022-09-05  5:56   ` Christoph Hellwig
2022-09-05  5:56     ` Christoph Hellwig
2022-09-05  5:56     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:56     ` [Ocfs2-devel] " 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-01 13:35   ` Zhang Yi
2022-09-01 13:35   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:35   ` Zhang Yi
2022-09-05  5:56   ` Christoph Hellwig
2022-09-05  5:56     ` Christoph Hellwig
2022-09-05  5:56     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:56     ` [Ocfs2-devel] " 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 13:35   ` Zhang Yi
2022-09-01 13:35   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:35   ` Zhang Yi
2022-09-01 15:59   ` Jan Kara
2022-09-01 15:59     ` [Cluster-devel] " Jan Kara
2022-09-01 15:59     ` [Ocfs2-devel] " Jan Kara via Ocfs2-devel
2022-09-02  0:30   ` Al Viro
2022-09-02  0:30     ` [Cluster-devel] " Al Viro
2022-09-02  0:30     ` [Ocfs2-devel] " Al Viro via Ocfs2-devel
2022-09-02  1:32     ` Zhang Yi
2022-09-02  1:32       ` Zhang Yi
2022-09-02  1:32       ` [Cluster-devel] " Zhang Yi
2022-09-02  1:32       ` [Ocfs2-devel] " Zhang Yi via Ocfs2-devel
2022-09-02  1:51       ` Al Viro
2022-09-02  1:51         ` [Cluster-devel] " Al Viro
2022-09-02  1:51         ` [Ocfs2-devel] " Al Viro via Ocfs2-devel
2022-09-02  1:58         ` Zhang Yi
2022-09-02  1:58           ` Zhang Yi
2022-09-02  1:58           ` [Cluster-devel] " Zhang Yi
2022-09-02  1:58           ` [Ocfs2-devel] " Zhang Yi via Ocfs2-devel
2022-09-05  5:56   ` Christoph Hellwig
2022-09-05  5:56     ` Christoph Hellwig
2022-09-05  5:56     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:56     ` [Ocfs2-devel] " 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-01 13:35   ` Zhang Yi
2022-09-01 13:35   ` [Cluster-devel] " Zhang Yi
2022-09-01 13:35   ` Zhang Yi
2022-09-05  5:57   ` Christoph Hellwig
2022-09-05  5:57     ` Christoph Hellwig
2022-09-05  5:57     ` [Cluster-devel] " Christoph Hellwig
2022-09-05  5:57     ` [Ocfs2-devel] " Christoph Hellwig via Ocfs2-devel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220901133505.2510834-7-yi.zhang@huawei.com \
    --to=ocfs2-devel@oss.oracle.com \
    --cc=agruenba@redhat.com \
    --cc=almaz.alexandrovich@paragon-software.com \
    --cc=axboe@kernel.dk \
    --cc=chengzhihao1@huawei.com \
    --cc=cluster-devel@redhat.com \
    --cc=dushistov@mail.ru \
    --cc=hch@infradead.org \
    --cc=jack@suse.cz \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ntfs3@lists.linux.dev \
    --cc=reiserfs-devel@vger.kernel.org \
    --cc=rpeterso@redhat.com \
    --cc=tytso@mit.edu \
    --cc=viro@zeniv.linux.org.uk \
    --cc=yi.zhang@huawei.com \
    --cc=yukuai3@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.