]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-disk: Fix bug in FileLock
authorAnirudha Bose <ani07nov@gmail.com>
Sat, 18 Jun 2016 22:35:42 +0000 (04:05 +0530)
committerLoic Dachary <ldachary@redhat.com>
Wed, 26 Oct 2016 09:29:40 +0000 (11:29 +0200)
Python fcntl.lockf() accepts a file descriptor, not a file object

Signed-off-by: Anirudha Bose <ani07nov@gmail.com>
(cherry picked from commit df9cc2ce938a969f4044b63fd80030d00f64f060)

src/ceph-disk/ceph_disk/main.py

index 17d8ca433ec56298dba6d9d3178c4d51efc27ff1..70077620c3b999b8b052e66fef3e044c2d52ca7d 100755 (executable)
@@ -244,19 +244,20 @@ CEPH_PREF_USER = None
 CEPH_PREF_GROUP = None
 
 
-class filelock(object):
+class FileLock(object):
     def __init__(self, fn):
         self.fn = fn
         self.fd = None
 
     def acquire(self):
         assert not self.fd
-        self.fd = open(self.fn, 'w')
+        self.fd = os.open(self.fn, os.O_WRONLY | os.O_CREAT)
         fcntl.lockf(self.fd, fcntl.LOCK_EX)
 
     def release(self):
         assert self.fd
         fcntl.lockf(self.fd, fcntl.LOCK_UN)
+        os.close(self.fd)
         self.fd = None
 
 
@@ -4433,10 +4434,10 @@ def setup_statedir(dir):
         os.mkdir(STATEDIR + "/tmp")
 
     global prepare_lock
-    prepare_lock = filelock(STATEDIR + '/tmp/ceph-disk.prepare.lock')
+    prepare_lock = FileLock(STATEDIR + '/tmp/ceph-disk.prepare.lock')
 
     global activate_lock
-    activate_lock = filelock(STATEDIR + '/tmp/ceph-disk.activate.lock')
+    activate_lock = FileLock(STATEDIR + '/tmp/ceph-disk.activate.lock')
 
     global SUPPRESS_PREFIX
     SUPPRESS_PREFIX = STATEDIR + '/tmp/suppress-activate.'