mirror of
				https://github.com/isar/libmdbx.git
				synced 2025-10-31 03:29:01 +08:00 
			
		
		
		
	mdbx: allow sync_file_range() to fail for Valgrind/QEMU cases.
Change-Id: I9aa77d1debfbd0cb18e940946533e4ed758d08e8
This commit is contained in:
		
							
								
								
									
										18
									
								
								src/core.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								src/core.c
									
									
									
									
									
								
							| @@ -4950,14 +4950,24 @@ __cold static int mdbx_wipe_steady(MDBX_env *env, const txnid_t last_steady) { | ||||
|       return err; | ||||
|   } else { | ||||
| #if MDBX_USE_SYNCFILERANGE | ||||
|     if (sync_file_range(env->me_lazy_fd, 0, pgno2bytes(env, NUM_METAS), | ||||
|                         SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_AFTER)) | ||||
|     static bool syncfilerange_unavailable; | ||||
|     if (likely(!syncfilerange_unavailable)) { | ||||
|       if (likely(!sync_file_range( | ||||
|               env->me_lazy_fd, 0, pgno2bytes(env, NUM_METAS), | ||||
|               SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_AFTER))) | ||||
|         goto done_filesync; | ||||
|       err = errno; | ||||
| #else | ||||
|       if (ignore_enosys(err) != MDBX_RESULT_TRUE) | ||||
|         return err; | ||||
|       syncfilerange_unavailable = true; | ||||
|     } | ||||
| #endif /* MDBX_USE_SYNCFILERANGE */ | ||||
|     err = mdbx_fsync(env->me_lazy_fd, MDBX_SYNC_DATA); | ||||
| #endif | ||||
|     if (unlikely(err != MDBX_SUCCESS)) | ||||
|       return err; | ||||
| #if MDBX_USE_SYNCFILERANGE | ||||
|   done_filesync: | ||||
| #endif /* MDBX_USE_SYNCFILERANGE */ | ||||
|     mdbx_flush_incoherent_mmap(env->me_map, pgno2bytes(env, NUM_METAS), | ||||
|                                env->me_os_psize); | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user