Skip to contentSkip to conversation

New: Data corruption triggers ext4 oops

Bug 20992 [email protected] 1 participant 6 messages Oct 23, 2010 – Dec 10, 2013

lore
Share & tools
lore
#0 lore raw

https://bugzilla.kernel.org/show_bug.cgi?id=20992

Summary: Data corruption triggers ext4 oops
Product: File System
Version: 2.5
Kernel Version: 2.6.35.7
Platform: All
OS/Version: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: ext4
AssignedTo: [email protected]
ReportedBy: [email protected]
Regression: No

While running I/O performance tests I accidentally overwrote an ext4 filesystem. The next access of that filesystem triggered a kernel oops. I don't think that should happen ?

Signature · 3 lines
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.
#1 lore raw

[Bug 20992] Data corruption triggers ext4 oops

https://bugzilla.kernel.org/show_bug.cgi?id=20992

Theodore Tso <[email protected]> changed:

What |Removed |Added
----------------------------------------------------------------------------
CC| |[email protected]

--- Comment #1 from Theodore Tso <[email protected]> 2010-10-23 14:56:03 --- Can you send the oops message, complete with the stack trace?

Thanks!!

Signature · 3 lines
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.
#2 lore raw

[Bug 20992] Data corruption triggers ext4 oops

In reply to [email protected]

https://bugzilla.kernel.org/show_bug.cgi?id=20992

--- Comment #2 from Bart Van Assche <[email protected]> 2010-10-23 14:58:48 --- Created an attachment (id=34542)
--> (https://bugzilla.kernel.org/attachment.cgi?id=34542)
Kernel oops

Attached backtrace.

Signature · 3 lines
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.
#3 lore raw

[Bug 20992] Data corruption triggers ext4 oops

In reply to [email protected]

https://bugzilla.kernel.org/show_bug.cgi?id=20992

--- Comment #3 from Theodore Tso <[email protected]> 2010-10-23 15:20:43 --- Yep, looks like a bug alright.

Quoted 1 line

From what I can tell, you were in the middle of async I/O, at the time when the

disk was corrupted. The problem seemed to come after the I/O was completed, and ext4_convert_unwritten_extents() was trying to set the initialized bit on the extent tree. At that point the extent tree must have gotten corrupted on disk, and this seriously confused the extent conversion code, which ended up passing 0 to ext4_ext_put_in_cache() as the length of the extent, and that tripped the BUG_ON in ext4_ext_put_in_cache().

How did you corrupt the file system while it was mounted? Was it via some dd
to the disk device directly?

We do have code that checks to make sure the extent tree is sane, but we skip it if the data was already in the buffer cache, to save CPU costs. But if you wrote to the disk device directly, it would have gone through the buffer cache, since the extent tree was already cached, we would have skipped the validation step, and that could be the explanation for how the bug got triggered.

If so, I'm loathe to turn on the validation check unconditionally, since that would kill performance. I can probably change the BUG_ON in ext4_put_in_cache() to rather set the cache state to "invalid", which would at least prevent the BUG_ON. The filesystem was probably well and truly trashed, though, so sooner or later the ext4 fs code would have hit something to cause it to be very unhappy. Hoepfully it would be an ext4_error() call to mark the file system as corrupted, as opposed to another BUG_ON.

Signature · 3 lines
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.
#4 lore raw

[Bug 20992] Data corruption triggers ext4 oops

In reply to [email protected]

https://bugzilla.kernel.org/show_bug.cgi?id=20992

--- Comment #4 from Bart Van Assche <[email protected]> 2010-10-23 15:27:06 --- (In reply to comment #3)

Quoted 2 lines

How did you corrupt the file system while it was mounted? Was it via some dd
to the disk device directly?

Indeed - the filesystem was corrupted while mounted by overwriting the entire contents with dd (dd if=/dev/zero of=/dev/sd... oflag=direct).

Signature · 3 lines
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.