|
|
1.1 root 1: |make(rp)
2:
3: |insert(../monk/monk.mac)
4:
5: |comment(VOL2HEADER)|set_counter(page 581-1)|set_string(page_headers "'''")|set_string(even_headers "'Fsck \(em The UNIX File System Check Program''\f(NIfsck\fP'")|set_string(odd_headers "'\f(NIfsck\fP''Fsck \(em The UNIX File System Check Program'")|set_string(even_footers "_\\nP__UNIX Papers_")|set_string(odd_footers "'Research Tenth Edition''\\nP'")
6:
7: |environment(S;
8: inline off, size -1;)
9:
10: |environment(text_list;
11: list.type fixed, list.pre "\&", list.format 1, list.post "\ \ ",
12: list.indent "nnnnnn", list on;
13:
14: list off)
15:
16: |author(name "T. J. Kowalski", initials TJK, location MH, department 11229,
17: extension x2771, room 2C-552)
18:
19: |date(July 1, 1979)
20:
21: |title(Fsck |sp(minus) The |s(UNIX) File System Check Program)
22:
23: |keywords(File System Repair)
24:
25: |begin(abstract)
26: The |s(UNIX)|sp(registered) File System Check program |i(fsck)
27: is an interactive file system check and repair program.
28: |i(Fsck) uses the redundant structural information
29: in the |s(UNIX) file system
30: to do several consistency checks.
31: If an inconsistency is detected,
32: it is reported to the operator,
33: who may elect to fix or ignore each inconsistency.
34: These inconsistencies
35: result from the permanent interruption of the file system updates,
36: which are performed every time a file is modified.
37: |i(Fsck) is frequently able to repair corrupted file systems
38: using procedures based on the order in which |s(UNIX) honors
39: these file system update requests.
40: |p
41: The purpose of this document
42: is to describe the normal updating of the file system,
43: to discuss the possible causes of file system corruption,
44: and to present the corrective actions carried out by |i(fsck).
45: Both the program
46: and the interaction between the program and the operator are described.
47: |end(abstract)
48:
49: |titlebox
50:
51: |style(two_column)
52:
53: |section(Introduction)
54:
55: When a |s(UNIX) system|reference(ritchie thompson unix cacm)
56: is brought up,
57: a consistency check of the file systems should always be performed.
58: This precautionary measure
59: helps to insure a reliable environment for file storage on disk.
60: If an inconsistency is discovered,
61: corrective action must be taken.
62: No changes are made to any file system
63: by |i(fsck) without prior operator approval.
64: |p
65: The purpose of this memo is to dispel the mystique
66: surrounding file system inconsistencies.
67: It first describes the updating of the file system
68: (the calm before the storm)
69: and then describes file system corruption (the storm).
70: Finally,
71: the set of heuristically sound corrective actions
72: used by |i(fsck)|reference(system iii manual)
73: (the Coast Guard to the rescue)
74: is presented.
75:
76: |section(Update Of The File System)
77:
78: Every working day hundreds of files are created, modified, and removed.
79: Every time a file is modified, the |s(UNIX) operating system
80: performs a series of file system updates.
81: These updates, when written on disk, yield a consistent file system.
82: To understand what happens
83: if a permanent interruption occurs in this sequence,
84: it is important to know the probable order of update requests.|reference(thompson unix bstj)
85: Knowing what pieces of information were probably written
86: to the file system first,
87: heuristic procedures can be developed to repair a corrupted file system.
88: |p
89: There are five types of file system updates.
90: These involve the super-block,
91: inodes, indirect blocks,
92: data blocks (directories and files), and free list blocks.
93:
94: |subsection(Super-Block)
95:
96: The super-block contains
97: part of the free block list,
98: part of the free i-list,
99: and information about
100: the size of the file system,
101: the size of the i-list,
102: the count of free blocks,
103: and the count of free inodes.
104: |p
105: The super-block of a mounted file system
106: (the root file system is always mounted)
107: is written whenever the file system is unmounted
108: or a |i(sync) command is issued.
109:
110: |subsection(Inodes)
111:
112: An inode contains information about
113: the type of inode (directory, data, or special),
114: the number of directory entries linked to the inode,
115: the list of blocks claimed by the inode,
116: and the size of the inode.
117: |p
118: An inode is written to the file system
119: when the file associated with the inode is closed.|footnote(All
120: in-core blocks are also written to the file system on issue of
121: a |i(sync) system call.)
122:
123: |subsection(Indirect Blocks)
124:
125: There are three types of indirect blocks:
126: single-indirect, double-indirect and triple-indirect.
127: A single-indirect block contains
128: a list of some of the block numbers claimed by an inode.
129: Each of the 128 indirect block entries is a data-block number.
130: A double-indirect block contains a list of single-indirect block numbers.
131: A triple-indirect block contains a list of double-indirect block numbers.
132: |p
133: Indirect blocks are written to the file system
134: whenever they have been modified and released|footnote(More precisely,
135: they are queued for eventual writing.
136: Physical I/O is deferred until the buffer is needed by UNIX
137: or a |i(sync) command is issued.)
138: by the operating system.
139:
140: |subsection(Data Blocks)
141:
142: A data block may contain file information
143: or directory entries.
144: Each directory entry consists of a file name
145: and an inode number.
146: |p
147: Data blocks are written to the file system
148: whenever they have been modified and released by the operating system.
149:
150: |subsection(First Free List Block)
151:
152: The super-block contains the first free list block.
153: The free list blocks
154: are a list of all blocks that are not allocated to the super-block,
155: inodes, indirect blocks, or data blocks.
156: Each free list block contains
157: a count of the number of entries in this free list block,
158: a pointer to the next free list block,
159: and a partial list of free blocks in the file system.
160: |p
161: Free list blocks are written to the file system
162: whenever they have been modified and released by the operating system.
163:
164: |section(Corruption Of The File System)
165:
166: A file system can become corrupted in a variety of ways.
167: The most common problems
168: are improper shutdown procedures and hardware failures.
169:
170: |subsection(Improper System Shutdown and Startup)
171:
172: File systems may become corrupted when proper shutdown procedures
173: are not observed, e.g.,
174: forgetting to |i(sync) the system before halting the |s(CPU),
175: physically write-protecting a mounted file system,
176: or taking a mounted file system off-line.
177: |p
178: File systems may become further corrupted if proper startup procedures
179: are not observed, e.g.,
180: not checking a file system for inconsistencies,
181: and not repairing inconsistencies.
182: Allowing a corrupted file system to be used (and, thus, to be modified further)
183: can be disastrous.
184:
185: |subsection(Hardware Failure)
186:
187: Any piece of hardware can fail at any time.
188: Failures can be as subtle as a bad block on a disk pack,
189: or as obvious as a non-functional disk-controller.
190:
191: |section(Detection And Correction Of Corruption)
192:
193: A quiescent|footnote(I.e., unmounted and not being written on.)
194: file system may be checked for structural integrity
195: by performing consistency checks on the redundant data
196: intrinsic to a file system.
197: The redundant data is either read from the file system
198: or computed from other known values.
199: A quiescent state is important during the checking of a file system
200: because of the multi-pass nature of the |i(fsck) program.
201: |p
202: When an inconsistency is discovered
203: |i(fsck) reports the inconsistency
204: and requests the operator to choose a corrective action.
205: |p
206: Discussed in this section are how to discover inconsistencies
207: and possible corrective actions
208: for the super-block, the inodes, the indirect blocks,
209: the data blocks containing directory entries, and the free list blocks.
210: These corrective actions
211: can be performed interactively by the |i(fsck) command
212: under control of the operator.
213:
214: |subsection(Super-Block)
215:
216: The most common corrupted item is the super-block.
217: The super-block is prone to corruption
218: because every change to the file system's blocks or inodes
219: modifies the super-block.
220: |p
221: The super-block and its associated parts
222: are most often corrupted when the computer is halted
223: and the last command involving output to the file system
224: was not a |i(sync) command.
225: |p
226: The super-block can be checked for inconsistencies involving file system size,
227: i-list size,
228: free block list,
229: free block count,
230: and the free inode count.
231:
232: |subsubsection(File system size and i-list size.)
233: |save(File system size and i-list size.)
234:
235: The file system size must be larger than the number of blocks
236: used by the super-block
237: and the number of blocks used by the list of inodes.
238: The number of inodes must be less than 65,535.
239: The file system size and i-list size
240: are critical pieces of information to the |i(fsck) program.
241: While there is no way to check these sizes,
242: |i(fsck) can check that they are within reasonable bounds.
243: All other checks of the file system
244: depend on the correctness of these sizes.
245:
246: |subsubsection(Free block list.)
247: |save(Free block list.)
248:
249: The free block list starts in the super-block
250: and continues through the free list blocks of the file system.
251: Each free list block can be checked
252: for list count out of range,
253: for block numbers out of range,
254: and for blocks already allocated within the file system.
255: A check is made to see that all the blocks in the file system were found.
256: |p
257: The first free block list is in the super-block.
258: |i(Fsck) checks the list count
259: for a value of less than zero or greater than fifty.
260: It also checks each block number
261: for a value of less than the first data block in the file system
262: or greater than the last block in the file system.
263: Then it compares each block number to a list of already allocated blocks.
264: If the free list block pointer is non-zero,
265: the next free list block is read in and the process is repeated.
266: |p
267: When all the blocks have been accounted for,
268: a check is made to see if the number of blocks used by the free block list
269: plus the number of blocks claimed by the inodes
270: equals the total number of blocks in the file system.
271: |p
272: If anything is wrong with the free block list,
273: then |i(fsck) may rebuild it,
274: excluding all blocks in the list of allocated blocks.
275:
276: |subsubsection(Free block count.)
277: |save(Free block count.)
278:
279: The super-block contains a count of the total number of free blocks
280: within the file system.
281: |i(Fsck) compares this count to the number of free blocks it found
282: within the file system.
283: If they don't agree,
284: then |i(fsck) may replace the count in the super-block
285: by the real free block count.
286:
287: |subsubsection(Free inode count.)
288: |save(Free inode count.)
289:
290: The super-block contains a count of the total number of free inodes
291: within the file system.
292: |i(Fsck) compares this count to the number of free inodes it found
293: within the file system.
294: If they don't agree,
295: then |i(fsck)
296: may replace the count in the super-block by the real free inode count.
297:
298: |subsection(Inodes)
299:
300: An individual inode is not as likely to be corrupted as the super-block.
301: However,
302: because of the great number of active inodes,
303: corruption in the i-list is almost as likely as corruption
304: in the super-block.
305: |p
306: The list of inodes is checked sequentially starting with inode 1
307: (there is no inode 0)
308: and going to the last inode in the file system.
309: Each inode can be checked for
310: inconsistencies involving format and type,
311: link count,
312: duplicate blocks,
313: bad blocks,
314: and inode size.
315:
316: |subsubsection(Format and type.)
317: |save(Format and type.)
318:
319: Each inode contains a mode word.
320: This mode word describes the type and state of the inode.
321: Inodes may be one of four types:
322: regular inode, directory inode, special block inode,
323: and special character inode.
324: If an inode is not one of these types, then the inode has an illegal type.
325: Inodes may be found in one of three states:
326: unallocated, allocated, and neither unallocated nor allocated.
327: This last state suggests an incorrectly formatted inode.
328: Incorrect format may result
329: if bad data is written into the i-list through,
330: for example,
331: a hardware failure.
332: The only possible corrective action for |i(fsck) is clearing the inode.
333:
334: |subsubsection(Link count.)
335: |save(Link count.)
336:
337: Contained in each inode is a count of the total number of directory entries
338: linked to the inode.
339: |p
340: |i(Fsck) verifies the link count of each inode
341: by traversing down the total directory structure,
342: starting from the root directory,
343: and calculating a real link count for each inode.
344: |p
345: If the stored link count is non-zero and the real link count is zero,
346: it means that no directory entry appears for the inode.
347: If the stored and real link counts are non-zero and unequal,
348: a directory entry may have been added or removed
349: without the inode being updated.
350: |p
351: If the stored link count is non-zero and the real link count is zero,
352: |i(fsck) may link the disconnected file to the |cw(lost+found) directory.
353: If the stored and real link counts are non-zero and unequal,
354: |i(fsck) may replace the stored link count by the real link count.
355:
356: |subsubsection(Duplicate blocks)
357: |save(Duplicate blocks)
358:
359: Contained in each inode is a list or pointers to lists (indirect blocks)
360: of all the blocks claimed by the inode.
361: |p
362: |i(Fsck) compares each block number claimed by an inode
363: to a list of already allocated blocks.
364: If a block number is already claimed by another inode,
365: the block number is added to a list of duplicate blocks.
366: Otherwise,
367: the list of allocated blocks is updated to include the block number.
368: If there are any duplicate blocks,
369: |i(fsck) will pass over part of the i-list a second time
370: to find the inode of the duplicated block,
371: because without examining the files
372: associated with these inodes for correct content,
373: there is not enough information available to decide what inode is corrupted
374: and should be cleared.
375: Usually the inode with the earliest modify time is incorrect
376: and should be cleared.
377: |p
378: This condition can occur
379: when a file system contains blocks claimed by both the free block list
380: and by other parts of the file system.
381: |p
382: If there is a large number of duplicate blocks in an inode,
383: this may be because an indirect block is not being written to the file system.
384: |p
385: |i(Fsck) will prompt the operator to clear both inodes.
386:
387: |subsubsection(Bad blocks)
388: |save(Bad blocks)
389:
390: Contained in each inode
391: is a list or pointer to lists of all the blocks claimed by the inode.
392: |p
393: |i(Fsck) checks each block number claimed by an inode
394: for a value lower than that of the first data block,
395: or greater than the last block in the file system.
396: If the block number is outside this range,
397: the block number is a bad block number.
398: |p
399: If there is a large number of bad blocks in an inode,
400: this may be because an indirect block is not being written to the file system.
401: |p
402: |i(Fsck) will prompt the operator to clear both inodes.
403:
404: |subsubsection(Size checks.)
405: |save(Size checks.)
406:
407: Each inode contains a thirty-two bit (four-byte) size field.
408: This size shows the number of characters in the file
409: associated with the inode.
410: This size can be checked for inconsistencies,
411: e.g.,
412: directory sizes that are not a multiple of sixteen characters,
413: or a mismatch between the number of blocks shown by the inode size
414: and the number really in use.
415: |p
416: A directory inode within the |s(UNIX) file system
417: has the directory bit set in the inode mode word.
418: The directory size must be a multiple of sixteen
419: because a directory entry contains sixteen bytes
420: (two bytes for the inode number
421: and fourteen bytes for the file or directory name).
422: |p
423: |i(Fsck) will warn of directory misalignment.
424: This is only a warning
425: because not enough information can be gathered to correct the misalignment.
426: |p
427: A rough check of the consistency of the size field of an inode
428: can be performed by using it to compute
429: the number of blocks that should be associated with the inode
430: and comparing it to the real number of blocks claimed by the inode.
431: |p
432: |i(Fsck) calculates the number of blocks that should be in an inode
433: by dividing the number of characters in an inode
434: by the number of characters per block (512)
435: and rounding up.
436: |i(Fsck) adds one block for each indirect block associated with the inode.
437: If the real number of blocks does not match the computed number of blocks,
438: |i(fsck) will warn of a possible file-size error.
439: This is only a warning
440: because |s(UNIX) does not fill in blocks in files created in random order.
441:
442: |subsection(Indirect Blocks)
443:
444: Indirect blocks are owned by an inode.
445: Therefore,
446: inconsistencies in indirect blocks directly affect the inode that owns them.
447: |p
448: Inconsistencies that can be checked
449: are blocks already claimed by another inode
450: and block numbers outside the range of the file system.
451: |p
452: For a discussion of detection and correction
453: of the inconsistencies associated with indirect blocks,
454: apply iteratively Sections |remember(Duplicate blocks)
455: and |remember(Bad blocks) to each level of indirect blocks.
456:
457: |subsection(Data Blocks)
458: |save(Data Blocks)
459:
460: The two types of data blocks are
461: plain data blocks and directory data blocks.
462: Plain data blocks contain the information stored in a file.
463: Directory data blocks contain directory entries.
464: |i(Fsck) does not attempt to check
465: the validity of the contents of a plain data block.
466: |p
467: Each directory data block can be checked for inconsistencies involving
468: directory inode numbers pointing to unallocated inodes,
469: directory inode numbers greater than the number of inodes in the file system,
470: incorrect directory inode numbers for ``|b(.)'' and ``|b(..)'',
471: and directories that are disconnected from the file system.
472: |p
473: If a directory entry inode number points to an unallocated inode,
474: then |i(fsck) may remove that directory entry.
475: This condition occurs when
476: the data blocks containing the directory entries
477: were modified and written to the file system
478: but the corresponding inode was not.
479: |p
480: If a directory entry inode number is pointing beyond the end of the i-list,
481: |i(fsck) may remove that directory entry.
482: This condition occurs if bad data is written into a directory data block.
483: |p
484: The directory inode number entry for ``|b(.)''
485: should be the first entry in the directory data block.
486: Its value should be equal to the inode number for the directory data block.
487: |p
488: The directory inode number entry for ``|b(..)''
489: should be the second entry in the directory data block.
490: Its value should be equal to
491: the inode number for the parent of the directory entry
492: (or the inode number of the directory data block
493: if the directory is the root directory).
494: |p
495: If the directory inode numbers are incorrect,
496: |i(fsck) may replace them by the correct values.
497: |p
498: |i(Fsck) checks the general connectivity of the file system.
499: If directories are found not to be linked into the file system,
500: |i(fsck) will link the directory back into the file system
501: in the |cw(lost+found) directory.
502: This condition occurs when inodes are written to the file system
503: but the corresponding directory data blocks are not.
504:
505: |subsection(Free List Blocks)
506:
507: Free list blocks are owned by the super-block.
508: Therefore,
509: inconsistencies in free list blocks directly affect the super-block.
510: |p
511: Inconsistencies that can be checked are
512: list count out of range,
513: block numbers out of range,
514: and blocks already associated with the file system.
515: |p
516: For a discussion of detection and correction of the inconsistencies
517: associated with free list blocks, see Section |remember(Free block list.).
518:
519: |section(Acknowledgements)
520:
521: I would like to thank Larry A. Wehr
522: for advice that led to the first version of |i(fsck),
523: and Rick B. Brandt for adapting |i(fsck) to |s(UNIX).
524:
525: |reference_placement
526:
527: |style(one_column)
528: .ne 1i
529: |appendix(FSCK ERROR CONDITIONS)
530:
531: |style(two_column)
532:
533: |section(Conventions)
534: ...........
535:
536: |i(Fsck) is a multi-pass file system check program.
537: Each file system pass invokes a different |i(Phase) of the |i(fsck) program.
538: After the initial setup,
539: |i(fsck) performs successive |i(Phases) over each file system,
540: checking blocks and sizes,
541: path-names,
542: connectivity,
543: reference counts,
544: and the free block list
545: (possibly rebuilding it),
546: and performs some cleanup.
547: |p
548: When an inconsistency is detected,
549: |i(fsck) reports the error condition to the operator.
550: If a response is required,
551: |i(fsck) prints a prompt message and waits for a response.
552: This appendix explains the meaning of each error condition,
553: the possible responses,
554: and the related error conditions.
555: |p
556: The error conditions are organized by the |i(Phase) of the |i(fsck) program
557: in which they can occur.
558: The error conditions that may occur in more than one Phase
559: will be discussed under initialization.
560:
561: |section(Initialization)
562:
563: Before a file system check can be performed,
564: certain tables have to be set up and certain files opened.
565: This section concerns itself with the opening of files
566: and the initialization of tables.
567: It lists error conditions resulting from
568: command line options,
569: memory requests,
570: opening of files,
571: status of files,
572: file system size checks,
573: and creation of the scratch file.
574:
575: |unnumbered_subsection{|cw[C option?]}
576:
577: |cw(C) is not a legal option to |i(fsck);
578: legal options are
579: |cw(-y),
580: |cw(-n),
581: |cw(-s),
582: |cw(-S),
583: and
584: |cw(-t).
585: |i(Fsck) stops on this error condition.
586: See the |i(fsck)(8) for further detail.
587:
588: |unnumbered_subsection{|cw[Bad -t option]}
589:
590: The |cw(-t) option is not followed by a file name.
591: |i(Fsck) stops on this error condition.
592: See the |i(fsck)(8) for further detail.
593:
594: |unnumbered_subsection{|cw[Invalid -s argument, defaults assumed]}
595:
596: The |cw(-s) option is not suffixed by 3, 4,
597: or blocks-per-cylinder:blocks-to-skip.
598: |i(Fsck) assumes a default value of 400 blocks-per-cylinder
599: and 9 blocks-to-skip.
600: See the |i(fsck)(8) for more details.
601:
602: |unnumbered_subsection{|cw[Incompatible options: -n and -s]}
603:
604: It is not possible to salvage the free block list
605: without modifying the file system.
606: |i(Fsck) stops on this error condition.
607: See the |i(fsck)(8) for further detail.
608:
609: |unnumbered_subsection{|cw[Can't get memory]}
610:
611: |i(Fsck)'s request for memory for its virtual memory tables failed.
612: This should never happen.
613: |i(Fsck) stops on this error condition.
614: See a guru.
615:
616: |unnumbered_subsection{|cw[Can't open checklist file: F]}
617:
618: The default file system checklist file |b(F) (usually |cw(/etc/checklist))
619: cannot be opened for reading.
620: |i(Fsck) stops on this error condition.
621: Check access modes of |b(F).
622:
623: |unnumbered_subsection{|cw[Can't stat root]}
624:
625: |i(Fsck)'s request for statistics about the root directory ``/'' failed.
626: This should never happen.
627: |i(Fsck) stops on this error condition.
628: See a guru.
629:
630: |unnumbered_subsection{|cw[Can't stat F]}
631:
632: |i(Fsck)'s request for statistics about the file system |b(F) failed.
633: It ignores this file system and continues checking the next file system given.
634: Check access modes of |b(F).
635:
636: |unnumbered_subsection{|cw[F is not a block or character device]}
637:
638: You have given |i(fsck) a regular file name by mistake.
639: It ignores this file system and continues checking the next file system given.
640: Check file type of |b(F).
641:
642: |unnumbered_subsection{|cw[Can't open F]}
643:
644: The file system |b(F) cannot be opened for reading.
645: It ignores this file system and continues checking the next file system given.
646: Check access modes of |b(F).
647:
648: |unnumbered_subsection{|cw[Size check: fsize X isize Y]}
649:
650: More blocks are used for the i-list |b(Y)
651: than there are blocks in the file system |b(X),
652: or there are more than 65,535 inodes in the file system.
653: It ignores this file system and continues checking the next file system given.
654: See Section |remember(File system size and i-list size.).
655:
656: |unnumbered_subsection{|cw[Can't create F]}
657:
658: |i(Fsck)'s request to create a scratch file |b(F) failed.
659: It ignores this file system and continues checking the next file system given.
660: Check access modes of |b(F).
661:
662: |unnumbered_subsection{|cw[CAN NOT SEEK: BLK B (CONTINUE)]}
663:
664: |i(Fsck)'s request for moving to a specified block number |b(B)
665: in the file system failed.
666: This should never happen.
667: See a guru.
668: |p
669: Possible responses to the |s(CONTINUE) prompt are:
670:
671: |blank_space(1)
672: |begin(text_list)
673:
674: |S(|item(YES)) attempt to continue the file system check.
675: Often,
676: however the problem will persist.
677: This error condition will not allow a complete check of the file system.
678: A second run of |i(fsck) should be made to re-check this file system.
679: If the block was part of the virtual memory buffer cache,
680: |i(fsck) will stop with the message ``Fatal I/O error''.
681:
682: |S(|item(NO)) stop the program.
683:
684: |end(text_list)
685:
686: |unnumbered_subsection{|cw[CAN NOT READ: BLK B (CONTINUE)]}
687:
688: |i(Fsck)'s request for reading a specified block number |b(B)
689: in the file system failed.
690: This should never happen.
691: See a guru.
692: |p
693: Possible responses to the |s(CONTINUE) prompt are:
694:
695: |blank_space(1)
696: |begin(text_list)
697:
698: |S(|item(YES)) attempt to continue the file system check.
699: Often,
700: however,
701: the problem will persist.
702: This error condition will not allow a complete check of the file system.
703: A second run of |i(fsck) should be made to re-check this file system.
704: If the block was part of the virtual memory buffer cache,
705: |i(fsck) will stop with the message ``Fatal I/O error''.
706:
707: |S(|item(NO)) stop the program.
708:
709: |end(text_list)
710:
711: |unnumbered_subsection{|cw[CAN NOT WRITE: BLK B (CONTINUE)]}
712: |i(Fsck)'s request for writing a specified block number |b(B)
713: in the file system failed.
714: The disk is write-protected.
715: See a guru.
716: |p
717: Possible responses to the |s(CONTINUE) prompt are:
718:
719: |blank_space(1)
720: |begin(text_list)
721:
722: |S(|item(YES)) attempt to continue the file system check.
723: Often,
724: however,
725: the problem will persist.
726: This error condition will not allow a complete check of the file system.
727: A second run of |i(fsck) should be made to re-check this file system.
728: If the block was part of the virtual memory buffer cache,
729: |i(fsck) will stop with the message ``Fatal I/O error''.
730:
731: |S(|item(NO)) stop the program.
732:
733: |end(text_list)
734:
735: |section(Phase 1: Check blocks and sizes)
736:
737: This phase concerns itself with the i-list.
738: This section lists error conditions resulting from
739: checking inode types,
740: setting up the zero-link-count table,
741: examining inode block numbers for bad or duplicate blocks,
742: checking inode size,
743: and checking inode format.
744:
745: |unnumbered_subsection{|cw[UNKNOWN FILE TYPE I=I (CLEAR)]}
746:
747: The mode word of the inode |b(I) shows that the inode is not a
748: special character inode,
749: regular inode,
750: or directory inode.
751: See Section |remember(Format and type.).
752: |p
753: Possible responses to the |s(CLEAR) prompt are:
754:
755: |blank_space(1)
756: |begin(text_list)
757:
758: |S(|item(YES)) de-allocate inode |b(I) by zeroing its contents.
759: This will always invoke the |s(UNALLOCATED) error condition in Phase 2
760: for each directory entry pointing to this inode.
761:
762: |S(|item(NO)) ignore this error condition.
763:
764: |end(text_list)
765:
766: |unnumbered_subsection{|cw[LINK COUNT TABLE OVERFLOW (CONTINUE)]}
767:
768: An internal table for |i(fsck)
769: containing allocated inodes with a link count of zero has no more room.
770: Recompile |i(fsck) with a larger value of |s(MAXLNCNT).
771: |p
772: Possible responses
773: to the |s(CONTINUE) prompt are:
774:
775: |blank_space(1)
776: |begin(text_list)
777:
778: |S(|item(YES)) continue with the program.
779: This error condition will not allow a complete check of the file system.
780: A second run of |i(fsck) should be made to re-check this file system.
781: If another allocated inode with a zero link count is found,
782: this error condition is repeated.
783:
784: |S(|item(NO)) stop the program.
785:
786: |end(text_list)
787:
788: |unnumbered_subsection{|cw[B BAD I=I]}
789:
790: Inode |b(I) contains block number |b(B) with a number lower than
791: the number of the first data block in the file system
792: or greater than the number of the last block in the file system.
793: This error condition
794: may invoke the |s(EXCESSIVE) |s(BAD) |s(BLKS) error condition in Phase 1
795: if inode |b(I) has too many block numbers outside the file system range.
796: This error condition will always invoke the |s(BAD)/|s(DUP) error condition
797: in Phase 2 and Phase 4.
798: See Section |remember(Bad blocks).
799:
800: |unnumbered_subsection{|cw[EXCESSIVE BAD BLKS I=I (CONTINUE)]}
801:
802: There is more than a tolerable number (usually 10) of blocks
803: with a number lower than the number of the first data block in the file system
804: or greater than the number of last block in the file system
805: associated with inode |b(I).
806: See Section |remember(Bad blocks).
807: |p
808: Possible responses to the |s(CONTINUE) prompt are:
809:
810: |blank_space(1)
811: |begin(text_list)
812:
813: |S(|item(YES)) ignore the rest of the blocks in this inode
814: and continue checking with the next inode in the file system.
815: This error condition will not allow a complete check of the file system.
816: A second run of |i(fsck) should be made to re-check this file system.
817:
818: |S(|item(NO)) stop the program.
819:
820: |end(text_list)
821:
822: |unnumbered_subsection{|cw[B DUP I=I]}
823:
824: Inode |b(I) contains block number |b(B),
825: which is already claimed by another inode.
826: This error condition
827: may invoke the |s(EXCESSIVE) |s(DUP) |s(BLKS) error condition in Phase 1
828: if inode |b(I) has too many block numbers claimed by other inodes.
829: This error condition will always invoke Phase 1b
830: and the |s(BAD)/|s(DUP) error condition in Phase 2 and Phase 4.
831: See Section |remember(Duplicate blocks).
832:
833: |unnumbered_subsection{|cw[EXCESSIVE DUP BLKS I=I (CONTINUE)]}
834:
835: There is more than a tolerable number (usually 10) of blocks
836: claimed by other inodes.
837: See Section |remember(Duplicate blocks).
838: |p
839: Possible responses to the |s(CONTINUE) prompt are:
840:
841: |blank_space(1)
842: |begin(text_list)
843:
844: |S(|item(YES)) ignore the rest of the blocks in this inode
845: and continue checking with the next inode in the file system.
846: This error condition will not allow a complete check of the file system.
847: A second run of |i(fsck) should be made to re-check this file system.
848:
849: |S(|item(NO)) stop the program.
850:
851: |end(text_list)
852:
853: |unnumbered_subsection{|cw[DUP TABLE OVERFLOW (CONTINUE)]}
854:
855: An internal table in |i(fsck)
856: containing duplicate block numbers has no more room.
857: Recompile |i(fsck) with a larger value of |s(DUPTBLSIZE).
858: |p
859: Possible responses to the |s(CONTINUE) prompt are:
860:
861: |blank_space(1)
862: |begin(text_list)
863:
864: |S(|item(YES)) continue with the program.
865: This error condition will not allow a complete check of the file system.
866: A second run of |i(fsck) should be made to re-check this file system.
867: If another duplicate block is found, this error condition will repeat.
868:
869: |S(|item(NO)) stop the program.
870:
871: |end(text_list)
872:
873: |unnumbered_subsection{|cw[POSSIBLE FILE SIZE ERROR I=I]}
874:
875: The inode |b(I) size
876: does not match the real number of blocks used by the inode.
877: This is only a warning.
878: See Section |remember(Size checks.).
879:
880: |unnumbered_subsection{|cw[DIRECTORY MISALIGNED I=I]}
881:
882: The size of a directory inode
883: is not a multiple of the size of a directory entry (usually 16).
884: This is only a warning.
885: See Section |remember(Size checks.).
886:
887: |unnumbered_subsection{|cw[PARTIALLY ALLOCATED INODE I=I (CLEAR)]}
888:
889: Inode |b(I) is neither allocated nor unallocated.
890: See Section |remember(Format and type.).
891: |p
892: Possible responses to the |s(CLEAR) prompt are:
893:
894: |blank_space(1)
895: |begin(text_list)
896:
897: |S(|item(YES)) de-allocate inode |b(I) by zeroing its contents.
898:
899: |S(|item(NO)) ignore this error condition.
900:
901: |end(text_list)
902:
903: |section(Phase 1b: Rescan for more dups)
904:
905: When a duplicate block is found in Phase 1,
906: the file system is rescanned to find the inode
907: that previously claimed that block.
908: This section describes when the duplicate block is found.
909:
910: |unnumbered_subsection{|cw[B DUP I=I]}
911:
912: Inode |b(I) contains block number |b(B),
913: which is already claimed by another inode.
914: This error will always invoke the |s(BAD)/|s(DUP) error condition
915: in Phase 2.
916: You can determine what inodes have overlapping blocks
917: by examining this error condition
918: and the |s(DUP) error condition in Phase 1.
919: See Section |remember(Duplicate blocks).
920:
921: .......
922: |section(Phase 2: Check path-names)
923:
924: This phase concerns itself with removing directory entries pointing to
925: flawed inodes detected in Phase 1 and Phase 1b.
926: This section lists error conditions resulting from
927: root inode mode and status,
928: directory inode pointers in range,
929: and directory entries pointing to bad inodes.
930:
931: |unnumbered_subsection{|cw[ROOT INODE UNALLOCATED. TERMINATING.]}
932:
933: The root inode (usually inode number 2) has no allocate mode bits.
934: This should never happen.
935: The program will stop.
936: See Section |remember(Format and type.).
937:
938: |unnumbered_subsection{|cw[ROOT INODE NOT DIRECTORY (FIX)]}
939:
940: The root inode (usually inode number 2) is not directory inode type.
941: See Section |remember(Format and type.).
942: |p
943: Possible responses to the |s(FIX) prompt are:
944:
945: |blank_space(1)
946: |begin(text_list)
947:
948: |S(|item(YES)) make the root inode's type be a directory.
949: If the root inode's data blocks are not directory blocks,
950: a large number of error conditions will be produced.
951:
952: |S(|item(NO)) stop the program.
953:
954: |end(text_list)
955:
956: |unnumbered_subsection{|cw[DUPS/BAD IN ROOT INODE (CONTINUE)]}
957:
958: Phase 1 or Phase 1b has found duplicate blocks
959: or bad blocks in the root inode (usually inode number 2) for the file system.
960: See Sections |remember(Duplicate blocks) and |remember(Bad blocks).
961: |p
962: Possible responses to the |s(CONTINUE) prompt are:
963:
964: |blank_space(1)
965: |begin(text_list)
966:
967: |S(|item(YES)) ignore the |s(DUPS)/|s(BAD) error condition in the root inode and
968: attempt to continue the file system check.
969: If the root inode is not correct,
970: then this action may result in a large number of other error conditions.
971:
972: |S(|item(NO)) stop the program.
973:
974: |end(text_list)
975:
976: |unnumbered_subsection{|cw[I OUT OF RANGE I=I NAME=F (REMOVE)]}
977:
978: A directory entry |b(F) has an inode number |b(I)
979: that is greater than the end of the i-list.
980: See Section |remember(Data Blocks).
981: |p
982: Possible responses to the |s(REMOVE) prompt are:
983:
984: |blank_space(1)
985: |begin(text_list)
986:
987: |S(|item(YES)) the directory entry |b(F) will be removed.
988:
989: |S(|item(NO)) ignore this error condition.
990:
991: |end(text_list)
992:
993: |unnumbered_subsection{|cw[UNALLOCATED I=I OWNER=O MODE=M SIZE=S MTIME=T NAME=F (REMOVE)]}
994:
995: A directory entry |b(F) has an inode |b(I) without allocate mode bits.
996: The owner |b(O), mode |b(M), size |b(S), modify time |b(T),
997: and file name |b(F) are printed.
998: See Section |remember(Data Blocks).
999: |p
1000: Possible responses to the |s(REMOVE) prompt are:
1001:
1002: |blank_space(1)
1003: |begin(text_list)
1004:
1005: |S(|item(YES)) the directory entry |b(F) will be removed.
1006:
1007: |S(|item(NO)) ignore this error condition.
1008:
1009: |end(text_list)
1010:
1011: |unnumbered_subsection{|cw[DUP/BAD I=I OWNER=O MODE=M SIZE=S MTIME=T DIR=F (REMOVE)]}
1012:
1013: Phase 1 or Phase 1b has found duplicate blocks or bad blocks
1014: associated with directory entry/inode |b(F)/|b(I).
1015: The owner |b(O), mode |b(M), size |b(S), modify time |b(T),
1016: and directory name |b(F) are printed.
1017: See Sections |remember(Duplicate blocks) and |remember(Bad blocks).
1018: |p
1019: Possible responses to the |s(REMOVE) prompt are:
1020:
1021: |blank_space(1)
1022: |begin(text_list)
1023:
1024: |S(|item(YES)) the directory entry |b(F) will be removed.
1025:
1026: |S(|item(NO)) ignore this error condition.
1027:
1028: |end(text_list)
1029:
1030: |unnumbered_subsection{|cw[DUP/BAD I=I OWNER=O MODE=M SIZE=S MTIME=T FILE=F (REMOVE)]}
1031:
1032: Phase 1 or Phase 1b has found duplicate blocks or bad blocks
1033: associated with directory entry/inode |b(F)/|b(I).
1034: The owner |b(O), mode |b(M), size |b(S), modify time |b(T),
1035: and file name |b(F) are printed.
1036: See Sections |remember(Duplicate blocks) and |remember(Bad blocks).
1037: |p
1038: Possible responses to the |s(REMOVE) prompt are:
1039:
1040: |blank_space(1)
1041: |begin(text_list)
1042:
1043: |S(|item(YES)) the directory entry |b(F) will be removed.
1044:
1045: |S(|item(NO)) ignore this error condition.
1046:
1047: |end(text_list)
1048:
1049: |section(Phase 3: Check connectivity)
1050:
1051: This phase concerns itself with the directory connectivity seen in Phase 2.
1052: This section lists error conditions resulting from
1053: unreferenced directories
1054: and missing or full |cw(lost+found) directories.
1055:
1056: |unnumbered_subsection{|cw[UNREF DIR I=I OWNER=O MODE=M SIZE=S MTIME=T (RECONNECT)]}
1057:
1058: The directory inode |b(I)
1059: was not connected to a directory entry when the file system was traversed.
1060: The owner |b(O), mode |b(M), size |b(S),
1061: and modify time |b(T) of directory inode |b(I) are printed.
1062: See Sections |remember(Data Blocks) and |remember(Link count.).
1063: |p
1064: Possible responses to the |s(RECONNECT) prompt are:
1065:
1066: |blank_space(1)
1067: |begin(text_list)
1068:
1069: |S(|item(YES)) reconnect directory inode |b(I) to the file system
1070: in the directory for lost files (usually |cw(lost+found)).
1071: This action may invoke the |cw(lost+found) error condition in Phase 3
1072: if there are problems connecting directory inode |b(I) to |cw(lost+found).
1073: If the link is successful,
1074: this action may also invoke the |s(CONNECTED) error condition in Phase 3.
1075:
1076: |S(|item(NO)) ignore this error condition.
1077: The |s(UNREF) error condition in Phase 4 will always occur as a result.
1078:
1079: |end(text_list)
1080:
1081: |unnumbered_subsection{|cw[SORRY. NO lost+found DIRECTORY]}
1082:
1083: There is no |cw(lost+found) directory in the root directory of the file system;
1084: |i(fsck) ignores the request to link a directory in |cw(lost+found).
1085: The |s(UNREF) error condition in Phase 4 will always occur as a result.
1086: Check access modes of |cw(lost+found).
1087: See |i(fsck)(1M) manual entry for further detail.
1088:
1089: |unnumbered_subsection{|cw[SORRY. NO SPACE IN lost+found DIRECTORY]}
1090:
1091: There is no space to add another entry to the |cw(lost+found) directory
1092: in the root directory of the file system;
1093: |i(fsck) ignores the request to link a directory in |cw(lost+found).
1094: The |s(UNREF) error condition in Phase 4 will always occur as a result.
1095: Clean out unnecessary entries in |cw(lost+found)
1096: or make |cw(lost+found) larger.
1097: See |i(fsck)(1M) manual entry for further detail.
1098:
1099: |unnumbered_subsection{|cw[DIR I=I1 CONNECTED. PARENT WAS I=I2]}
1100:
1101: This is an advisory message showing that a directory inode |b(I1)
1102: was successfully connected to the |cw(lost+found) directory.
1103: The parent inode |b(I2) of the directory inode |b(I1)
1104: is replaced by the inode number of the |cw(lost+found) directory.
1105: See Sections |remember(Data Blocks) and |remember(Link count.).
1106:
1107: |section(Phase 4: Check reference counts)
1108:
1109: This phase concerns itself with the link count information
1110: seen in Phase 2 and Phase 3.
1111: This section lists error conditions resulting from
1112: unreferenced files,
1113: missing or full |cw(lost+found) directory,
1114: incorrect link counts for files, directories, or special files,
1115: unreferenced files and directories,
1116: bad and duplicate blocks in files and directories,
1117: and incorrect total free inode counts.
1118:
1119: |unnumbered_subsection{|cw[UNREF FILE I=I OWNER=O MODE=M SIZE=S MTIME=T (RECONNECT)]}
1120:
1121: Inode |b(I)
1122: was not connected to a directory entry when the file system was traversed.
1123: The owner |b(O), mode |b(M), size |b(S),
1124: and modify time |b(T) of inode |b(I) are printed.
1125: See Section |remember(Link count.).
1126: |p
1127: Possible responses to the |s(RECONNECT) prompt are:
1128:
1129: |blank_space(1)
1130: |begin(text_list)
1131:
1132: |S(|item(YES)) reconnect inode |b(I) to the file system
1133: in the directory for lost files (usually |cw(lost+found)).
1134: This action may invoke the |cw(lost+found) error condition in Phase 4
1135: if there are problems connecting inode |b(I) to |cw(lost+found).
1136:
1137: |S(|item(NO)) ignore this error condition.
1138: This will always invoke the |s(CLEAR) error condition in Phase 4.
1139:
1140: |end(text_list)
1141:
1142: |unnumbered_subsection{|cw[SORRY. NO lost+found DIRECTORY]}
1143:
1144: There is no |cw(lost+found) directory in the root directory of the file system;
1145: |i(fsck) ignores the request to link a file in |cw(lost+found).
1146: This will always invoke the |s(CLEAR) error condition in Phase 4.
1147: Check access modes of |cw(lost+found).
1148:
1149: |unnumbered_subsection{|cw[SORRY. NO SPACE IN lost+found DIRECTORY]}
1150:
1151: There is no space to add another entry to the |cw(lost+found) directory
1152: in the root directory of the file system;
1153: |i(fsck) ignores the request to link a file in |cw(lost+found).
1154: This will always invoke the |s(CLEAR) error condition in Phase 4.
1155: Check size and contents of |cw(lost+found).
1156:
1157: |unnumbered_subsection{|cw[(CLEAR)]}
1158:
1159: The inode mentioned in the immediately previous error condition
1160: cannot be reconnected.
1161: See Section |remember(Link count.).
1162: |p
1163: Possible responses to the |s(CLEAR) prompt are:
1164:
1165: |blank_space(1)
1166: |begin(text_list)
1167:
1168: |S(|item(YES)) de-allocate the inode
1169: mentioned in the preceding error condition by zeroing its contents.
1170:
1171: |S(|item(NO)) ignore this error condition.
1172:
1173: |end(text_list)
1174:
1175: |unnumbered_subsection{|cw[LINK COUNT FILE I=I OWNER=O MODE=M SIZE=S MTIME=T COUNT=X SHOULD BE Y (ADJUST)]}
1176:
1177: The link count for inode |b(I), which is a file, is |b(X) but should be |b(Y).
1178: The owner |b(O), mode |b(M), size |b(S), and modify time |b(T) are printed.
1179: See Section |remember(Link count.).
1180: |p
1181: Possible responses to the |s(ADJUST) prompt are:
1182:
1183: |blank_space(1)
1184: |begin(text_list)
1185:
1186: |S(|item(YES)) replace the link count of file inode |b(I) with |b(Y).
1187:
1188: |S(|item(NO)) ignore this error condition.
1189:
1190: |end(text_list)
1191:
1192: |unnumbered_subsection{|cw[LINK COUNT DIR I=I OWNER=O MODE=M SIZE=S MTIME=T COUNT=X SHOULD BE Y (ADJUST)]}
1193:
1194: The link count for inode |b(I),
1195: which is a directory, is |b(X) but should be |b(Y).
1196: The owner |b(O), mode |b(M), size |b(S),
1197: and modify time |b(T) of directory inode |b(I) are printed.
1198: See Section |remember(Link count.).
1199: |p
1200: Possible responses to the |s(ADJUST) prompt are:
1201:
1202: |blank_space(1)
1203: |begin(text_list)
1204:
1205: |S(|item(YES)) replace the link count of directory inode |b(I) with |b(Y).
1206:
1207: |S(|item(NO)) ignore this error condition.
1208:
1209: |end(text_list)
1210:
1211: |unnumbered_subsection{|cw[LINK COUNT F I=I OWNER=O MODE=M SIZE=S MTIME=T COUNT=X SHOULD BE Y (ADJUST)]}
1212:
1213: The link count for inode |b(I) is |b(X) but should be |b(Y).
1214: The name |b(F), owner |b(O), mode |b(M), size |b(S),
1215: and modify time |b(T) are printed.
1216: See Section |remember(Link count.).
1217: |p
1218: Possible responses to the |s(ADJUST) prompt are:
1219:
1220: |blank_space(1)
1221: |begin(text_list)
1222:
1223: |S(|item(YES)) replace the link count of inode |b(I) with |b(Y).
1224:
1225: |S(|item(NO)) ignore this error condition.
1226:
1227: |end(text_list)
1228:
1229: |unnumbered_subsection{|cw[UNREF FILE I=I OWNER=O MODE=M SIZE=S MTIME=T (CLEAR)]}
1230:
1231: Inode |b(I), which is a file,
1232: was not connected to a directory entry when the file system was traversed.
1233: The owner |b(O), mode |b(M), size |b(S),
1234: and modify time |b(T) of inode |b(I) are printed.
1235: See Sections |remember(Link count.) and |remember(Data Blocks).
1236: |p
1237: Possible responses to the |s(CLEAR) prompt are:
1238:
1239: |blank_space(1)
1240: |begin(text_list)
1241:
1242: |S(|item(YES)) de-allocate inode |b(I) by zeroing its contents.
1243:
1244: |S(|item(NO)) ignore this error condition.
1245:
1246: |end(text_list)
1247:
1248: |unnumbered_subsection{|cw[UNREF DIR I=I OWNER=O MODE=M SIZE=S MTIME=T (CLEAR)]}
1249:
1250: Inode |b(I), which is a directory,
1251: was not connected to a directory entry when the file system was traversed.
1252: The owner |b(O), mode |b(M), size |b(S),
1253: and modify time |b(T) of inode |b(I) are printed.
1254: See Sections |remember(Link count.) and |remember(Data Blocks).
1255: |p
1256: Possible responses to the |s(CLEAR) prompt are:
1257:
1258: |blank_space(1)
1259: |begin(text_list)
1260:
1261: |S(|item(YES)) de-allocate inode |b(I) by zeroing its contents.
1262:
1263: |S(|item(NO)) ignore this error condition.
1264:
1265: |end(text_list)
1266:
1267: |unnumbered_subsection{|cw[BAD/DUP FILE I=I OWNER=O MODE=M SIZE=S MTIME=T (CLEAR)]}
1268:
1269: Phase 1 or Phase 1b has found duplicate blocks or bad blocks
1270: associated with file inode |b(I).
1271: The owner |b(O), mode |b(M), size |b(S),
1272: and modify time |b(T) of inode |b(I) are printed.
1273: See Sections |remember(Duplicate blocks) and |remember(Bad blocks).
1274: |p
1275: Possible responses to the |s(CLEAR) prompt are:
1276:
1277: |blank_space(1)
1278: |begin(text_list)
1279:
1280: |S(|item(YES)) de-allocate inode |b(I) by zeroing its contents.
1281:
1282: |S(|item(NO)) ignore this error condition.
1283:
1284: |end(text_list)
1285:
1286: |unnumbered_subsection{|cw[BAD/DUP DIR I=I OWNER=O MODE=M SIZE=S MTIME=T (CLEAR)]}
1287:
1288: Phase 1 or Phase 1b has found duplicate blocks or bad blocks
1289: associated with directory inode |b(I).
1290: The owner |b(O), mode |b(M), size |b(S),
1291: and modify time |b(T) of inode |b(I) are printed.
1292: See Sections |remember(Duplicate blocks) and |remember(Bad blocks).
1293: |p
1294: Possible responses to the |s(CLEAR) prompt are:
1295:
1296: |blank_space(1)
1297: |begin(text_list)
1298:
1299: |S(|item(YES)) de-allocate inode |b(I) by zeroing its contents.
1300:
1301: |S(|item(NO)) ignore this error condition.
1302:
1303: |end(text_list)
1304:
1305: |unnumbered_subsection{|cw[FREE INODE COUNT WRONG IN SUPERBLK (FIX)]}
1306:
1307: The real count of the free inodes
1308: does not match the count in the super-block of the file system.
1309: See Section |remember(Free inode count.).
1310: |p
1311: Possible responses to the |s(FIX) prompt are:
1312:
1313: |blank_space(1)
1314: |begin(text_list)
1315:
1316: |S(|item(YES)) replace the count in the super-block by the real count.
1317:
1318: |S(|item(NO)) ignore this error condition.
1319:
1320: |end(text_list)
1321:
1322: |section(Phase 5: Check free list)
1323:
1324: This phase concerns itself with the free block list.
1325: This section lists error conditions resulting from
1326: bad blocks in the free block list,
1327: bad free blocks count,
1328: duplicate blocks in the free block list,
1329: unused blocks from the file system not in the free block list,
1330: and an incorrect total free block count.
1331:
1332: |unnumbered_subsection{|cw[EXCESSIVE BAD BLKS IN FREE LIST (CONTINUE)]}
1333:
1334: The free block list contains more than a tolerable number (usually 10)
1335: of blocks with a value less than the first data block in the file system
1336: or greater than the last block in the file system.
1337: See Sections |remember(Free block list.) and |remember(Bad blocks).
1338: |p
1339: Possible responses to the |s(CONTINUE) prompt are:
1340:
1341: |blank_space(1)
1342: |begin(text_list)
1343:
1344: |S(|item(YES)) ignore the rest of the free block list
1345: and continue the execution of |i(fsck).
1346: This error condition will always invoke
1347: the |s(BAD) |s(BLKS) |s(IN) |s(FREE) |s(LIST) error condition in Phase 5.
1348:
1349: |S(|item(NO)) stop the program.
1350:
1351: |end(text_list)
1352:
1353: |unnumbered_subsection{|cw[EXCESSIVE DUP BLKS IN FREE LIST (CONTINUE)]}
1354:
1355: The free block list contains more than a tolerable number (usually 10)
1356: of blocks claimed by inodes or earlier parts of the free block list.
1357: See Sections |remember(Free block list.) and |remember(Duplicate blocks).
1358: |p
1359: Possible responses to the |s(CONTINUE) prompt are:
1360:
1361: |blank_space(1)
1362: |begin(text_list)
1363:
1364: |S(|item(YES)) ignore the rest of the free block list
1365: and continue the execution of |i(fsck).
1366: This error condition will always invoke
1367: the |s(DUP) |s(BLKS) |s(IN) |s(FREE) |s(LIST) error condition in Phase 5.
1368:
1369: |S(|item(NO)) stop the program.
1370:
1371: |end(text_list)
1372:
1373: |unnumbered_subsection{|cw[BAD FREEBLK COUNT]}
1374:
1375: The count of free blocks in a free list block is greater than 50
1376: or less than zero.
1377: This error condition will always invoke
1378: the |s(BAD) |s(FREE) |s(LIST) condition in Phase 5.
1379: See Section |remember(Free block list.).
1380:
1381: |unnumbered_subsection{|cw[X BAD BLKS IN FREE LIST]}
1382:
1383: |b(X) blocks in the free block list
1384: have a block number lower than the first data block in the file system
1385: or greater than the last block in the file system.
1386: This error condition will always invoke
1387: the |s(BAD) |s(FREE) |s(LIST) condition in Phase 5.
1388: See Sections |remember(Free block list.) and |remember(Bad blocks).
1389:
1390: |unnumbered_subsection{|cw[X DUP BLKS IN FREE LIST]}
1391:
1392: |b(X) blocks claimed by inodes or earlier parts of the free list block
1393: were found in the free block list.
1394: This error condition will always invoke
1395: the |s(BAD) |s(FREE) |s(LIST) condition in Phase 5.
1396: See Sections |remember(Free block list.) and |remember(Duplicate blocks).
1397:
1398: |unnumbered_subsection{|cw[X BLK(S) MISSING]}
1399:
1400: |b(X) blocks unused by the file system were not found in the free block list.
1401: This error condition will always invoke
1402: the |s(BAD) |s(FREE) |s(LIST) condition in Phase 5.
1403: See Section |remember(Free block list.).
1404:
1405: |unnumbered_subsection{|cw[FREE BLK COUNT WRONG IN SUPERBLOCK (FIX)]}
1406:
1407: The real count of free blocks
1408: does not match the count in the super-block of the file system.
1409: See Section |remember(Free block count.).
1410: |p
1411: Possible responses to the |s(FIX) prompt are:
1412:
1413: |blank_space(1)
1414: |begin(text_list)
1415:
1416: |S(|item(YES)) replace the count in the super-block by the real count.
1417:
1418: |S(|item(NO)) ignore this error condition.
1419:
1420: |end(text_list)
1421:
1422: |unnumbered_subsection{|cw[BAD FREE LIST (SALVAGE)]}
1423:
1424: Phase 5 has found
1425: bad blocks in the free block list,
1426: duplicate blocks in the free block list,
1427: or blocks missing from the file system.
1428: See Sections |remember(Free block list.), |remember(Duplicate blocks),
1429: and |remember(Bad blocks).
1430: |p
1431: Possible responses to the |s(SALVAGE) prompt are:
1432:
1433: |blank_space(1)
1434: |begin(text_list)
1435:
1436: |S(|item(YES)) replace the current free block list with a new free block list.
1437: The new free block list will be ordered to reduce time
1438: spent by the disk waiting to rotate into position.
1439:
1440: |S(|item(NO)) ignore this error condition.
1441:
1442: |end(text_list)
1443:
1444: |section(Phase 6: Salvage free list)
1445:
1446: This phase concerns itself with the free block list reconstruction.
1447: This section lists error conditions resulting from
1448: the blocks-to-skip and blocks-per-cylinder values.
1449:
1450: |unnumbered_subsection{|cw[Default free block list spacing assumed]}
1451:
1452: This is an advisory message
1453: showing that the blocks-to-skip is greater than the blocks-per-cylinder,
1454: the blocks-to-skip is less than one,
1455: the blocks-per-cylinder is less than one,
1456: or the blocks-per-cylinder is greater than 500.
1457: The default values of 9 blocks-to-skip and 400 blocks-per-cylinder are used.
1458: See the |i(fsck)(1M) manual entry for further detail.
1459:
1460: |section(Cleanup)
1461:
1462: Once a file system has been checked, a few cleanup functions are performed.
1463: This section lists advisory messages about
1464: the file system
1465: and its modified status.
1466:
1467: |unnumbered_subsection{|cw[X files Y blocks Z free]}
1468:
1469: This is an advisory message showing that the file system checked
1470: contained |b(X) files
1471: using |b(Y) blocks
1472: leaving |b(Z) blocks free in the file system.
1473:
1474: |unnumbered_subsection{|cw[***** BOOT UNIX (NO SYNC!) *****]}
1475:
1476: This is an advisory message showing that a mounted file system
1477: or the root file system has been modified by |i(fsck).
1478: If |s(UNIX) is not rebooted immediately,
1479: the work done by |i(fsck)
1480: may be undone by the in-core copies of tables kept by |s(UNIX).
1481:
1482: |unnumbered_subsection{|cw[***** FILE SYSTEM WAS MODIFIED *****]}
1483:
1484: This is an advisory message showing that the current file system
1485: was modified by |i(fsck).
1486: If this file system is mounted or is the current root file system,
1487: |i(fsck) should be halted and |s(UNIX) rebooted.
1488: If |s(UNIX) is not rebooted immediately,
1489: the work done by |i(fsck)
1490: may be undone by the in-core copies of tables kept by |s(UNIX).
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.