diff mbox

[v2] btrfs-progs: lowmem check: Fix false alert about file extent interrupt

Message ID 20170622081256.4981-1-lufq.fnst@cn.fujitsu.com (mailing list archive)
State New, archived
Headers show

Commit Message

Lu Fengqi June 22, 2017, 8:12 a.m. UTC
As Qu mentioned in this thread
(https://www.spinics.net/lists/linux-btrfs/msg64469.html), compression
can cause regular extent to co-exist with inlined extent. This coexistence
makes things confusing. Since it was permitted currently, so fix
btrfsck to prevent a bunch of error logs that will make user feel
panic.

When check file extent, record the extent_end of regular extent to check
if there is a gap between the regular extents. Normally there is only one
inlined extent, so the extent_end of inlined extent is useless. However,
if regular extent can co-exist with inlined extent, the extent_end of
inlined extent also need to record.

Reported-by: Marc MERLIN <marc@merlins.org>
Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
---

Sorry, I mistook the reporter in v1.
Changes since v1:
- Fix the reported-by.

 cmds-check.c | 1 +
 1 file changed, 1 insertion(+)

Comments

David Sterba June 26, 2017, 2:55 p.m. UTC | #1
On Thu, Jun 22, 2017 at 04:12:56PM +0800, Lu Fengqi wrote:
> As Qu mentioned in this thread
> (https://www.spinics.net/lists/linux-btrfs/msg64469.html), compression
> can cause regular extent to co-exist with inlined extent. This coexistence
> makes things confusing. Since it was permitted currently, so fix
> btrfsck to prevent a bunch of error logs that will make user feel
> panic.
> 
> When check file extent, record the extent_end of regular extent to check
> if there is a gap between the regular extents. Normally there is only one
> inlined extent, so the extent_end of inlined extent is useless. However,
> if regular extent can co-exist with inlined extent, the extent_end of
> inlined extent also need to record.
> 
> Reported-by: Marc MERLIN <marc@merlins.org>
> Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>

Applied, thanks.

Do you have a test for that?
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Lu Fengqi June 27, 2017, 5:37 a.m. UTC | #2
On Mon, Jun 26, 2017 at 04:55:04PM +0200, David Sterba wrote:
>On Thu, Jun 22, 2017 at 04:12:56PM +0800, Lu Fengqi wrote:
>> As Qu mentioned in this thread
>> (https://www.spinics.net/lists/linux-btrfs/msg64469.html), compression
>> can cause regular extent to co-exist with inlined extent. This coexistence
>> makes things confusing. Since it was permitted currently, so fix
>> btrfsck to prevent a bunch of error logs that will make user feel
>> panic.
>> 
>> When check file extent, record the extent_end of regular extent to check
>> if there is a gap between the regular extents. Normally there is only one
>> inlined extent, so the extent_end of inlined extent is useless. However,
>> if regular extent can co-exist with inlined extent, the extent_end of
>> inlined extent also need to record.
>> 
>> Reported-by: Marc MERLIN <marc@merlins.org>
>> Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
>
>Applied, thanks.
>
>Do you have a test for that?

Yes, I have already posted this testcase
(https://www.spinics.net/lists/linux-btrfs/msg66802.html) yesterday. In
addition, this patch has an updated version
(https://www.spinics.net/lists/linux-btrfs/msg66803.html) which make
lowmem mode output more detailed information when file extent interrupt.
Since the patch v2 has been applied, then I will send a patch for this
modification alone.
David Sterba June 27, 2017, 12:06 p.m. UTC | #3
On Tue, Jun 27, 2017 at 01:37:47PM +0800, Lu Fengqi wrote:
> On Mon, Jun 26, 2017 at 04:55:04PM +0200, David Sterba wrote:
> >On Thu, Jun 22, 2017 at 04:12:56PM +0800, Lu Fengqi wrote:
> >> As Qu mentioned in this thread
> >> (https://www.spinics.net/lists/linux-btrfs/msg64469.html), compression
> >> can cause regular extent to co-exist with inlined extent. This coexistence
> >> makes things confusing. Since it was permitted currently, so fix
> >> btrfsck to prevent a bunch of error logs that will make user feel
> >> panic.
> >> 
> >> When check file extent, record the extent_end of regular extent to check
> >> if there is a gap between the regular extents. Normally there is only one
> >> inlined extent, so the extent_end of inlined extent is useless. However,
> >> if regular extent can co-exist with inlined extent, the extent_end of
> >> inlined extent also need to record.
> >> 
> >> Reported-by: Marc MERLIN <marc@merlins.org>
> >> Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
> >
> >Applied, thanks.
> >
> >Do you have a test for that?
> 
> Yes, I have already posted this testcase
> (https://www.spinics.net/lists/linux-btrfs/msg66802.html) yesterday.

I see, thanks.

> In
> addition, this patch has an updated version
> (https://www.spinics.net/lists/linux-btrfs/msg66803.html) which make
> lowmem mode output more detailed information when file extent interrupt.
> Since the patch v2 has been applied, then I will send a patch for this
> modification alone.

I'll replace the patch with v3.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/cmds-check.c b/cmds-check.c
index c052f66e..c173d285 100644
--- a/cmds-check.c
+++ b/cmds-check.c
@@ -4782,6 +4782,7 @@  static int check_file_extent(struct btrfs_root *root, struct btrfs_key *fkey,
 				extent_num_bytes, item_inline_len);
 			err |= FILE_EXTENT_ERROR;
 		}
+		*end += extent_num_bytes;
 		*size += extent_num_bytes;
 		return err;
 	}