@contextlib.contextmanager
def streams(fs, first, second):
(filename, snaps) = make_snapshots(fs, None, first, second)
- with tempfile.TemporaryFile(suffix='.ztream') as full:
+ with tempfile.TemporaryFile(suffix='.zstream') as full:
lzc.lzc_send(snaps[1], None, full.fileno())
full.seek(0)
if snaps[2] is not None:
- with tempfile.TemporaryFile(suffix='.ztream') as incremental:
+ with tempfile.TemporaryFile(suffix='.zstream') as incremental:
lzc.lzc_send(snaps[2], snaps[1], incremental.fileno())
incremental.seek(0)
yield (filename, (full, incremental))
with self.assertRaises(lzc_exc.DatasetTypeInvalid):
lzc.lzc_create(name, ds_type='wrong')
- # XXX: we should have a way to raise lzc_exc.WrongParent from lzc_create()
- @unittest.expectedFailure
def test_create_fs_below_zvol(self):
name = ZFSTest.pool.makeName(b"fs1/fs/zvol")
props = {b"volsize": 1024 * 1024}
with self.assertRaises(lzc_exc.WrongParent):
lzc.lzc_create(name + b'/fs')
+ def test_create_zvol_below_zvol(self):
+ name = ZFSTest.pool.makeName(b"fs1/fs/zvol")
+ props = {b"volsize": 1024 * 1024}
+
+ lzc.lzc_create(name, ds_type='zvol', props=props)
+ with self.assertRaises(lzc_exc.WrongParent):
+ lzc.lzc_create(name + b'/zvol', ds_type='zvol', props=props)
+
def test_create_fs_duplicate(self):
name = ZFSTest.pool.makeName(b"fs1/fs/test6")
f.flush()
lzc.lzc_snapshot([snap])
- with tempfile.TemporaryFile(suffix='.ztream') as output:
+ with tempfile.TemporaryFile(suffix='.zstream') as output:
estimate = lzc.lzc_send_space(snap)
fd = output.fileno()
f.flush()
lzc.lzc_snapshot([snap2])
- with tempfile.TemporaryFile(suffix='.ztream') as output:
+ with tempfile.TemporaryFile(suffix='.zstream') as output:
estimate = lzc.lzc_send_space(snap2, snap1)
fd = output.fileno()
def test_send_same_snap(self):
snap1 = ZFSTest.pool.makeName(b"fs1@snap1")
lzc.lzc_snapshot([snap1])
- with tempfile.TemporaryFile(suffix='.ztream') as output:
+ with tempfile.TemporaryFile(suffix='.zstream') as output:
fd = output.fileno()
with self.assertRaises(lzc_exc.SnapshotMismatch):
lzc.lzc_send(snap1, snap1, fd)
lzc.lzc_snapshot([snap1])
lzc.lzc_snapshot([snap2])
- with tempfile.TemporaryFile(suffix='.ztream') as output:
+ with tempfile.TemporaryFile(suffix='.zstream') as output:
fd = output.fileno()
with self.assertRaises(lzc_exc.SnapshotMismatch):
lzc.lzc_send(snap1, snap2, fd)
lzc.lzc_snapshot([snap1])
lzc.lzc_snapshot([snap2])
- with tempfile.TemporaryFile(suffix='.ztream') as output:
+ with tempfile.TemporaryFile(suffix='.zstream') as output:
fd = output.fileno()
with self.assertRaises(lzc_exc.SnapshotMismatch):
lzc.lzc_send(snap1, snap2, fd)
lzc.lzc_snapshot([snap1])
lzc.lzc_snapshot([snap2])
- with tempfile.TemporaryFile(suffix='.ztream') as output:
+ with tempfile.TemporaryFile(suffix='.zstream') as output:
fd = output.fileno()
with self.assertRaises(lzc_exc.PoolsDiffer):
lzc.lzc_send(snap1, snap2, fd)
lzc.lzc_snapshot([snap1])
- with tempfile.TemporaryFile(suffix='.ztream') as output:
+ with tempfile.TemporaryFile(suffix='.zstream') as output:
fd = output.fileno()
with self.assertRaises(lzc_exc.SnapshotNotFound) as ctx:
lzc.lzc_send(snap1, snap2, fd)
lzc.lzc_snapshot([snap1])
- with tempfile.TemporaryFile(suffix='.ztream') as output:
+ with tempfile.TemporaryFile(suffix='.zstream') as output:
fd = output.fileno()
with self.assertRaises(lzc_exc.NameInvalid) as ctx:
lzc.lzc_send(snap2, snap1, fd)
lzc.lzc_snapshot([snap])
- with tempfile.TemporaryFile(suffix='.ztream') as output:
+ with tempfile.TemporaryFile(suffix='.zstream') as output:
fd = output.fileno()
lzc.lzc_send(fs, snap, fd)
lzc.lzc_send(fs, None, fd)
lzc.lzc_snapshot([snap])
- with tempfile.TemporaryFile(suffix='.ztream') as output:
+ with tempfile.TemporaryFile(suffix='.zstream') as output:
fd = output.fileno()
with self.assertRaises(lzc_exc.NameInvalid):
lzc.lzc_send(snap, fs, fd)
lzc.lzc_bookmark({bmark: snap2})
lzc.lzc_destroy_snaps([snap2], defer=False)
- with tempfile.TemporaryFile(suffix='.ztream') as output:
+ with tempfile.TemporaryFile(suffix='.zstream') as output:
fd = output.fileno()
with self.assertRaises(lzc_exc.NameInvalid):
lzc.lzc_send(bmark, snap1, fd)
lzc.lzc_bookmark({bmark: snap1})
lzc.lzc_destroy_snaps([snap1], defer=False)
- with tempfile.TemporaryFile(suffix='.ztream') as output:
+ with tempfile.TemporaryFile(suffix='.zstream') as output:
fd = output.fileno()
lzc.lzc_send(snap2, bmark, fd)
lzc.lzc_snapshot([snap])
with tempfile.NamedTemporaryFile(
- suffix='.ztream', delete=False) as output:
+ suffix='.zstream', delete=False) as output:
# tempfile always opens a temporary file in read-write mode
# regardless of the specified mode, so we have to open it again.
os.chmod(output.name, stat.S_IRUSR)
with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")) as name:
lzc.lzc_snapshot([src])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(dst, stream.fileno())
with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")) as name:
lzc.lzc_snapshot([src2])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src1, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(dst1, stream.fileno())
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src2, src1, stream.fileno())
stream.seek(0)
lzc.lzc_receive(dst2, stream.fileno())
clone_dst = ZFSTest.pool.makeName(b"fs1/fs/recv-clone@snap")
lzc.lzc_snapshot([orig_src])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(orig_src, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(orig_dst, stream.fileno())
lzc.lzc_clone(clone, orig_src)
lzc.lzc_snapshot([clone_snap])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(clone_snap, orig_src, stream.fileno())
stream.seek(0)
lzc.lzc_receive(clone_dst, stream.fileno(), origin=orig_dst)
with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")):
lzc.lzc_snapshot([src])
lzc.lzc_create(dstfs)
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src, None, stream.fileno())
stream.seek(0)
with self.assertRaises((
lzc.lzc_snapshot([src])
lzc.lzc_create(dstfs)
with temp_file_in_fs(dstfs):
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src, None, stream.fileno())
stream.seek(0)
with self.assertRaises((
lzc.lzc_snapshot([src])
lzc.lzc_create(dstfs)
lzc.lzc_snapshot([dstfs + b"@snap1"])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src, None, stream.fileno())
stream.seek(0)
with self.assertRaises((
lzc.lzc_snapshot([src])
lzc.lzc_create(dstfs)
lzc.lzc_snapshot([dst])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src, None, stream.fileno())
stream.seek(0)
with self.assertRaises(lzc_exc.DatasetExists):
with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")):
lzc.lzc_snapshot([src])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src, None, stream.fileno())
stream.seek(0)
with self.assertRaises(lzc_exc.DatasetNotFound):
clone_dst = ZFSTest.pool.makeName(b"fs1/fs/recv-clone-2@snap")
lzc.lzc_snapshot([orig_src])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(orig_src, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(orig_dst, stream.fileno())
lzc.lzc_clone(clone, orig_src)
lzc.lzc_snapshot([clone_snap])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(clone_snap, orig_src, stream.fileno())
stream.seek(0)
with self.assertRaises(lzc_exc.BadStream):
clone_dst = ZFSTest.pool.makeName(b"fs1/fs/recv-clone-3@snap")
lzc.lzc_snapshot([orig_src])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(orig_src, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(orig_dst, stream.fileno())
lzc.lzc_clone(clone, orig_src)
lzc.lzc_snapshot([clone_snap])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(clone_snap, orig_src, stream.fileno())
stream.seek(0)
with self.assertRaises(lzc_exc.NameInvalid):
wrong_origin = ZFSTest.pool.makeName(b"fs1/fs@snap")
lzc.lzc_snapshot([orig_src])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(orig_src, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(orig_dst, stream.fileno())
lzc.lzc_clone(clone, orig_src)
lzc.lzc_snapshot([clone_snap])
lzc.lzc_snapshot([wrong_origin])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(clone_snap, orig_src, stream.fileno())
stream.seek(0)
with self.assertRaises(lzc_exc.StreamMismatch):
wrong_origin = ZFSTest.pool.makeName(b"fs1/fs@snap")
lzc.lzc_snapshot([orig_src])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(orig_src, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(orig_dst, stream.fileno())
lzc.lzc_clone(clone, orig_src)
lzc.lzc_snapshot([clone_snap])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(clone_snap, orig_src, stream.fileno())
stream.seek(0)
with self.assertRaises(lzc_exc.DatasetNotFound):
with temp_file_in_fs(dstfs):
pass # enough to taint the fs
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(dst, stream.fileno(), force=True)
lzc.lzc_create(dstfs)
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src, None, stream.fileno())
stream.seek(0)
with zfs_mount(dstfs) as mntdir:
pass # enough to taint the fs
lzc.lzc_snapshot([dstfs + b"@snap1"])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(dst, stream.fileno(), force=True)
pass # enough to taint the fs
lzc.lzc_snapshot([dst])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src, None, stream.fileno())
stream.seek(0)
with self.assertRaises(lzc_exc.DatasetExists):
with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")):
lzc.lzc_snapshot([src])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src, None, stream.fileno())
stream.seek(0)
with self.assertRaises(lzc_exc.DatasetNotFound):
with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")) as name:
lzc.lzc_snapshot([src])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src, None, stream.fileno())
stream.seek(0)
filecmp.cmp(
os.path.join(mnt1, name), os.path.join(mnt2, name), False))
+ def test_recv_fs_below_zvol(self):
+ send = ZFSTest.pool.makeName(b"fs1@snap")
+ zvol = ZFSTest.pool.makeName(b"fs1/zvol")
+ dest = zvol + b"/fs@snap"
+ props = {b"volsize": 1024 * 1024}
+
+ lzc.lzc_snapshot([send])
+ lzc.lzc_create(zvol, ds_type='zvol', props=props)
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
+ lzc.lzc_send(send, None, stream.fileno())
+ stream.seek(0)
+ with self.assertRaises(lzc_exc.WrongParent):
+ lzc.lzc_receive(dest, stream.fileno())
+
+ def test_recv_zvol_over_fs_with_children(self):
+ parent = ZFSTest.pool.makeName(b"fs1")
+ child = parent + b"subfs"
+ zvol = ZFSTest.pool.makeName(b"fs1/zvol")
+ send = zvol + b"@snap"
+ props = {b"volsize": 1024 * 1024}
+
+ lzc.lzc_create(child)
+ lzc.lzc_create(zvol, ds_type='zvol', props=props)
+ lzc.lzc_snapshot([send])
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
+ lzc.lzc_send(send, None, stream.fileno())
+ stream.seek(0)
+ with self.assertRaises(lzc_exc.WrongParent):
+ lzc.lzc_receive(parent + b"@snap", stream.fileno(), force=True)
+
+ def test_recv_zvol_overwrite_rootds(self):
+ zvol = ZFSTest.pool.makeName(b"fs1/zvol")
+ snap = zvol + b"@snap"
+ rootds = ZFSTest.pool.getRoot().getName()
+ props = {b"volsize": 1024 * 1024}
+
+ lzc.lzc_create(zvol, ds_type='zvol', props=props)
+ lzc.lzc_snapshot([snap])
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
+ lzc.lzc_send(snap, None, stream.fileno())
+ stream.seek(0)
+ with self.assertRaises(lzc_exc.WrongParent):
+ lzc.lzc_receive(rootds + b"@snap", stream.fileno(), force=True)
+
def test_send_full_across_clone_branch_point(self):
origfs = ZFSTest.pool.makeName(b"fs2")
(_, (_, tosnap, _)) = make_snapshots(clonefs, None, b"snap", None)
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(tosnap, None, stream.fileno())
def test_send_incr_across_clone_branch_point(self):
(_, (_, tosnap, _)) = make_snapshots(clonefs, None, b"snap", None)
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(tosnap, fromsnap, stream.fileno())
def test_send_resume_token_full(self):
f.flush()
lzc.lzc_snapshot([src])
- with tempfile.NamedTemporaryFile(suffix='.ztream') as stream:
+ with tempfile.NamedTemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(src, None, stream.fileno())
stream.seek(0)
stream.truncate(1024 * 3)
resume_values = packed_nvlist_out(payload, packed_size)
resumeobj = resume_values.get(b'object')
resumeoff = resume_values.get(b'offset')
- with tempfile.NamedTemporaryFile(suffix='.ztream') as rstream:
+ with tempfile.NamedTemporaryFile(suffix='.zstream') as rstream:
lzc.lzc_send_resume(
src, None, rstream.fileno(), None, resumeobj, resumeoff)
rstream.seek(0)
dst2 = dstfs.getSnap()
lzc.lzc_snapshot([snap1])
- with tempfile.NamedTemporaryFile(suffix='.ztream') as stream:
+ with tempfile.NamedTemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(snap1, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(dst1, stream.fileno())
f.flush()
lzc.lzc_snapshot([snap2])
- with tempfile.NamedTemporaryFile(suffix='.ztream') as stream:
+ with tempfile.NamedTemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(snap2, snap1, stream.fileno())
stream.seek(0)
stream.truncate(1024 * 3)
resume_values = packed_nvlist_out(payload, packed_size)
resumeobj = resume_values.get(b'object')
resumeoff = resume_values.get(b'offset')
- with tempfile.NamedTemporaryFile(suffix='.ztream') as rstream:
+ with tempfile.NamedTemporaryFile(suffix='.zstream') as rstream:
lzc.lzc_send_resume(
snap2, snap1, rstream.fileno(), None, resumeobj, resumeoff)
rstream.seek(0)
recvfs = ZFSTest.pool.makeName(b"fs1/recv-clone-30")
recvsnap = recvfs + b"@snap"
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(tosnap, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(recvsnap, stream.fileno())
tosnap = ZFSTest.pool.makeName(b"recv@snap1")
lzc.lzc_snapshot([fromsnap])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(fromsnap, None, stream.fileno())
stream.seek(0)
(header, c_header) = lzc.receive_header(stream.fileno())
tosnap = ZFSTest.pool.makeName(b"recv@snap1")
lzc.lzc_snapshot([fromsnap])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(fromsnap, None, stream.fileno())
size = os.fstat(stream.fileno()).st_size
stream.seek(0)
}
lzc.lzc_snapshot([fromsnap])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(fromsnap, None, stream.fileno())
stream.seek(0)
(header, c_header) = lzc.receive_header(stream.fileno())
}
lzc.lzc_snapshot([fromsnap])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(fromsnap, None, stream.fileno())
stream.seek(0)
(header, c_header) = lzc.receive_header(stream.fileno())
}
lzc.lzc_snapshot([fromsnap])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(fromsnap, None, stream.fileno())
stream.seek(0)
(header, c_header) = lzc.receive_header(stream.fileno())
}
lzc.lzc_snapshot([fromsnap])
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(fromsnap, None, stream.fileno())
stream.seek(0)
(header, c_header) = lzc.receive_header(stream.fileno())
recvfs = ZFSTest.pool.makeName(b"fs1/recv-clone-32")
recvsnap1 = recvfs + b"@snap1"
recvsnap2 = recvfs + b"@snap2"
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(fromsnap, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(recvsnap1, stream.fileno())
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(tosnap, fromsnap, stream.fileno())
stream.seek(0)
with self.assertRaises(lzc_exc.BadStream):
recvfs = ZFSTest.pool.makeName(b"fs1/recv-clone-31")
recvsnap1 = recvfs + b"@snap1"
recvsnap2 = recvfs + b"@snap2"
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(fromsnap, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(recvsnap1, stream.fileno())
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(tosnap, fromsnap, stream.fileno())
stream.seek(0)
with self.assertRaises(lzc_exc.BadStream):
recvsnap1 = recvfs1 + b"@snap"
recvfs2 = ZFSTest.pool.makeName(b"fs1/recv-clone-33_2")
recvsnap2 = recvfs2 + b"@snap"
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(fromsnap, None, stream.fileno())
stream.seek(0)
lzc.lzc_receive(recvsnap1, stream.fileno())
- with tempfile.TemporaryFile(suffix='.ztream') as stream:
+ with tempfile.TemporaryFile(suffix='.zstream') as stream:
lzc.lzc_send(tosnap, fromsnap, stream.fileno())
stream.seek(0)
lzc.lzc_receive(recvsnap2, stream.fileno(), origin=recvsnap1)
with self.assertRaises(lzc_exc.FilesystemNotFound):
lzc.lzc_rename(src, tgt)
+ @needs_support(lzc.lzc_rename)
+ def test_rename_parent_is_zvol(self):
+ src = ZFSTest.pool.makeName(b"source")
+ zvol = ZFSTest.pool.makeName(b"parent")
+ tgt = zvol + b"/target"
+ props = {b"volsize": 1024 * 1024}
+
+ lzc.lzc_create(src)
+ lzc.lzc_create(zvol, ds_type='zvol', props=props)
+ with self.assertRaises(lzc_exc.WrongParent):
+ lzc.lzc_rename(src, tgt)
+
@needs_support(lzc.lzc_destroy)
def test_destroy(self):
fs = ZFSTest.pool.makeName(b"test-fs")