ext3 directory corruption under Xen

From: Christopher S. Aker
Date: Mon Jun 23 2008 - 12:30:25 EST


We've been seeing a rash of ext3 directory corruption occurring under Xen. All but one of the reports have been with filesystems formatted with 1024 blocksize. We have one report, that's potentialy the same bug, occurring on a filesystem with 4096 blocksize (either way, it was some type of corruption in that case). In all cases, the filesystems were mounted with ext3's default journaling mode. No quotas or anything else other than the default ext3 mount options.

It's happened on a number of different hosts, all of the same hardware and software configuration (Xen 3.2 64bit, 32bit pae dom0, 32bit pae domUs. LVM backend with 3ware hardware RAID-1). Some of those hosts were previously running non-virtaulized Linux and UML, using the identical guest images, and under that configuration never experienced this problem.

This has occurred under both 2.6.18-xenbits and the more recent pv_ops based kernels (2.6.24, 2.6.25), which I presume are all using the same blkfront driver code.

The common workloads from the reports seems to be active maildirs and rsync.

The initial errors reported back are all from fs/ext3/dir.c, in ext3_check_dir_entry(). Most commonly hit is the "rec_len % 4 != 0" check. We've seen other checks trigger, but my assumption is that those happen after more stuff gets whacked out.

Eventually the fs will go read-only. In extreme cases, the fs is chewed through enough that data is lost.

It's tricky to track down the trigger because you can only detect the corruption after it's happened. Our attempts to reproduce this using various filesystem thrashing scripts haven't yielded a reliable way to trigger it, however we have been successful in triggering it twice -- in two weeks :( .

My hope is that this triggers an "a-hah" from someone in LKML or Xen land who has experience with this code, or that this is a known issue and a fix already lives.

We're scared. Please help.

Thanks,
-Chris

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/