nix-store --verify: Don't repair while holding the GC lock
This commit is contained in:
		
							parent
							
								
									a2597d5f27
								
							
						
					
					
						commit
						399b6f3c46
					
				
					 1 changed files with 4 additions and 5 deletions
				
			
		| 
						 | 
					@ -1210,7 +1210,8 @@ bool LocalStore::verifyStore(bool checkContents, RepairFlag repair)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bool errors = false;
 | 
					    bool errors = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Acquire the global GC lock to prevent a garbage collection. */
 | 
					    /* Acquire the global GC lock to get a consistent snapshot of
 | 
				
			||||||
 | 
					       existing and valid paths. */
 | 
				
			||||||
    AutoCloseFD fdGCLock = openGCLock(ltWrite);
 | 
					    AutoCloseFD fdGCLock = openGCLock(ltWrite);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PathSet store;
 | 
					    PathSet store;
 | 
				
			||||||
| 
						 | 
					@ -1221,13 +1222,11 @@ bool LocalStore::verifyStore(bool checkContents, RepairFlag repair)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PathSet validPaths2 = queryAllValidPaths(), validPaths, done;
 | 
					    PathSet validPaths2 = queryAllValidPaths(), validPaths, done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fdGCLock = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (auto & i : validPaths2)
 | 
					    for (auto & i : validPaths2)
 | 
				
			||||||
        verifyPath(i, store, done, validPaths, repair, errors);
 | 
					        verifyPath(i, store, done, validPaths, repair, errors);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Release the GC lock so that checking content hashes (which can
 | 
					 | 
				
			||||||
       take ages) doesn't block the GC or builds. */
 | 
					 | 
				
			||||||
    fdGCLock = -1;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /* Optionally, check the content hashes (slow). */
 | 
					    /* Optionally, check the content hashes (slow). */
 | 
				
			||||||
    if (checkContents) {
 | 
					    if (checkContents) {
 | 
				
			||||||
        printInfo("checking hashes...");
 | 
					        printInfo("checking hashes...");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue