Thank you for your quick response!
Am Donnerstag, 25. Juli 2013, 10:31:40 schrieb Daniel P. Berrange:
On Thu, Jul 25, 2013 at 08:23:24AM +0000, David Weber wrote:
> Hi,
>
> we are interested in using virtlockd on an OCFS2 shared filesystem.
> We are now facing the problem that virtlockd uses fcntl() locks which
> aren't supported by OCFS2 with the o2cb cluster stack and we want
> to avoid using indirect leases.
>
> OCFS2 instead supports flock() which is quite similar to fcntl(). I
> attached a patch which makes libvirt use flock() *instead* of fcntl()
> and it seems to work.
>
> NFS on the contrast only supports fcntl() so it should be configurable
> which lock type to use.
>
> I'm not very experienced with locking, so would such a patch be
> acceptable or do you see possible problems with it?
We definitely can't use flock() unconditionally like that, as it is
less widely supported than fcntl() locking and is known broken on
most network filesystems (flock() will only lock wrt the local node,
not network-wide).
flock() locks are cluster aware in recent versions of OCFS2 and I would try to
make it configurable which lock type to use.
I'm pretty surprised that you can fcntl() is not supported in ocfs2.
Are you really sure about that ?
This mail message suggests it is supported
https://oss.oracle.com/pipermail/ocfs2-users/2009-June/003572.html
"Support for fcntl locking aka file-range locking aka posix locking is
provided by vfs for all file systems. However, that support is appropriate
only for local file systems.
In ocfs2, we have added support for cluster-aware fcntl locking via
the userspace clustering framework that allows one to use ocfs2 with
different cluster-stacks."
OCFS2 supports fcntl() only with the userspace cluster stacks (pacemaker and
cman) which we want to avoid.
SUSE advises to use indirect leases which we also want to avoid:
https://www.suse.com/documentation//sled11/book_kvm/?page=/documentation/...
"virtlockd's default configuration does not allow you to lock disk files placed
on a shared file system (for example NFS or OCFS2). Locking on these file
systems requires you to specify a lockspace directory on the VM Host Server by
setting"
Although that's not completely correct because NFS supports fcntl()
Cheers,
David
Regards,
Daniel