remoteloop: pass filename to create_device
This makes LoopClient simpler to use in the common case.
This commit is contained in:
parent
356f62058f
commit
0dd60b3abf
2 changed files with 4 additions and 4 deletions
|
|
@ -20,9 +20,7 @@ def mount(source, dest, *options):
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def loop_device(loop_client, image, size, offset=0):
|
def loop_device(loop_client, image, size, offset=0):
|
||||||
fd = os.open(image, os.O_RDWR | os.O_DIRECT)
|
devname = loop_client.create_device(image, offset=offset, sizelimit=size)
|
||||||
devname = loop_client.create_device(fd, offset=offset, sizelimit=size)
|
|
||||||
os.close(fd)
|
|
||||||
path = f"/dev/{devname}"
|
path = f"/dev/{devname}"
|
||||||
try:
|
try:
|
||||||
yield path
|
yield path
|
||||||
|
|
|
||||||
|
|
@ -112,9 +112,10 @@ class LoopClient:
|
||||||
def __init__(self, sock):
|
def __init__(self, sock):
|
||||||
self.sock = sock
|
self.sock = sock
|
||||||
|
|
||||||
def create_device(self, fd, offset=None, sizelimit=None):
|
def create_device(self, filename, offset=None, sizelimit=None):
|
||||||
req = {}
|
req = {}
|
||||||
fds = array.array("i")
|
fds = array.array("i")
|
||||||
|
fd = os.open(filename, os.O_RDWR | os.O_DIRECT)
|
||||||
dir_fd = os.open("/dev", os.O_DIRECTORY)
|
dir_fd = os.open("/dev", os.O_DIRECTORY)
|
||||||
|
|
||||||
fds.append(fd)
|
fds.append(fd)
|
||||||
|
|
@ -129,6 +130,7 @@ class LoopClient:
|
||||||
|
|
||||||
dump_fds(self.sock, req, fds)
|
dump_fds(self.sock, req, fds)
|
||||||
os.close(dir_fd)
|
os.close(dir_fd)
|
||||||
|
os.close(fd)
|
||||||
|
|
||||||
ret = json.loads(self.sock.recv(1024))
|
ret = json.loads(self.sock.recv(1024))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue