]> git-server-git.apps.pok.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)
committerAnirudha Bose <ani07nov@gmail.com>
Wed, 17 Aug 2016 07:34:32 +0000 (13:04 +0530)
Python fcntl.lockf() accepts a file descriptor, not a file object

Signed-off-by: Anirudha Bose <ani07nov@gmail.com>
src/ceph-disk/ceph_disk/main.py

index daa5a1e2fc2f704d31acc45fbfb66be2c40da2dc..e65a24a8b82c5334d93a7a259eb611cda3b85853 100755 (executable)
@@ -245,19 +245,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
 
 
@@ -4426,10 +4427,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.'