[Gluster-devel] posix-locks bugs

Timo Sirainen tss at iki.fi
Tue Dec 18 13:15:37 UTC 2007


new_posix_lock (struct flock *flock, transport_t *transport, pid_t client_pid)
..
  if (flock->l_len == 0)
    lock->fl_end = ULONG_MAX;

fl_end is "signed long long" type pretty much everywhere. The main bug
here is that with 64bit systems ULONG_MAX gets converted to -1, and
l_len=0 locks break completely.

With 32bit systems it also breaks if doing lock ranges above 4GB in a
file, but this is probably less of a problem.

So, this should work better:

    lock->fl_end = LLONG_MAX;

(BTW. Why aren't PGP signatures allowed here? I got "The message's
content type was not explicitly allowed")







More information about the Gluster-devel mailing list