> > As a test, I changed the opening of the locking.tdb and brlock.tdb > > files to use the TDB_INTERNAL flag, avoiding use of the fcntl(F_SETLK) > > syscall for locking individual database records. Performance was a lot > > snappier, with quite a bit less system time used. > > > > What is the scope of implementing shared memory TDBs, where locking > > could be done simply on structures? > > How would you implement cross-process locking without > any syscalls? Maybe Linux has some fancy stuff here, but for > most unixes we need to coordinate the mmap'ed area for the > tdbs fcntl locks.
Locking via a 'volatile int count' in a shared file-backed or anonymous mapping, or via sys V shm is what I had in mind. This would be quite clean to implement, but I just can't find any user-space atomic operations exported by glibc. There are clever tricks to use the kernel ones in /usr/include/asm/atomic.h, but that is an ugly hack. Any ideas? -- Daniel J Blueman -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/listinfo/samba
