mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Ryusuke Konishi <konishi.ryusuke@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-nilfs@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 5/5] nilfs2: do not propagate ENOENT error from nilfs_sufile_mark_dirty()
Date: Thu, 22 Aug 2024 00:46:27 +0900	[thread overview]
Message-ID: <20240821154627.11848-6-konishi.ryusuke@gmail.com> (raw)
In-Reply-To: <20240821154627.11848-1-konishi.ryusuke@gmail.com>

nilfs_sufile_mark_dirty(), which marks a block in the sufile metadata
file as dirty in preparation for log writing, returns -ENOENT to the
caller if the block containing the segment usage of the specified
segment is missing.

This internal code can propagate through the log writer to system
calls such as fsync.  To prevent this, treat this case as a filesystem
error and return -EIO instead.

Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
---
 fs/nilfs2/sufile.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/fs/nilfs2/sufile.c b/fs/nilfs2/sufile.c
index f071eba48163..eea5a6a12f7b 100644
--- a/fs/nilfs2/sufile.c
+++ b/fs/nilfs2/sufile.c
@@ -513,8 +513,15 @@ int nilfs_sufile_mark_dirty(struct inode *sufile, __u64 segnum)
 
 	down_write(&NILFS_MDT(sufile)->mi_sem);
 	ret = nilfs_sufile_get_segment_usage_block(sufile, segnum, 0, &bh);
-	if (ret)
+	if (unlikely(ret)) {
+		if (ret == -ENOENT) {
+			nilfs_error(sufile->i_sb,
+				    "segment usage for segment %llu is unreadable due to a hole block",
+				    (unsigned long long)segnum);
+			ret = -EIO;
+		}
 		goto out_sem;
+	}
 
 	kaddr = kmap_local_page(bh->b_page);
 	su = nilfs_sufile_block_get_segment_usage(sufile, segnum, bh, kaddr);
-- 
2.34.1


      parent reply	other threads:[~2024-08-21 15:46 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-21 15:46 [PATCH 0/5] nilfs2: prevent unexpected ENOENT propagation Ryusuke Konishi
2024-08-21 15:46 ` [PATCH 1/5] nilfs2: treat missing sufile header block as metadata corruption Ryusuke Konishi
2024-08-21 15:46 ` [PATCH 2/5] nilfs2: treat missing cpfile " Ryusuke Konishi
2024-08-21 15:46 ` [PATCH 3/5] nilfs2: do not propagate ENOENT error from sufile during recovery Ryusuke Konishi
2024-08-21 15:46 ` [PATCH 4/5] nilfs2: do not propagate ENOENT error from sufile during GC Ryusuke Konishi
2024-08-21 15:46 ` Ryusuke Konishi [this message]

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=20240821154627.11848-6-konishi.ryusuke@gmail.com \
    --to=konishi.ryusuke@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nilfs@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®