Wolfgang Haupt wrote: > I've been playing around recently at home with mysql
Oh? > I was interested why smb breaks the oplock and found that every time I > execute my command: > SQLiteDataReader reader = command.ExecuteReader(); // C# code > wireshark shows me 3 lock requests/responses to/from smb: > > 1. exclusive lock, fail immediately > 2. shared lock, fail immediately > 3. unlock > > I wonder if SQLite needs an exclusive lock (which obviously is an exclusive > lock in smb language, maybe not in ntfs/fat language) for select's on the > database, or if the translation of file-locks is broken within windows' smb > protocol implementation. Different SQLite locks are implemented by taking an exclusive lock on different bytes in the file. This is what the source code says about it: ** LockFile() prevents not just writing but also reading by other processes. ** A SHARED_LOCK is obtained by locking a single randomly-chosen ** byte out of a specific range of bytes. The lock byte is obtained at ** random so two separate readers can probably access the file at the ** same time, unless they are unlucky and choose the same lock byte. ** An EXCLUSIVE_LOCK is obtained by locking all bytes in the range. ** There can only be one writer. A RESERVED_LOCK is obtained by locking ** a single byte of the file that is designated as the reserved lock byte. ** A PENDING_LOCK is obtained by locking a designated byte different from ** the RESERVED_LOCK byte. ** ** On WinNT/2K/XP systems, LockFileEx() and UnlockFileEx() are available, ** which means we can use reader/writer locks. When reader/writer locks ** are used, the lock is placed on the same range of bytes that is used ** for probabilistic locking in Win95/98/ME. Hence, the locking scheme ** will support two or more Win95 readers or two or more WinNT readers. ** But a single Win95 reader will lock out all WinNT readers and a single ** WinNT reader will lock out all other Win95 readers. > I only see those lock requests when a second user is connected to the db > (another smb detail I guess). > > It's not that there's any problem here, I just want to understand what's > going on, as I've been assuming that a read only file access will not break > an smb oplock. Reading will not break an oplock, but when two programs take R/W locks, Windows assumes that at least one of them is about to write something. Regards, Clemens _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users