VFAT i_pos value

OGAWA Hirofumi hirofumi at mail.parknet.co.jp
Thu Dec 1 09:38:24 EST 2011


Kai Meyer <kai at gnukai.com> writes:

> I'm getting this error:
> FAT: Filesystem error (dev sblsnap0)
>      fat_get_cluster: invalid cluster chain (i_pos 523791)
>
> I'm wondering if there was a way to figure out what sector is causing 
> the error? I would like to try and track down what is changing that 
> sector and fix the problem. Is there a straight forward way to convert 
> i_pos to a sector value? I've been staring at the fat.c and fat.h code 
> all morning, and I'm having trouble grok'ing the flow.

The i_pos means directory entry (contains inode information in unix-fs)
position,

    block number == i_pos / (logical-blocksize / 32)
    offset       == i_pos & (logical-blocksize / 32)

the above position's directory entry contains information for
problematic file. This is how to use i_pos information.

FWIW, in this error case, the cluster chain in FAT table which is
pointed by that entry, it has invalid cluster value.

Thanks.
-- 
OGAWA Hirofumi <hirofumi at mail.parknet.co.jp>



More information about the Kernelnewbies mailing list