https://gitlab.synchro.net/sbbs/sbbs/-/commit/f615f2e3ba27c342774c6eb5
Modified Files:
src/build/Common.gmake
Log Message:
We must explicitly set _FILE_OFFSET_BITS=64 to use Linux OFD locks
The Linux lock() implementation in xpdev/filewrap.c requires that _FILE_OFFSET_BITS is set to 64 or else OFD (sane) locks are not
used on Linux, defaulting back to the crazy per-process file region
locking of Linux of old. This was done in this commit:
http://cvs.synchro.net/commitlog.ssjs?99999#39639
because:
https://patchwork.kernel.org/patch/9289177/
but on 64-bit Linux, large file support is assumed and you don't
actually need to define _FILE_OFFFSET_BITS, we're peforming this
check for 32-bit Linuxes. Perhaps a check to see if sizeof(off_t)
== 8 would have been better. However, this change enables OFD
Locks for *all* flavors of Linux (not just 64-bit) - so that's
better.
Why do we care? Because using region locks on the same file in
a multi-threaded program doesn't really work right on Linux without
using OFD Locks. I saw this problem with receiving multiple
simultaneous emails in the mailserver and getting smb_locksmbhdr() errors/failures when trying to save the message data or headers
of the one or more messages every time GitLab would send email
out to those whoe have opted-in to received email notifications
upon gitlab.synchro.net activity.
---
ï¿ Synchronet ï¿ Vertrauen ï¿ Home of Synchronet ï¿ [vert/cvs/bbs].synchro.net