On Fri, Mar 08, 2013 at 09:31:40AM +1100, Dave Chinner wrote: > On Thu, Mar 07, 2013 at 07:13:27AM -0500, Matteo Frigo wrote: > > Matteo Frigo <athena@xxxxxxxx> writes: > > > > > Well, I don't really know anything about this topic, so I may be > > > completely off the mark, but dm-raid1.c:mirror_map() does indeed return > > > EWOULDBLOCK, and EWOULDBLOCK is #define'd to be EAGAIN, so it seems to > > > me that dm-raid1 does indeed return EAGAIN for "rw == READA" (which I > > > assume is read-ahead) if the "region is not in-sync": > > > > > > /* > > > * If region is not in-sync queue the bio. > > > */ > > > if (!r || (r == -EWOULDBLOCK)) { > > > if (rw == READA) > > > return -EWOULDBLOCK; > > > > > > queue_bio(ms, bio, rw); > > > return DM_MAPIO_SUBMITTED; > > > } > > > > Dave (and others), > > > > do you have any suggestion on what should be done to fix this bug? > > > > I have tried returning -EIO instead of -EWOULDBLOCK, but xfs does not > > like that. dm-zero.c:zero_map() appears to return -EIO too, so this is > > another potential issue. > > You need the XFS patch I posted so that readahead buffer > verification is avoided in the case of an error being returned from > the readahead. I don't recall if that patch was sent to this thread, so here it is: http://oss.sgi.com/archives/xfs/2013-02/msg00516.html Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel