record fscked files in fsck db by default

Remember the files that are checked, so a later run with --more will
skip them, without needing to use --incremental.
This commit is contained in:
Joey Hess 2025-03-17 15:34:08 -04:00
parent f775c9643f
commit 2d60ce4803
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
5 changed files with 61 additions and 7 deletions

View file

@ -713,13 +713,12 @@ getStartTime u = do
#endif
data Incremental
= NonIncremental
= NonIncremental (Maybe FsckDb.FsckHandle)
| ScheduleIncremental Duration UUID Incremental
| StartIncremental FsckDb.FsckHandle
| ContIncremental FsckDb.FsckHandle
prepIncremental :: UUID -> Maybe IncrementalOpt -> Annex Incremental
prepIncremental _ Nothing = pure NonIncremental
prepIncremental u (Just StartIncrementalO) = do
recordStartTime u
ifM (FsckDb.newPass u)
@ -734,6 +733,14 @@ prepIncremental u (Just (ScheduleIncrementalO delta)) = do
Nothing -> StartIncrementalO
Just _ -> MoreIncrementalO
return (ScheduleIncremental delta u i)
prepIncremental u Nothing =
ifM (Annex.getRead Annex.fast)
-- Avoid recording fscked files in --fast mode,
-- since that can interfere with a non-fast incremental
-- fsck.
( pure (NonIncremental Nothing)
, (NonIncremental . Just) <$> openFsckDb u
)
cleanupIncremental :: Incremental -> Annex ()
cleanupIncremental (ScheduleIncremental delta u i) = do
@ -757,6 +764,6 @@ openFsckDb u = do
withFsckDb :: Incremental -> (FsckDb.FsckHandle -> Annex ()) -> Annex ()
withFsckDb (ContIncremental h) a = a h
withFsckDb (StartIncremental h) a = a h
withFsckDb NonIncremental _ = noop
withFsckDb (NonIncremental mh) a = maybe noop a mh
withFsckDb (ScheduleIncremental _ _ i) a = withFsckDb i a