Opened 5 years ago
Last modified 5 years ago
#15609 new bug
checkfs do not detect attribute/index errors
Reported by: | X512 | Owned by: | axeld |
---|---|---|---|
Priority: | normal | Milestone: | Unscheduled |
Component: | File Systems/BFS | Version: | R1/Development |
Keywords: | Cc: | ttcoder | |
Blocked By: | Blocking: | ||
Platform: | All |
Description
This is hrev53693 with https://review.haiku-os.org/c/haiku/+/2083 applied.
checkfs reports no error:
> checkfs -c /Haiku 589270 nodes checked, 0 blocks not allocated, 0 blocks already set, 0 blocks could be freed files 534706 directories 50429 attributes 2520 attr. dirs 1575 indices 40 direct block runs 584629 (33.56 GiB) indirect block runs 2772 (in 153 array blocks, 7.16 GiB) double indirect block runs 0 (in 0 array blocks, 0 bytes)
, but when opening Tracker "Open With" menu, following errors will be written to syslog:
KERN: bfs: InitCheck:325: Bad data KERN: bfs: KERN: inode at 27724319 is already deleted! KERN: bfs: GetNextMatching:615: Bad data KERN: bfs: KERN: could not get inode 27724319 in index "BEOS:APP_SIG"! KERN: bfs: inode 27724750 in query has no name! KERN: bfs: inode 28249203 in query has no name! KERN: bfs: bfs_open_dir:1705: Not a directory
.
Change History (4)
follow-up: 2 comment:1 by , 5 years ago
comment:2 by , 5 years ago
Replying to axeld:
See https://git.haiku-os.org/haiku/tree/src/add-ons/disk_systems/bfs/BFSAddOn.cpp#n239
I don't see flags related to checking inodes referenced from index.
follow-up: 4 comment:3 by , 5 years ago
Cc: | added |
---|
comment:4 by , 5 years ago
I meant BFS_FIX_BPLUSTREES. But looking at the sources, it should walk the indices no matter what -- it would only not repair them in if that flag is missing. I'm not sure why it doesn't report the error though; I'm not too familiar with the code anymore, especially since the FileSystemVisitor refactoring.
See https://git.haiku-os.org/haiku/tree/src/add-ons/disk_systems/bfs/BFSAddOn.cpp#n239 -- it does a whole lot more when you don't use "-c". I don't remember why I chose to restrict these checks to the normal run, though. Does not seem to make much sense.