From 0b7b76cc4569653372bd552863dcf548fe90563a Mon Sep 17 00:00:00 2001
From: Maxim Nestratov <mnestratov@parallels.com>
Date: Thu, 4 Jun 2015 00:10:00 +0300
Subject: [PATCH] parallels: process '/' mount point correctly for containers

Since we are going to add block devices as root disks we have
to specify root mount point for boot block devices. But we
shouldn't do this if a filesystem disk with such
target mount point already exists.

Signed-off-by: Maxim Nestratov <mnestratov@parallels.com>
---
 src/parallels/parallels_sdk.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/parallels/parallels_sdk.c b/src/parallels/parallels_sdk.c
index 7fcbd11b6b..1bc9c8bd18 100644
--- a/src/parallels/parallels_sdk.c
+++ b/src/parallels/parallels_sdk.c
@@ -3080,6 +3080,13 @@ static int prlsdkAddDisk(PRL_HANDLE sdkdom,
 
         if (prlsdkAddDeviceToBootList(sdkdom, devIndex, devType, 0) < 0)
             goto cleanup;
+
+        /* If we add physical device as a boot disk to container
+         * we have to specify mount point for it */
+        if (isCt) {
+            pret = PrlVmDevHd_SetMountPoint(sdkdisk, "/");
+            prlsdkCheckRetGoto(pret, cleanup);
+        }
     }
 
     return 0;
@@ -3314,6 +3321,13 @@ prlsdkDoApplyConfig(virConnectPtr conn,
             goto error;
     }
 
+    for (i = 0; i < def->nfss; i++) {
+        if (STREQ(def->fss[i]->dst, "/"))
+            needBoot = false;
+        if (prlsdkAddFS(sdkdom, def->fss[i]) < 0)
+            goto error;
+    }
+
     for (i = 0; i < def->ndisks; i++) {
         bool bootDisk = false;
 
@@ -3327,11 +3341,6 @@ prlsdkDoApplyConfig(virConnectPtr conn,
             goto error;
     }
 
-    for (i = 0; i < def->nfss; i++) {
-        if (prlsdkAddFS(sdkdom, def->fss[i]) < 0)
-            goto error;
-    }
-
     return 0;
 
  error: