Subj : src/build/Common.gmake To : Git commit to sbbs/master From : Rob Swindell Date : Wed Oct 21 2020 11:52 pm 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. .