mirror of
https://github.com/opnsense/src.git
synced 2026-04-21 14:17:06 -04:00
to resolve errors which can cause corruption on recovery with the old synchronous mechanism. - Append partial truncation freework structures to indirdeps while truncation is proceeding. These prevent new block pointers from becoming valid until truncation completes and serialize truncations. - On completion of a partial truncate journal work waits for zeroed pointers to hit indirects. - softdep_journal_freeblocks() handles last frag allocation and last block zeroing. - vtruncbuf/ffs_page_remove moved into softdep_*_freeblocks() so it is only implemented in one place. - Block allocation failure handling moved up one level so it does not proceed with buf locks held. This permits us to do more extensive reclaims when filesystem space is exhausted. - softdep_sync_metadata() is broken into two parts, the first executes once at the start of ffs_syncvnode() and flushes truncations and inode dependencies. The second is called on each locked buf. This eliminates excessive looping and rollbacks. - Improve the mechanism in process_worklist_item() that handles acquiring vnode locks for handle_workitem_remove() so that it works more generally and does not loop excessively over the same worklist items on each call. - Don't corrupt directories by zeroing the tail in fsck. This is only done for regular files. - Push a fsync complete record for files that need it so the checker knows a truncation in the journal is no longer valid. Discussed with: mckusick, kib (ffs_pages_remove and ffs_truncate parts) Tested by: pho |
||
|---|---|---|
| .. | ||
| dir.c | ||
| ea.c | ||
| fsck.h | ||
| fsck_ffs.8 | ||
| fsutil.c | ||
| gjournal.c | ||
| inode.c | ||
| main.c | ||
| Makefile | ||
| pass1.c | ||
| pass1b.c | ||
| pass2.c | ||
| pass3.c | ||
| pass4.c | ||
| pass5.c | ||
| setup.c | ||
| suj.c | ||
| utilities.c | ||