[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: puzzling error message



Hi,

On Tue, Jan 08, 2002 at 03:27:19PM -0800, Andrew Morton wrote:

> > What is weird is that in this recent case, and the one before, the
> > corruption has been in partitions that I would have thought wouldn't
> > be written too, e.g. I could understand if, while writing to /home
> > I got trashed data, but I didn't expect /usr to be corrupted simply
> > by reading it?  Unless the head in the HDD had crashed but I would
> > have expected the Win2000 partion to be affected as well and it
> > doesn't seem upset at the moment.
> 
> The journal contains, basically, a list of block numbers (4-byte
> integers) and then the block contents themselves.  On recovery,
> we read the block numbers, save them in memory, then read that
> many blocks and write them out into the fs.
> 
> So if the "list of block numbers" gets corrupted, the recovery
> data will be sprayed all over the disk :(

No, we should be safe from that.  The recovery is done on the
partition's own minor device, not on the whole-disk device, and the
block layer does bounds checking on that.

For recovery, we use ll_rw_block, which does the checks directly.  For
normal journal IO we use submit_bh(), which does the bounds checking
inside generic_make_request.  In both cases, the block layer prevents
IO to our partition from leaking out onto a different partition.  If
such leaks are occurring, they have to be due to a fault below the
level of those bounds checks.

Cheers,
 Stephen





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]