]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
os/bluestore/KernelDevice: use flock(2) for block device lock
authorSage Weil <sage@redhat.com>
Fri, 1 Feb 2019 17:39:41 +0000 (11:39 -0600)
committerSage Weil <sage@redhat.com>
Fri, 1 Feb 2019 17:39:41 +0000 (11:39 -0600)
commit632a1033aa2325cb216e2216b191c492c45ed19d
treef45fa8b9ef66aaff263c93165ce58ba1a106147a
parentc870477461b28d3e232ded71981288bfc654baba
os/bluestore/KernelDevice: use flock(2) for block device lock

The fcntl locks fail due to the classic posix lock gotcha: if you close
*any* fd to the same inode from the process, the lock(s) go away.

Use flock(2) instead.  We have to be careful because we open the main
bluestore device via two KernelDevice instances: one for bluestore and
one for bluefs.  Add a no-lock flag so that the bluefs instance does not
try to lock and does not conflict with bluestore's.

Fixes: http://tracker.ceph.com/issues/38150
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/BlockDevice.h
src/os/bluestore/BlueFS.cc
src/os/bluestore/BlueFS.h
src/os/bluestore/BlueStore.cc
src/os/bluestore/KernelDevice.cc