| To: | Håkan Lindqvist <lindqvist@xxxxxxxxxx> |
|---|---|
| Subject: | Re: Linux 2.4.17-xfs vs previous XFS versions and certain non-us characters in filenames |
| From: | Stephen Lord <lord@xxxxxxx> |
| Date: | Sat, 26 Jan 2002 21:08:52 -0600 |
| Cc: | Linux XFS Mailing List <linux-xfs@xxxxxxxxxxx> |
| References: | <1012101803.1045.28.camel@steelnest> <1012102374.1045.35.camel@steelnest> |
| Sender: | owner-linux-xfs@xxxxxxxxxxx |
| User-agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.7) Gecko/20011226 |
Hekan Lindqvist wrote: There really is no new xfs code in 2.4.17, just some I/O related bug fixes, nothingI just noticed this seems to be the same problem as mentioned in the "Problems with yesterday CVS and international characters"-thread which I failed to find before sending "my problem" to the list. at all to do with directories. Did you switch compilers between building these kernel versions? The fact that files created on one kernel cause problems for the other is strange, it suggests the hash calculations are coming out different between the kernels.
OK, do this. First find the inode number of the containing directory using ls -lid pathname of dir [root@burst xfs]# ls -lid . 128 drwxr-xr-x 5 root root 70 Jan 26 14:26 .
Then as root run xfs_db -r /dev/xxx on the device - preferably when it is not mounted. Enter inode xxxx p where xxxx is the number in the first column of ls output (128 above). This will dump out the condents of the inode, so for my example: [root@burst xfs]# xfs_db -r /dev/hda3 xfs_db: inode 128 xfs_db: p core.magic = 0x494e core.mode = 040755 core.version = 1 core.format = 1 (local) core.nlinkv1 = 5 core.uid = 0 core.gid = 0 core.atime.sec = Sat Jan 26 13:35:15 2002 core.atime.nsec = 021650000 core.mtime.sec = Sat Jan 26 14:26:02 2002 core.mtime.nsec = 451650000 core.ctime.sec = Sat Jan 26 14:26:02 2002 core.ctime.nsec = 451650000 core.size = 70 core.nblocks = 0 core.extsize = 0 core.nextents = 0 core.naextents = 0 core.forkoff = 0 core.aformat = 2 (extents) core.dmevmask = 0 core.dmstate = 0 core.newrtbm = 0 core.prealloc = 0 core.realtime = 0 core.gen = 0 next_unlinked = null u.sfdir2.hdr.count = 5 u.sfdir2.hdr.i8count = 0 u.sfdir2.hdr.parent.i4 = 128 u.sfdir2.list[0].namelen = 3 u.sfdir2.list[0].offset = 0x30 u.sfdir2.list[0].name = "tmp" u.sfdir2.list[0].inumber.i4 = 131 u.sfdir2.list[1].namelen = 10 u.sfdir2.list[1].offset = 0x50 u.sfdir2.list[1].name = "client.txt" u.sfdir2.list[1].inumber.i4 = 133 u.sfdir2.list[2].namelen = 8 u.sfdir2.list[2].offset = 0x80 u.sfdir2.list[2].name = "NBSIMULD" u.sfdir2.list[2].inumber.i4 = 6292640 u.sfdir2.list[3].namelen = 4 u.sfdir2.list[3].offset = 0xd8 u.sfdir2.list[3].name = "doio" u.sfdir2.list[3].inumber.i4 = 136 u.sfdir2.list[4].namelen = 4 u.sfdir2.list[4].offset = 0xe8 u.sfdir2.list[4].name = "lord" u.sfdir2.list[4].inumber.i4 = 132 If your directory is 4K in length then you would get output like this; xfs_db: inode 6292640 xfs_db: p core.magic = 0x494e core.mode = 040700 core.version = 1 core.format = 2 (extents) core.nlinkv1 = 3 core.uid = 0 core.gid = 0 core.atime.sec = Sat Jan 26 04:02:53 2002 core.atime.nsec = 588413000 core.mtime.sec = Tue Jan 15 05:19:26 2002 core.mtime.nsec = 427555000 core.ctime.sec = Tue Jan 15 05:19:26 2002 core.ctime.nsec = 427555000 core.size = 4096 core.nblocks = 1 core.extsize = 0 core.nextents = 1 core.naextents = 0 core.forkoff = 0 core.aformat = 2 (extents) core.dmevmask = 0 core.dmstate = 0 core.newrtbm = 0 core.prealloc = 0 core.realtime = 0 core.gen = 8 next_unlinked = null u.bmx[0] = [startoff,startblock,blockcount,extentflag] 0:[0,796416,1,0] Use the commands dblock 0 p And will dump the directory contents: xfs_db: p bhdr.magic = 0x58443242 bhdr.bestfree[0].offset = 0x108 bhdr.bestfree[0].length = 0xe98 bhdr.bestfree[1].offset = 0 bhdr.bestfree[1].length = 0 bhdr.bestfree[2].offset = 0 bhdr.bestfree[2].length = 0 bu[0].inumber = 6292640 bu[0].namelen = 1 bu[0].name = "." bu[0].tag = 0x10 bu[1].inumber = 128 bu[1].namelen = 2 bu[1].name = ".." bu[1].tag = 0x20 bu[2].inumber = 8651008 bu[2].namelen = 6 bu[2].name = "CLIENT" bu[2].tag = 0x30 ..... For the name you cannot find run hash xxxx where xxxx is the name. Finally from within xfsdb (you must be unmounted for this) blockget -n Send all the output to me and I will see if there is anything odd looking. Steve |
| Previous by Date: | Re: Linux 2.4.17-xfs vs previous XFS versions and certain non-us characters in filenames, Håkan Lindqvist |
|---|---|
| Next by Date: | Re: Linux 2.4.17-xfs vs previous XFS versions and certain non-uscharacters in filenames, D. Stimits |
| Previous by Thread: | Re: Linux 2.4.17-xfs vs previous XFS versions and certain non-us characters in filenames, Håkan Lindqvist |
| Next by Thread: | Re: Linux 2.4.17-xfs vs previous XFS versions and certain non-us characters in filenames, Håkan Lindqvist |
| Indexes: | [Date] [Thread] [Top] [All Lists] |