[libvirt] [PATCH][RFC] helper of copy-storage-* features

li guang lig.fnst at cn.fujitsu.com
Thu Oct 18 05:47:48 UTC 2012


在 2012-10-17三的 21:50 -0500,Doug Goldstein写道:
> On Sun, Oct 14, 2012 at 9:48 PM, liguang <lig.fnst at cn.fujitsu.com> wrote:
> > help to create disk images copy-storage-* required,
> > try to do non-shared migration without bothering to
> > create disk images at target by hand.
> >
> > consider this situation:
> > 1. non-shared migration
> >    virsh migrate --copy-storage-all ...
> > 2. migration fails
> > 3. create disk images required
> >    qemu-img create ...
> > 4  migration run smoothly
> > so, try do remove step 2, 3, 4
> >
> > +char *virDirOfFile(const char *file)
> > +{
> > +    char *p, *tmp;
> > +
> > +    if (file == NULL)
> > +        return NULL;
> > +    if ((tmp = strdup(file)) == NULL)
> > +        return NULL;
> > +    if ((p = strrchr(file, '/')) == NULL)
> > +        return getcwd(tmp, strlen(file));
> > +    if (strlen(p) == 0)
> > +        return NULL;
> > +    tmp[strlen(file) - strlen(p)] = '\0';
> > +
> > +    return tmp;
> > +}
> 
> Eric probably knows better than I do but it seems like we can probably
> pull in dirname() from gnulib for this rather than implementing our
> own version.
> 

maybe, but dirname has its own known issues(e.g. for old version glibc,
dirname will "generate a segfault if given a NULL argument"), so I
try to choose a loosely implementation.
but, if libvirt cares nothing about these tiny issues, I'd like
to choose dirname.

> > diff --git a/src/util/util.h b/src/util/util.h
> > index 4316ab1..255b7b2 100644
> > --- a/src/util/util.h
> > +++ b/src/util/util.h
> > @@ -114,6 +114,7 @@ enum {
> >  };
> >  int virDirCreate(const char *path, mode_t mode, uid_t uid, gid_t gid,
> >                   unsigned int flags) ATTRIBUTE_RETURN_CHECK;
> > +char *virDirOfFile(const char *file) ATTRIBUTE_RETURN_CHECK;
> >  int virFileMakePath(const char *path) ATTRIBUTE_RETURN_CHECK;
> >  int virFileMakePathWithMode(const char *path,
> >                              mode_t mode) ATTRIBUTE_RETURN_CHECK;
> > --
> > 1.7.2.5
> >
> > --
> > libvir-list mailing list
> > libvir-list at redhat.com
> > https://www.redhat.com/mailman/listinfo/libvir-list
> 
> 
> 

-- 
liguang    lig.fnst at cn.fujitsu.com
FNST linux kernel team





More information about the libvir-list mailing list