On Tue, Feb 26, 2013 at 09:21:44PM -0500, Matteo Frigo wrote: > Dave Chinner <david@xxxxxxxxxxxxx> writes: > > > On Wed, Feb 27, 2013 at 01:04:14AM +0000, Alasdair G Kergon wrote: > >> (Quick pointers that might be relevant) > >> > >> EAGAIN, I'm not aware of dm itself returning that on the i/o path. > > > > Neither am I, but it's coming from somewhere in the IO path... > > 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; > } Trees, forest.... Thanks for pointing out the obvious, Matteo. :) Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel