Re: [PATCH] virsh: A bit smarter attach-disk

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 03/15/2012 05:12 PM, Michal Privoznik wrote:
On 15.03.2012 10:13, Osier Yang wrote:
Detects the file type of source path if no "--sourcetype" and
"driver" is specified, instead of always set the disk type as
"block".

And previous "virCommandOptString" ensures "source" is not NULL,
remove the conditional checking.
---
  tools/virsh.c |   14 +++++++++-----
  1 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/tools/virsh.c b/tools/virsh.c
index d45a4c9..3b845ac 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -14428,6 +14428,7 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
      const char *stype = NULL;
      virBuffer buf = VIR_BUFFER_INITIALIZER;
      char *xml;
+    struct stat st;

      if (!vshConnectionUsability(ctl, ctl->conn))
          goto cleanup;
@@ -14458,8 +14459,12 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
      }

      if (!stype) {
-        if (driver&&  (STREQ(driver, "file") || STREQ(driver, "tap")))
+        if (driver&&  (STREQ(driver, "file") || STREQ(driver, "tap"))) {
              isFile = true;
+        } else {
+            if (!stat(source,&st))
+                isFile = S_ISREG(st.st_mode) ? true : false;

I think S_ISREG() would be sufficient here. But that's just cosmetic.

+        }
      } else if (STREQ(stype, "file")) {
          isFile = true;
      } else if (STRNEQ(stype, "block")) {
@@ -14497,10 +14502,9 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
      if (driver || subdriver || cache)
          virBufferAddLit(&buf, "/>\n");

-    if (source)
-        virBufferAsprintf(&buf, "<source %s='%s'/>\n",
-                          (isFile) ? "file" : "dev",
-                          source);
+    virBufferAsprintf(&buf, "<source %s='%s'/>\n",
+                      (isFile) ? "file" : "dev",
+                      source);
      virBufferAsprintf(&buf, "<target dev='%s'/>\n", target);
      if (mode)
          virBufferAsprintf(&buf, "<%s/>\n", mode);

However this looks bad. As written in commend just below
virCommandOptString(, source):

     /* Allow empty string as a placeholder that implies no source, for
      * use in adding a cdrom drive with no disk.  */
     if (!*source)
         source = NULL;

Oh, yes, I didn't notice the comments.

Osier

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]