From: Mike N. <ta...@us...> - 2001-06-11 11:27:57
|
Update of /cvsroot/firebird/interbase/jrd In directory usw-pr-cvs1:/tmp/cvs-serv19855 Modified Files: winnt.c Log Message: Fixed file sharing flags Index: winnt.c =================================================================== RCS file: /cvsroot/firebird/interbase/jrd/winnt.c,v retrieving revision 1.3 retrieving revision 1.4 diff -U3 -r1.3 -r1.4 --- winnt.c 2001/05/12 01:31:59 1.3 +++ winnt.c 2001/06/11 11:27:54 1.4 @@ -72,8 +72,21 @@ static BOOLEAN nt_error (TEXT *, FIL, STATUS, STATUS *); static USHORT ostype; - +#ifdef SUPERSERVER_V2 +static const DWORD g_dwShareFlags = 0; // no sharing +static const DWORD g_dwExtraFlags = FILE_FLAG_OVERLAPPED | + FILE_FLAG_NO_BUFFERING | + FILE_FLAG_RANDOM_ACCESS; +#elif SUPERSERVER +static const DWORD g_dwShareFlags = 0; // no sharing +static const DWORD g_dwExtraFlags = FILE_FLAG_RANDOM_ACCESS; +#else +static const DWORD g_dwShareFlags = FILE_SHARE_READ | FILE_SHARE_WRITE; +static const DWORD g_dwExtraFlags = FILE_FLAG_RANDOM_ACCESS; +#endif + + /************************************** * * Add a file to an existing database. Return the sequence @@ -107,7 +120,8 @@ return sequence; } - + + void PIO_close(FIL main_file) { /************************************** @@ -141,7 +155,8 @@ } } } - + + int PIO_connection ( TEXT *file_name, USHORT *file_length) @@ -163,7 +178,8 @@ return 0; } - + + /************************************** * @@ -180,14 +196,6 @@ TEXT workspace[MAXPATHLEN]; TEXT* file_name; -#ifdef SUPERSERVER_V2 - const DWORD dwShareFlags = 0; /* no sharing */ - const DWORD dwExtraFlags = FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING; -#else - const DWORD dwShareFlags = FILE_SHARE_READ | FILE_SHARE_WRITE; - const DWORD dwExtraFlags = 0; -#endif - file_name = string; if (length) @@ -199,12 +207,11 @@ desc = CreateFile( file_name, GENERIC_READ | GENERIC_WRITE, - dwShareFlags, + g_dwShareFlags, NULL, (overwrite ? CREATE_ALWAYS : CREATE_NEW) , FILE_ATTRIBUTE_NORMAL | - FILE_FLAG_RANDOM_ACCESS | - dwExtraFlags, + g_dwExtraFlags, 0); if (desc == INVALID_HANDLE_VALUE) @@ -229,7 +236,8 @@ return file; } - + + int PIO_expand ( TEXT *file_name, USHORT file_length, @@ -249,7 +257,8 @@ return ISC_expand_filename (file_name, file_length, expanded_name); } - + + void PIO_flush ( FIL main_file) { @@ -274,7 +283,8 @@ THD_MUTEX_UNLOCK (file->fil_mutex); } } - + + void PIO_force_write ( FIL file, USHORT flag) @@ -291,27 +301,18 @@ **************************************/ HANDLE desc; -#ifdef SUPERSERVER_V2 - const DWORD dwShareFlags = 0; /* no sharing */ - const DWORD dwExtraFlags = FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING; -#else - const DWORD dwShareFlags = FILE_SHARE_READ | FILE_SHARE_WRITE; - const DWORD dwExtraFlags = 0; -#endif - if (flag) { if (!(file->fil_flags & FIL_force_write_init)) { desc = CreateFile (file->fil_string, GENERIC_READ | GENERIC_WRITE, - dwShareFlags, + g_dwShareFlags, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_WRITE_THROUGH | - FILE_FLAG_RANDOM_ACCESS | - dwExtraFlags, + g_dwExtraFlags, 0); if (desc == INVALID_HANDLE_VALUE) @@ -338,7 +339,8 @@ file->fil_flags &= ~FIL_force_write; } } - + + void PIO_header ( DBB dbb, SCHAR *address, @@ -432,7 +434,8 @@ } } - + + /************************************** * * Compute number of pages in file, based only on file size. @@ -456,7 +459,8 @@ ullFileSize = (((ULONGLONG)dwFileSizeHigh) << 32) + dwFileSizeLow; return (ULONG)((ullFileSize + pagesize - 1) / pagesize); } - + + /************************************** * * Compute last physically allocated page of database. @@ -499,8 +503,9 @@ return tot_pages; } - + + /************************************** * * Open a database file. If a "connection" block is provided, use @@ -519,14 +524,6 @@ TEXT temp [MAXPATHLEN], *ptr; HANDLE desc; -#ifdef SUPERSERVER_V2 - const DWORD dwShareFlags = 0; /* no sharing */ - const DWORD dwExtraFlags = FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING; -#else - const DWORD dwShareFlags = FILE_SHARE_READ | FILE_SHARE_WRITE; - const DWORD dwExtraFlags = 0; -#endif - if (string) { ptr = string; @@ -550,12 +547,11 @@ desc = CreateFile( ptr, GENERIC_READ | GENERIC_WRITE, - dwShareFlags, + g_dwShareFlags, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | - FILE_FLAG_RANDOM_ACCESS | - dwExtraFlags, + g_dwExtraFlags, 0); if (desc == INVALID_HANDLE_VALUE) @@ -571,8 +567,7 @@ NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | - FILE_FLAG_RANDOM_ACCESS | - dwExtraFlags, + g_dwExtraFlags, 0); if (desc == INVALID_HANDLE_VALUE) @@ -606,7 +601,8 @@ return setup_file (dbb, string, length, desc); } - + + int PIO_read ( FIL file, BDB bdb, @@ -691,7 +687,8 @@ return TRUE; } - + + #ifdef SUPERSERVER_V2 int PIO_read_ahead ( DBB dbb, @@ -790,7 +787,8 @@ return TRUE; } #endif - + + #ifdef SUPERSERVER_V2 int PIO_status ( PIOB piob, @@ -829,7 +827,8 @@ return TRUE; } #endif - + + int PIO_write ( FIL file, BDB bdb, @@ -907,7 +906,8 @@ return TRUE; } - + + #ifdef SUPERSERVER_V2 static void release_io_event ( FIL file, @@ -943,8 +943,9 @@ CloseHandle (overlapped->hEvent); } #endif - + + static FIL seek_file ( FIL file, BDB bdb, @@ -1038,7 +1039,8 @@ return file; } - + + static FIL setup_file ( DBB dbb, TEXT *file_name, @@ -1123,7 +1125,8 @@ return file; } - + + static BOOLEAN nt_error ( TEXT *string, FIL file, |