My system information:
-bash-3.00# uname -a
Linux XXXXX #1 SMP Thu May 17 14:00:09 UTC 2007 ia64 ia64 ia64
-bash-3.00# cat /etc/issue
Welcome to SUSE Linux Enterprise Server 10 SP1 (ia64) - Kernel \r (\l).
On 1/14/08, Gopala Krishna <gopalakrishna.n.m@xxxxxxxxx> wrote:
> I am seeing some strange problem with XFS and would like to know the
> expected behavior and if it is faulty is there any patches to resolve the
> Basically I am extracting metadata information for a given file by reading
> the inode structure from the particular disk offset (based on it's position
> calculated by published inode structure and super block structure
> information). Before reading the metada data information from the disk, I
> am calling fsync (I used to call sync, but later I changed to fsync, since
> sync is not guranteed to flush all meta data) to ensure all metadata
> related to file is flushed to disk. Later I am reading particular disk
> offset as per calculation. I am getting XFS magic field properly after
> mapping to XFs inode structure. However I am not getting dimode properly in
> some cases (not all cases) and it shows 00000 even for regular file and
> It is happening only when I copy new file to XFS. But, when I unmount the
> file system and remount it, everything goes fine and I could get all
> expected meta data information and proper value for dimode (in the inode
> structure which indicates the type of the file, i.e regular directory
> etc.) .
> Once I mount it back and later even if I remove the same file and copy it
> back to XFS and then run my utility program, I could read mode information
> properly. But If I copy different file, again I could not get dimode
> properly. I have to unmount and remount to get the mode properly to make my
> utility program to display information properly. Once it starts getting
> proper mode value, it continues.
> So I am suspecting, even after calling fsync (which says it would block
> untill it flushes metadata information to disk ), is not really flushing. So
> only during unmount, it flushes metadata and hence I could get dimode
> properly. since after remounting , by reading metadata information , I could
> get mode properly and differentiate directory or regular file, and also it
> is filling magic etc. properly, I feel the data I am reading is right and
> that I could compare with stat system call and ls commands.
> If I am doing something wrong and no problem with XFS, then I should not
> get mode field properly even after unmount/remount operation.
> Is there any problem with XFS fsync? Why dimode is getting updated only
> during unmount? why not when I call fsync? Because fsync says it has to
> flush all meta dat to disk before existing.
> Please let me know your feedback.
[[HTML alternate version deleted]]