Re: Question regarding direntry read error in fat filesystem when a device is removed

From: Bodo Eggert
Date: Sun Mar 08 2009 - 09:29:54 EST


YS Kim <historic59@xxxxxxxxx> wrote:

> I have a question about too many error messages from FAT when
> unexpected device removal occurs.
> I got the following error messages when I unplugged a USB
> drive(formatted as FAT) during direntry reading.
>
> sd 0:0:0:0: rejecting I/O to device being removed
> FAT: Directory bread(block 1478192) failed
> sd 0:0:0:0: rejecting I/O to device being removed
> FAT: Directory bread(block 1478193) failed
> sd 0:0:0:0: rejecting I/O to device being removed
> FAT: Directory bread(block 1478194) failed
> sd 0:0:0:0: rejecting I/O to device being removed
> FAT: Directory bread(block 1478195) failed
> ...
>
> From the code of fat__get_entry in dir.c, I found that it continues to
> read the next device block
> even if the block reading has been failed. Because of this continuous
> read, a lot of error messages
> come up if the device itself is removed during reading fairly many
> files, and it causes the malfunction
> of my embedded system.
[...]
> Thus, if I modify the code to just return error when fat__get_entry
> fails to read blocks, could it be
> cause any side effects? Except the purpose of backup/recovery, is
> there any other reason for
> the continuous block read?

I guess aborting the directory read would work as expected, but what about
suppressing the messages if you're not sure?

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/