On 11/04/14 15:26, Alan DeKok wrote:
Phil Mayers wrote:
I think it's important to note this *will* be working for 2.2.x on Linux because the locking #ifdef will end up using flock() which has saner, per-fd semantics.
I don't recall why that was changed. There was a reason, right?
It was the thread I linked to the other day. Basically: 1. rlm_sql_log got removed in 3.x in favour of rlm_sql with a logfile. 2. I pointed out that rlm_sql_log used locking, and that whatever replaced it needed to use the same locking scheme so that it would work with radsqlrelay. 3. rad_lockfd was then made to use fcntl() only, and rlm_sql was made to use rad_lockfd. So it's sort-of my fault for stirring it all up ;o)
The problem is that the logging calls are specific to each module. The filenames aren't tracked globally.
Ah sorry then I've misunderstood.
On Linux, uncontended mutexes can be done in user space. The code
Ignore me; I was assuming the filename/fd list was global. The locking is not really a concern if it's per-module.