Re: End of FAT directories

From: OGAWA Hirofumi
Date: Fri Apr 22 2011 - 16:40:56 EST


Michael Karcher <kernel@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> writes:

> I'm afraid this is not a pure academic post, but I write it because I
> spent hours on trying to find out why I had problem to make some USB
> flash drive bootable with syslinux (which follows the MS model on
> loading files while booting) after copying files with the linux kernel
> (which follows the Linux model, obviously), additionally dosfsck on that
> stick showed quite strange results (it dived into a directory that does
> no longer exist). Another incarnation is mentioned in
> https://wiki.physik.fu-berlin.de/linux-minidisc/doku.php?id=himddiskformat
> in the section "Filesystem Issues with some Models on Linux". Some of
> the Sony devices clear only the first half of the cluster containing
> that subdirectory to zeroes, which works fine if software aborts on the
> first entry being zero, but obviously makes problem if the second half
> of the cluster is accessed.
>
> I would really appreciate it if all FOSS working on FAT would agree to
> one behaviour, and I think we have no choice except being MS compatible
> (i.e. implement the behaviour as it has always been in DOS and Windows)

It is simply the bug of Sony devices, and can't work on it for both of
Windows and Linux (it have to be fixed by fsck). Yeah, I know Linux can
stop on first zeroed directory entry (I will not complain about it), but
it doesn't fix the problem at all.

Assume 0-3 directory entires fine, 4 is zeroed entry, and 5- is crappy data.

1| ENT1 valid
2| ENT2 valid
3| ENT3 valid
4| zeroed
5| djafdjoi crappy data
...

Windows will stop at 4, but if windows write new entry as 4, 5- will
show those up as crap like linux. I.e. never adds new zeroed entry as
end of directory. In short, in spec, directory must be initialized by
zero (it is same assumption on linux and windows).

Thanks.
--
OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>
--
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/