| To: | Dave Chinner <david@xxxxxxxxxxxxx> |
|---|---|
| Subject: | Re: [dm-devel] [BUG] pvmove corrupting XFS filesystems (was Re: [BUG] Internal error xfs_dir2_data_reada_verify) |
| From: | Matteo Frigo <athena@xxxxxxxx> |
| Date: | Tue, 26 Feb 2013 21:21:44 -0500 |
| Cc: | dm-devel@xxxxxxxxxx, xfs@xxxxxxxxxxx |
| Delivered-to: | xfs@xxxxxxxxxxx |
| In-reply-to: | <20130227014900.GY5551@dastard> (Dave Chinner's message of "Wed, 27 Feb 2013 12:49:00 +1100") |
| References: | <87d2vnc34r.fsf@xxxxxxxx> <20130226044039.GM5551@dastard> <20130227010414.GD1514@xxxxxxxxxxxxxxxxxx> <20130227014900.GY5551@dastard> |
| User-agent: | Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) |
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;
}
Regards,
MF
|
| Previous by Date: | Re: Read corruption on ARM, Dave Chinner |
|---|---|
| Next by Date: | [PATCH] xfs: don't verify buffers after IO errors, Dave Chinner |
| Previous by Thread: | Re: [dm-devel] [BUG] pvmove corrupting XFS filesystems (was Re: [BUG] Internal error xfs_dir2_data_reada_verify), Dave Chinner |
| Next by Thread: | Re: [dm-devel] [BUG] pvmove corrupting XFS filesystems (was Re: [BUG] Internal error xfs_dir2_data_reada_verify), Dave Chinner |
| Indexes: | [Date] [Thread] [Top] [All Lists] |