Bug 453218
| Summary: | getdents() returns an entry with d_name="" | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 5 | Reporter: | Henry Hartley <henryhartley> | ||||
| Component: | kernel | Assignee: | Josef Bacik <jbacik> | ||||
| Status: | CLOSED NOTABUG | QA Contact: | Martin Jenner <mjenner> | ||||
| Severity: | low | Docs Contact: | |||||
| Priority: | low | ||||||
| Version: | 5.2 | CC: | esandeen, mitr | ||||
| Target Milestone: | rc | ||||||
| Target Release: | --- | ||||||
| Hardware: | i686 | ||||||
| OS: | Linux | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2008-08-07 14:51:54 UTC | Type: | --- | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Embargoed: | |||||||
| Attachments: |
|
||||||
|
Description
Henry Hartley
2008-06-27 20:45:45 UTC
What exact path is reported last by (updatedb -v), and what type of file system is mounted at that path? Please attach the last 1000 lines of the "log" file generated by (strace -v -o log updatedb) as well. Created attachment 310693 [details]
1000 lines of strace log
The file last mentioned in the updatedb -v log was /mnt/oldslash/lib/modules/2.6.11-1.14_FC3/build/include/config/dvb/ves1820/module.h When I updated the system from a Fedora Core 3 install back in February (I know, I know) I kept the old disc and mounted it under /mnt/oldslash. It is either ext2 or ext3 but I don't remember for sure. Is there a way to tell? the file itself doesn't look like a problem, just a single line of text. Thanks.
The file system type should be visible in (mount), or in (cat /proc/mounts).
It seems invalid data is returned for the directory
/mnt/oldslash/lib/modules/2.6.11-1.14_FC3/build/include/config/dvb/ves1x93 :
getdents64(15, {{d_ino=16877, d_off=2147483647, d_type=DT_UNKNOWN, d_reclen=24,
d_name=""}}, 4096) = 24
Okay, it is ext3. /dev/hdb2 on /mnt/oldslash type ext3 (rw) When I go to that directory, ls returns nonsense: [root@blackforest ves1x93]# ls -al total 0 ?--------- ? ? ? ? ? Does this in any way actually help? I mean, I can fix it here by deleting this directory since it's not really needed but that doesn't help you, does it? Thanks. I think the above could be enough information to prepare a fix, but I'm not an expert and the ext3 developers may need to know more. Is the fs corrupt? Does e2fsck find errors? (maybe run with -n to preserve the state for now). -Eric [root@blackforest ~]# e2fsck -n /dev/hdb2 e2fsck 1.39 (29-May-2006) Warning! /dev/hdb2 is mounted. Warning: skipping journal recovery because doing a read-only filesystem check. /: clean, 246736/1537088 files, 2439193/3072431 blocks Same results (without the warnings) if I unmount it first. unmount the fs and run e2fsck -f on the fs and let us know if it says anything. Should I say NO to fix, for now? [root@blackforest ~]# e2fsck -f /dev/hdb2 e2fsck 1.39 (29-May-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Error reading block 2011563 (Attempt to read block from filesystem resulted in short read). Ignore error<y>? yes Force rewrite<y>? yes Directory inode 770755, block 0, offset 0: directory corrupted Salvage<y>? yes Missing '.' in directory inode 770755. Fix<y>? yes Setting filetype for entry '.' in ??? (770755) to 2. Missing '..' in directory inode 770755. Fix<y>? yes Setting filetype for entry '..' in ??? (770755) to 2. Error reading block 2011564 (Attempt to read block from filesystem resulted in short read). Ignore error<y>? yes Force rewrite<y>? yes Directory inode 770756, block 0, offset 0: directory corrupted Salvage<y>? yes Missing '.' in directory inode 770756. Fix<y>? yes Setting filetype for entry '.' in ??? (770756) to 2. Missing '..' in directory inode 770756. Fix<y>? yes Setting filetype for entry '..' in ??? (770756) to 2. Sorry, that was only part. Also, I meant to say no to the Fix question but didn't. The directory still seems to be broken, however. I assume because it was canceled. Anyway, here's the rest of the e2fsck output: Error reading block 2011565 (Attempt to read block from filesystem resulted in short read). Ignore error<y>? yes Force rewrite<y>? yes Directory inode 770757, block 0, offset 0: directory corrupted Salvage<y>? yes Missing '.' in directory inode 770757. Fix<y>? yes Setting filetype for entry '.' in ??? (770757) to 2. Missing '..' in directory inode 770757. Fix<y>? /: e2fsck canceled. /: ***** FILE SYSTEM WAS MODIFIED ***** let fsck do the fixing and see if the directory is still corrupted. After running e2fsck -f /dev/hdb2 and fixing all problems (answering yes to all questions), the directory no longer seems corrupted. Furthermore, I removed /mnt from PRUNEPATHS in /etc/updatedb.conf and updatedb now runs without any problems. sounds like everything is good to go, I will close this bug. Feel free to open it if you experience the same problem again. |