<div dir="ltr"><div>Hello!</div><div><br></div>But shrink without additional checks may be very bad idea.<div>"zfs set volsize=SIZE "  not check used size (on zol now) and it can kill VM filesystem.</div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-12-14 20:15 GMT+03:00 Sergei A Mamonov <span dir="ltr"><<a href="mailto:mrqwer88@gmail.com" target="_blank">mrqwer88@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Add virStorageBackendZFSResizeVol method for storage_backend_zfs.c<br>
<br>
---<br>
 src/storage/storage_backend_<wbr>zfs.c | 28 ++++++++++++++++++++++++++++<br>
 1 file changed, 28 insertions(+)<br>
<br>
diff --git a/src/storage/storage_backend_<wbr>zfs.c b/src/storage/storage_backend_<wbr>zfs.c<br>
index 3a43be4..8e57d72 100644<br>
--- a/src/storage/storage_backend_<wbr>zfs.c<br>
+++ b/src/storage/storage_backend_<wbr>zfs.c<br>
@@ -454,6 +454,33 @@ virStorageBackendZFSDeletePool<wbr>(virConnectPtr conn ATTRIBUTE_UNUSED,<br>
     return ret;<br>
 }<br>
<br>
+static int<br>
+<wbr>virStorageBackendZFSResizeVol(<wbr>virConnectPtr conn ATTRIBUTE_UNUSED,<br>
+                              virStoragePoolObjPtr pool,<br>
+                              virStorageVolDefPtr vol,<br>
+                              unsigned long long capacity,<br>
+                              unsigned int flags)<br>
+{<br>
+    int ret = -1;<br>
+    virCommandPtr resize_cmd = NULL;<br>
+<br>
+    virCheckFlags(VIR_STORAGE_VOL_<wbr>RESIZE_SHRINK, -1);<br>
+<br>
+    resize_cmd = virCommandNewArgList(ZFS, "set", NULL);<br>
+<br>
+    virCommandAddArgFormat(resize_<wbr>cmd, "volsize=%llu", capacity);<br>
+    virCommandAddArgFormat(resize_<wbr>cmd, "%s/%s",<br>
+                           pool->def-><a href="http://source.name" rel="noreferrer" target="_blank">source.name</a>, vol->name);<br>
+<br>
+    if (virCommandRun(resize_cmd, NULL) < 0)<br>
+        goto cleanup;<br>
+<br>
+    ret = 0;<br>
+ cleanup:<br>
+    virCommandFree(resize_cmd);<br>
+    return ret;<br>
+}<br>
+<br>
 virStorageBackend virStorageBackendZFS = {<br>
     .type = VIR_STORAGE_POOL_ZFS,<br>
<br>
@@ -465,4 +492,5 @@ virStorageBackend virStorageBackendZFS = {<br>
     .deletePool = virStorageBackendZFSDeletePool<wbr>,<br>
     .uploadVol = virStorageBackendVolUploadLoca<wbr>l,<br>
     .downloadVol = virStorageBackendVolDownloadLo<wbr>cal,<br>
+    .resizeVol = virStorageBackendZFSResizeVol,<br>
 };<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.8.3.1<br>
<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><span style="font-size:12.8px">Best Regards,</span><br></div><div>Sergey Mamonov</div></div></div></div></div>
</div>