From 26cb5b6bfbd6eee46bfa3cf005b1cd9f06b0e262 Mon Sep 17 00:00:00 2001 From: Anirudha Bose Date: Sun, 19 Jun 2016 04:05:42 +0530 Subject: [PATCH] ceph-disk: Fix bug in FileLock Python fcntl.lockf() accepts a file descriptor, not a file object Signed-off-by: Anirudha Bose (cherry picked from commit df9cc2ce938a969f4044b63fd80030d00f64f060) --- src/ceph-disk/ceph_disk/main.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/ceph-disk/ceph_disk/main.py b/src/ceph-disk/ceph_disk/main.py index 17d8ca433ec56..70077620c3b99 100755 --- a/src/ceph-disk/ceph_disk/main.py +++ b/src/ceph-disk/ceph_disk/main.py @@ -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.' -- 2.39.5