X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fqa%2Fworkunits%2Ffs%2Fmisc%2Ffilelock_interrupt.py;fp=src%2Fceph%2Fqa%2Fworkunits%2Ffs%2Fmisc%2Ffilelock_interrupt.py;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=2a413a66e83531dc86112f22b5679d03bc3740fb;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/qa/workunits/fs/misc/filelock_interrupt.py b/src/ceph/qa/workunits/fs/misc/filelock_interrupt.py deleted file mode 100755 index 2a413a6..0000000 --- a/src/ceph/qa/workunits/fs/misc/filelock_interrupt.py +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/python - -import errno -import fcntl -import signal -import struct - -""" -introduced by Linux 3.15 -""" -fcntl.F_OFD_GETLK = 36 -fcntl.F_OFD_SETLK = 37 -fcntl.F_OFD_SETLKW = 38 - - -def handler(signum, frame): - pass - - -def main(): - f1 = open("testfile", 'w') - f2 = open("testfile", 'w') - - fcntl.flock(f1, fcntl.LOCK_SH | fcntl.LOCK_NB) - - """ - is flock interruptable? - """ - signal.signal(signal.SIGALRM, handler) - signal.alarm(5) - try: - fcntl.flock(f2, fcntl.LOCK_EX) - except IOError as e: - if e.errno != errno.EINTR: - raise - else: - raise RuntimeError("expect flock to block") - - fcntl.flock(f1, fcntl.LOCK_UN) - - lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 10, 0, 0) - try: - fcntl.fcntl(f1, fcntl.F_OFD_SETLK, lockdata) - except IOError as e: - if e.errno != errno.EINVAL: - raise - else: - print('kernel does not support fcntl.F_OFD_SETLK') - return - - lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 10, 10, 0, 0) - fcntl.fcntl(f2, fcntl.F_OFD_SETLK, lockdata) - - """ - is poxis lock interruptable? - """ - signal.signal(signal.SIGALRM, handler) - signal.alarm(5) - try: - lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0) - fcntl.fcntl(f2, fcntl.F_OFD_SETLKW, lockdata) - except IOError as e: - if e.errno != errno.EINTR: - raise - else: - raise RuntimeError("expect posix lock to block") - - """ - file handler 2 should still hold lock on 10~10 - """ - try: - lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 10, 10, 0, 0) - fcntl.fcntl(f1, fcntl.F_OFD_SETLK, lockdata) - except IOError as e: - if e.errno == errno.EAGAIN: - pass - else: - raise RuntimeError("expect file handler 2 to hold lock on 10~10") - - lockdata = struct.pack('hhllhh', fcntl.F_UNLCK, 0, 0, 0, 0, 0) - fcntl.fcntl(f1, fcntl.F_OFD_SETLK, lockdata) - fcntl.fcntl(f2, fcntl.F_OFD_SETLK, lockdata) - - print('ok') - - -main()