> -----Original Message----- > From: Merlin Moncure [mailto:[EMAIL PROTECTED]] > Sent: Monday, February 03, 2003 3:00 PM > To: Andrew Dunstan > Cc: [EMAIL PROTECTED] > Subject: Re: [HACKERS] Win32 and fsync() > > > >I'm having difficulty digging up the reference, but I think I recall > seeing >something that said, roughly, on W32 there are 2 sets > of buffers > - those in >the user level library and those in the kernel > level driver, and >FlushFileBuffers drains the first, while > _commit drains both (it includes a >call to FlushFileBuffers). > > You were correct: here is the source. > > > int __cdecl _commit ( > int filedes > ) > { > int retval; > > /* if filedes out of range, complain */ > if ( ((unsigned)filedes >= (unsigned)_nhandle) || > !(_osfile(filedes) & FOPEN) ) > { > errno = EBADF; > return (-1); > } > > _lock_fh(filedes); > > /* if filedes open, try to commit, else fall through to bad */ > if (_osfile(filedes) & FOPEN) { > > if ( > !FlushFileBuffers((HANDLE)_get_osfhandle(filedes)) > ) { > retval = GetLastError(); > } else { > retval = 0; /* return success */ > } > > /* map the OS return code to C errno value > and return code */ > if (retval == 0) { > goto good; > } else { > _doserrno = retval; > goto bad; > } > > } > > bad : > errno = EBADF; > retval = -1; > good : > _unlock_fh(filedes); > return (retval); > }
Where is the "other" flush besides FlushFileBuffers()? ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]