From nobody@FreeBSD.ORG  Wed Nov  8 02:07:19 2000
Return-Path: <nobody@FreeBSD.ORG>
Received: by hub.freebsd.org (Postfix, from userid 32767)
	id 8943337B479; Wed,  8 Nov 2000 02:07:19 -0800 (PST)
Message-Id: <20001108100719.8943337B479@hub.freebsd.org>
Date: Wed,  8 Nov 2000 02:07:19 -0800 (PST)
From: hide@koie.org
Sender: nobody@FreeBSD.ORG
To: freebsd-gnats-submit@FreeBSD.org
Subject: Repairing a directory hard link.
X-Send-Pr-Version: www-1.0

>Number:         22685
>Category:       bin
>Synopsis:       Repairing a directory hard link.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Nov 08 02:10:01 PST 2000
>Closed-Date:    Sat Nov 17 14:46:52 PST 2001
>Last-Modified:  Sat Nov 17 14:47:05 PST 2001
>Originator:     KOIE Hide
>Release:        FreeBSD-3.3
>Organization:
SURIGIKEN CO.,LTD.
>Environment:
FreeBSD skipjack.koie.org 3.3-RELEASE FreeBSD 3.3-RELEASE #2: Sun Jun  4 01:33:12 JST 2000     root@:/usr/src/sys/compile/TP  i386

>Description:
When fsck finds a hard link, it displays
"<N> IS AN EXTRANEOUS HARD LINK TO DIRECTORY <D>".
<N> is a path to a directory
which is without an entry name.
<N> should be what is removed, then
it shoud be directory+entry.
At least, operator wants to know what will be removed.

>How-To-Repeat:
1. fsdb /dev/RAWDEV
2. ls
3. ln INUM NEW_ENTRY
4. quit
5. fsck /dev/RAWDEV
6. fsck displays and questions:
   <PARENT_DIR_PATH>IS AN EXTRANEOUS HARD LINK TO DIRECTORY <FIRST_PATH>
   REMOVE? [yn]


>Fix:
FreeBSD: src/sbin/fsck/pass2.c,v 1.9.2.1 1999/08/29 15:13:07 peter Exp

--- pass2.c.org Wed Nov  8 18:14:31 2000
+++ pass2.c     Wed Nov  8 18:17:59 2000
@@ -435,7 +435,7 @@ again:
                                getpathname(pathbuf, idesc->id_number,
                                    idesc->id_number);
                                getpathname(namebuf, dirp->d_ino, dirp->d_ino);
-                               pwarn("%s %s %s\n", pathbuf,
+                               pwarn("%s%s%s %s %s\n", pathbuf, (strcmp(pathbuf, "/")==0?"":"/"), dirp->d_name,
                                    "IS AN EXTRANEOUS HARD LINK TO DIRECTORY",
                                    namebuf);
                                if (preen) {

begin 644 diff
M+2TM('!A<W,R+F,N;W)G"5=E9"!.;W8@(#@@,3@Z,30Z,S$@,C`P,`HK*RL@
M<&%S<S(N8PE7960@3F]V("`X(#$X.C$W.C4Y(#(P,#`*0$`@+30S-2PW("LT
M,S4L-R!`0"!A9V%I;CH*(`D)"0EG971P871H;F%M92AP871H8G5F+"!I9&5S
M8RT^:61?;G5M8F5R+`H@"0D)"2`@("!I9&5S8RT^:61?;G5M8F5R*3L*(`D)
M"0EG971P871H;F%M92AN86UE8G5F+"!D:7)P+3YD7VEN;RP@9&ER<"T^9%]I
M;F\I.PHM"0D)"7!W87)N*"(E<R`E<R`E<UQN(BP@<&%T:&)U9BP**PD)"0EP
M=V%R;B@B)7,E<R5S("5S("5S7&XB+"!P871H8G5F+"`H<W1R8VUP*'!A=&AB
M=68L("(O(BD]/3`_(B(Z(B\B*2P@9&ER<"T^9%]N86UE+`H@"0D)"2`@("`B
M25,@04X@15A44D%.14]54R!(05)$($Q)3DL@5$\@1$E214-43U)9(BP*(`D)
B"0D@("`@;F%M96)U9BD["B`)"0D):68@*'!R965N*2!["D-4
`
end


>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed 
State-Changed-By: iedowse 
State-Changed-When: Sat Nov 17 14:46:52 PST 2001 
State-Changed-Why:  

Committed, thanks! 

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=22685 
>Unformatted:
