在 2012-10-17三的 21:50 -0500,Doug Goldstein写道: > On Sun, Oct 14, 2012 at 9:48 PM, liguang <lig.fnst@xxxxxxxxxxxxxx> 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@xxxxxxxxxx > > https://www.redhat.com/mailman/listinfo/libvir-list > > > -- liguang lig.fnst@xxxxxxxxxxxxxx FNST linux kernel team -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list