Tobias Bading <tbading@web.de> writes:
> fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
> fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
> fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
There should be a second fcntl with F_UNLCK, start=0, len=0 which
unlocks the whole file. On my Linux system it is present whether or not
I use exclusive locking:
fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
fcntl(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
> access("/smb/<path-to-share>/<wc-root>/.svn/wc.db-journal", F_OK) = -1
> ENOENT (No such file or directory)
> fstat(3, {st_mode=S_IFREG|0600, st_size=100352, ...}) = 0
> access("/smb/<path-to-share>/<wc-root>/.svn/wc.db-wal", F_OK) = -1
> ENOENT (No such file or directory)
> fstat(3, {st_mode=S_IFREG|0600, st_size=100352, ...}) = 0
> [...]
> fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741825, len=1}) = 0
> [...]
> fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
>
> then 10 times
>
> fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741826, len=510}) = -1 EACCES
(Permission denied)
The missing F_UNLCK means the file is still locked and so this fails. I
don't know why SQLite is missing the F_UNLCK.
--
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*
|