diff --git a/src/backup/chunk_store.rs b/src/backup/chunk_store.rs index 5cc944c9..360745d2 100644 --- a/src/backup/chunk_store.rs +++ b/src/backup/chunk_store.rs @@ -275,14 +275,13 @@ impl ChunkStore { pub fn sweep_unused_chunks( &self, oldest_writer: i64, + phase1_start_time: i64, status: &mut GarbageCollectionStatus, worker: &WorkerTask, ) -> Result<(), Error> { use nix::sys::stat::fstatat; - let now = unsafe { libc::time(std::ptr::null_mut()) }; - - let mut min_atime = now - 3600*24; // at least 24h (see mount option relatime) + let mut min_atime = phase1_start_time - 3600*24; // at least 24h (see mount option relatime) if oldest_writer < min_atime { min_atime = oldest_writer; diff --git a/src/backup/datastore.rs b/src/backup/datastore.rs index a8bb282b..ffd64b81 100644 --- a/src/backup/datastore.rs +++ b/src/backup/datastore.rs @@ -492,7 +492,7 @@ impl DataStore { self.mark_used_chunks(&mut gc_status, &worker)?; worker.log("Start GC phase2 (sweep unused chunks)"); - self.chunk_store.sweep_unused_chunks(oldest_writer, &mut gc_status, &worker)?; + self.chunk_store.sweep_unused_chunks(oldest_writer, now, &mut gc_status, &worker)?; worker.log(&format!("Removed bytes: {}", gc_status.removed_bytes)); worker.log(&format!("Removed chunks: {}", gc_status.removed_chunks));