Has anyone considered supporting SQLITE_SYNC_DATAONLY on Windows using NtFlushBuffersFileEx? http://msdn.microsoft.com/en-us/library/windows/hardware/hh967720(v=vs.85).aspx
>When the SQLITE_SYNC_DATAONLY flag is used, it means that the sync operation >only needs to flush data to mass storage. Inode information need not be >flushed. Am I missing something in SQLite's expectations? Isn't this just flush the file's data/content but not the associated metadata (filesize, etc Windows inode-equivalent) i.e. NtFlushBuffersFileEx(...,flags=FLUSH_FLAGS_FILE_DATA_ONLY,...)? It looks like it's just a change in winSync() to replace rc = osFlushFileBuffers(pFile->h); with something like IO_STATUS_BLOCK ioStatusBlock; ... int isDataOnly = (flags&SQLITE_SYNC_DATAONLY); ... if (isDataOnly) rc = osFlushFileBuffers(pFile->h); else rc = HRESULT_FROM_NT(NtFlushBuffersFileEx(pFile->h, FLUSH_FLAGS_FILE_DATA_ONLY, &ioStatusBlock); Would a new system call be used to optionally support sync-dataonly semantics? Or would this be handled via a new compile-time option and #ifdef in winSync? - Howard