[Box Backup] backup on nfs-mounted storage
Ben Summers
boxbackup@fluffy.co.uk
Thu, 19 Oct 2006 15:53:43 +0100
On 19 Oct 2006, at 11:38, Martin Ebourne wrote:
> Ben Summers <ben@fluffy.co.uk> wrote:
>> What happens if you use both? Are the two mechanism independent?
>
> From the manpage on Linux:
>
> flock(2) does not lock files over NFS. Use fcntl(2)
> instead: that does
> work over NFS, given a sufficiently recent version of
> Linux and a
> server which supports locking.
>
> Since kernel 2.0, flock(2) is implemented as a system call
> in its own
> right rather than being emulated in the GNU C library
> as a call to
> fcntl(2). This yields true BSD semantics: there is no
> interaction
> between the types of lock placed by flock(2) and fcntl(2),
> and flock(2)
> does not detect deadlock.
>
> Hence the wariness over new holes...
>
> What does BSD do about file locking over NFS?
Well I think it "works" if you run the right daemons. But "works"
only means "works as well as NFS locking ever does".
The only thing for which locking is actually required is locking
accounts against duplicate write access (assuming that we get rid of
lib/raidfile -- I don't think there's any need for it any more). It
might be better to do the work to replace all RaidFile operations
with normal FileStream operations, check that locking can be done
away with, then implement a better mechanism for locking accounts.
Perhaps something like creating a file called
lock.hostname.pid
So, to lock, you create a file with your hostname and PID.
Afterwards, check to see if there is another lock file. If so, delete
yours and try again. Then you just need a mechanism to check for
stale locks. Not so easy if the hostname isn't one for your machine
though.
Ben