On 06/19/2014 07:59 AM, Peter Krempa wrote:
The parent directory doesn't necessarily need to be stored after
we
don't mangle the path stored in the image. Remove it and tweak the code
to avoid using it.
---
src/storage/storage_driver.c | 11 ++-----
src/util/virstoragefile.c | 68 ++++++++++++++++++--------------------------
src/util/virstoragefile.h | 3 --
tests/virstoragetest.c | 21 --------------
4 files changed, 30 insertions(+), 73 deletions(-)
@@ -1372,8 +1373,20 @@ virStorageFileChainLookup(virStorageSourcePtr
chain,
break;
if (nameIsFile && (chain->type == VIR_STORAGE_TYPE_FILE ||
chain->type == VIR_STORAGE_TYPE_BLOCK)) {
+ if (prev) {
+ if (!(parentDir = mdir_name(prev->path))) {
+ virReportOOMError();
+ goto error;
+ }
+ } else {
+ if (VIR_STRDUP(parentDir, ".") < 0)
+ goto error;
+ }
+
int result = virFileRelLinkPointsTo(parentDir, name,
chain->path);
Maybe you could make virFileRelLinkPointsTo gracefully handle
parentDir==NULL as meaning to start from the current directory, and then
you wouldn't have to strdup(".") here. But if you do that, make it a
separate patch. I'm fine with this one as-is.
ACK
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org