On 6/2/2013 04:31, Corinna Vinschen wrote:
I just applied a patch to implement mandatory locking.
Thank you!
It also supports
F_GETLK, with limited usability due to Windows restrictions, as I
explained in other mail.
It is what it is.
A haiku:
Yesterday it worked.
Today it is not working.
Windows is like that.
I dropped the F_MDLCK idea. Instead I implemented a specific fcntl code
to switch to mandatory locking on a file descriptor:
fcntl (fd, F_LCK_MANDATORY, 1);
Could you add an O_MAND open(2) option as well to turn on the same
feature? This will avoid a race condition.
I apologize for not thinking of this earlier. It just occurred to me as
I was working on the SQLite patch to make use of this new feature.
I didn't add a way for the user to switch on mandatory locking for now,
and I don't intend to do that for 1.7.19. Hope that helps, nevertheless.
I *think* it's sufficient. I may think differently later. :)
My current plan is that Cygwin SQLite will build in "Unix mode" now, but
with the build flag Yaakov requested above, and mandatory locking
enabled unless an environment variable is set. This will let those in
Achim's camp use the official Cygwin SQLite but ask it to run in pure
POSIX mode.
A test build will appear later today.
Please give the 32 bit snapshot a try ASAP.
As I see it, the test will proceed in several stages:
0. I patch SQLite and run it against both .18 and your snapshot, and
strace it to verify that fcntl(fd, 0x99, 1) is called and returns 0 with
the snapshot and returns -1 with errno == EINVAL for .18. Both count as
"success" so we don't have to require .19.
1. I upload it, and Achim and Yaakov try it and see if this new build
satisfies their use cases.
2. I promote test to curr -- waiting for .19 to hit the mirrors if Achim
and Yaakov get back to me before that -- and wait for screams from the
users.
3. A month or two hence, I'll tell upstream about the patch, and hope
they adopt it.
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple