On Thu, Aug 27, 2015 at 08:19:52AM +1000, Dave Chinner wrote: > On Wed, Aug 26, 2015 at 03:06:36PM -0400, David Jeffery wrote: > > There is an issue with xfs's error reporting in some cases of I/O partially > > failing and partially succeeding. Calls like fsync() can report success even > > though not all I/O was successful. > > Hi David, > > I read your bug report last night and after considering all the work > you put into it, I was going to ask if you wanted to finish off the > job by writing the patch to fix it. But you beat me to it. > > Nice work! :) > > > The issue can occur when there are multiple bio per xfs_ioend struct. > > Each call to xfs_end_bio() for a bio completing will write a value to > > ioend->io_error. If a successful bio completes after any failed bio, no > > error is reported do to it writing 0 over the error code set by any failed bio. > > The I/O error information is now lost and when the ioend is completed > > only success is reported back up the filesystem stack. > > It's worth mentioning the case that this was seen in - a single > failed disk in a raid 0 stripe, and the error from the bio to the > failed disk was overwritten by the successes from the bios to the > other disks. > > FWIW, I think that we also need to create an xfstest for this case, > too, because it's clear that this is a big hole in our test coverage > (i.e. partial block device failure). It might be best to talk to > Eryu (cc'd) to get your reproducer converted into a xfstest case > that we can then test all filesystems against? Sure, I'll look into the reproducer and work on a fstests case. Thanks, Eryu _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs