21.12.2018 16:40, adrian wilkins пишет:
Multiple Windows-based terminals local area networked into a Linux file server running Samba. All the above locking systems work OK. Multiple Windows-based terminals running PUTTY into multiple copies of DOSEMU on a Linux server. All the above locking systems work OK. A mixture of Windows-based terminals running PUTTY into DOSEMU on a Linux server AND Windows-based terminals accessing Samba directly. Locking fails. My tests reveal that it is DOSEMU that is maintaining lock tables rather than passing these through to the Operating System (whichever that is). Can you please confirm this?
No, samba does this: http://pig.made-it.com/samba-tdb.html It has quite a lot of database tables with locking info. dosemu2 passes locks down to OS.
The internet is awash with people complaining about these aspects.
People usually complain about your previous scenario with multiple dosemu instances w/o samba. But luckily it works for you correctly. This is the best we can offer.
I would like to contribute to the development of DOSEMU-2 by having these defects corrected. The obvious way is to allow the server O/S to handle record and file locking, in which case all DOSEMU-2 has to do is to pass these through to the O/S rather than handle them itself.
Maybe you can patch samba to stop using TDBs for locking, but this is very unlikely. Or maybe you can add a TDB support to dosemu. Unlikely.
Could someone in charge please advise me how to go about this: which sources contain the locking code; how to build a test DOSEMU-2 for my own use; and where to go for help ?
The locking code is in file mfs.c: https://github.com/stsp/dosemu2/blob/devel/src/dosext/mfs/mfs.c#L2686 The build instructions are here: https://github.com/stsp/dosemu2/blob/devel/INSTALL You are welcome to experiment, but don't hold your breath - a success in that task is very unlikely. We do not support the mixed environment with samba. If you are very motivated, full-time developer in this area, maybe you will come up with some "bridge" between dosemu2 and samba so that they can share the locking info with each other - good luck.