From 43d7225f44ad7b55051bf452cde5dc71961ac4aa Mon Sep 17 00:00:00 2001 From: "Michael I. Bushnell" Date: Tue, 11 Oct 1994 19:08:44 +0000 Subject: Initial revision --- ufs-fsck/pass4.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 ufs-fsck/pass4.c (limited to 'ufs-fsck/pass4.c') diff --git a/ufs-fsck/pass4.c b/ufs-fsck/pass4.c new file mode 100644 index 00000000..69691e4e --- /dev/null +++ b/ufs-fsck/pass4.c @@ -0,0 +1,55 @@ +/* Pass 4 of GNU fsck -- Check reference counts + Copyright (C) 1994 Free Software Foundation, Inc. + Written by Michael I. Bushnell. + + This file is part of the GNU Hurd. + + The GNU Hurd is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2, or (at + your option) any later version. + + The GNU Hurd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +pass4() +{ + ino_t number; + + for (number = ROOTINO; number < lastino; number++) + { + /* If it's correct, then there's nothing to do */ + if (linkcount[number] == linkfound[number] + && (!!(inodestate[number] == UNALLOC) == !linkfound[number])) + + if (linkfound[number] && inodestate[number] != UNALLOC) + { + if (linkcount[number] != linkfound[number]) + { + struct dinode dino; + getinode (number, &dino); + pwarn ("LINK COUNT %s", + (DI_MODE (dp) & IFMT) == IFDIR ? "DIR" : "FILE"); + pinode (dino); + printf (" COUNT %d SHOULD BE %d", linkcount[number], + linkfound[number]); + if (preen) + printf (" (ADJUSTED)"); + if (preen || reply ("ADJUST")) + { + dino.di_nlink = linkfound[number]; + write_inode (number, &dino); + } + } + } + else if (inodestate[number + { + + + -- cgit v1.2.3