V3/usr/man/man8/salv.8
.pa 1
.he 'SALV (VIII)'1/20/73'SALV (VIII)'
.ti 0
NAME salv -- file system salvage
.sp
.ti 0
SYNOPSIS /etc/salv_________ filesystem [ -akfs_____ ]
.sp
.ti 0
DESCRIPTION
.br
.in 8
salv____
will place a given file system
in a consistent state with
almost no loss of information.
This is the first step in putting things
together after a bad crash.
Salv performs the following functions:
.sp
.in +3
A valid free list is constructed.
.in -3
The previous step is always performed; the following steps
are performed only if the "a" option is given.
If the file system's only defect is missing blocks,
"a" should not be specified.
.in +3
.sp
All bad pointers in the file system are zeroed.
.sp
All duplicate pointers to the same block
are resolved by changing one of the pointers
to point at a new block containing a copy of the data.
.sp
Inodes (not directory entries) for special files
are generated (mode 16).
Files whose size is too large for the number of
blocks they contain (after bad pointers are zeroed)
have their size revised downward.
.in -3
The file system should be unmounted while it is
being salvaged.
In cases of extreme need the permanently mounted
file system may be salvaged; in such a case
the system must be rebooted before it
has a chance to write out the old, bad super-block.
The "k", "f", and "s" options
tell salv what magic numbers to use to generate
the size of the free list and the i-node map.
"k" is default (RK disk); "f" is RF; "s" is RK with
swap space on it.
If salv is to be used away
from the mother system its code should be cheked
to verify the numbers.
.sp
After a salv, files may be safely created
and removed without causing
more trouble.
If the "a" option had to be used,
a dcheck (VIII) should be done to find the degree
of the damage to the hierarchy.
.sp
.in 16
.ti 0
FILES /dev/rk0
.sp
.ti 0
SEE ALSO check(I), ds(I)
.sp
.ti 0
DIAGNOSTICS --
.sp
.ti 0
BUGS In
only one (known) way does salv____ destroy information:
if some random block appears to be an indirect block
for a file,
all "bad pointers" (for example, ASCII text) in it
will be zeroed. If
the block also appears in another file, it may be
scribbled on before it is copied.