X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-xen-config.git/blobdiff_plain/a0ad482aa6f044632c66ce1fd7b550d0bbdea5b1..57a29a823f478cf8ad7d86d3749093d702c25224:/files/usr/sbin/sipb-xen-losetup?ds=sidebyside diff --git a/files/usr/sbin/sipb-xen-losetup b/files/usr/sbin/sipb-xen-losetup deleted file mode 100755 index 5776248..0000000 --- a/files/usr/sbin/sipb-xen-losetup +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python2.5 - -import sys -import os -from subprocess import call - -def losetup(source, offset=0): - # XXX we avoid colliding with other instances of ourself, - # but when it comes to other loop-device users we just - # pick a range things don't seem to use and hope... - lockfilename = '/tmp/losetup.lock' - os.close(os.open(lockfilename, os.O_CREAT+os.O_EXCL)) #lock - try: - loopdevice = None - for i in xrange(32,60): # totally arbitrary, just looks to be unused on black-mesa - filename = '/dev/loop%d'%i - if 0 == len(file(filename).read(1)): - loopdevice = filename # it's empty - break - if loopdevice is not None: - call(['losetup', '-o', str(offset), loopdevice, source]) - else: - raise RuntimeError('out of loop devices for copying VM image: too many at once?') - finally: - os.unlink(lockfilename) #unlock - return loopdevice - -def main(*argv): - args = argv[1:] - os.environ['PATH'] = '/usr/sbin:/usr/bin:/sbin:/bin' - if not (1 <= len(args) <= 2): - print >>sys.stderr, 'usage: %s sourcedevice [offset]' % argv[0] - print >>sys.stderr, 'prints resulting loopback device; don\'t forget to losetup -d' - return 2 - print losetup(*args) - return 0 - -if __name__ == '__main__': - sys.exit(main(*sys.argv))