summaryrefslogtreecommitdiffstats
path: root/usr.bin/ssh/channels.c
diff options
context:
space:
mode:
authorgluk <gluk@openbsd.org>2001-05-28 21:22:47 +0000
committergluk <gluk@openbsd.org>2001-05-28 21:22:47 +0000
commit1fb4224ce249402692be76f90f0e0d43fab3eae8 (patch)
tree790d73467c4c200b80aaf8eb41512cae40657e5e /usr.bin/ssh/channels.c
parent#ifdef PMAP_NEW we should call pmap_kremove/pmap_kenter_pa instead of (diff)
downloadwireguard-openbsd-1fb4224ce249402692be76f90f0e0d43fab3eae8.tar.xz
wireguard-openbsd-1fb4224ce249402692be76f90f0e0d43fab3eae8.zip
Fix directory state tracking.
- If the lost+found directory is created by fsck, it will do a cacheino() which sets the inoinfo's i_parent and i_dotdot to 0, but they never get set to ROOTINO. This means that propagate will never find lost+found and its descendents, subdirectories will remain DSTATE (instead of DFOUND) even though they are correctly linked in, and pass4.c will try to clear them unsuccessfully, thinking that there is no link count from the DSTATE directory's parent. The result is that you need to run fsck twice and get "EXTRANEOUS HARD LINK TO DIRECTORY" error (which are unexpected and fatal when running in preen mode). The fix is to set i_parent and i_dotdot to "parent" after the second cacheino() call in dir.c:allocdir(). From NetBSD via FreeBSD. - modify propagate() so it be able to start from any point in the tree. - minor tweaks to get more generality in state propagation. In other words fsck doesn't leave unremovable directories anymore. costa@ ok.
Diffstat (limited to 'usr.bin/ssh/channels.c')
0 files changed, 0 insertions, 0 deletions