@@ -124,8 +124,39 @@ stop(int argc, char *argv[1])
static int
done(int argc, char *argv[1])
{
- struct volume *v = volume_find("rootfs_data");
+ struct volume *v = NULL;
+ FILE *fp;
+ char buffer[100] = {0};
+ /*
+ * First check if there is an overlay device hint in cmdline
+ */
+ fp = fopen("/proc/cmdline", "r");
+ while(!feof(fp)) {
+ if(fscanf(fp, "overlay=%s", buffer))
+ break;
+
+ fseek(fp, 1, SEEK_CUR);
+ }
+ fclose(fp);
+ if(buffer[0]) {
+ // strip /dev/ prefix if any
+ int offset = 0;
+ if(strstr(buffer, "/dev/"))
+ offset = 5;
+
+ v = volume_find(buffer + offset);
+ }
+
+ /*
+ * Now look for standard overlay device name
+ */
+ if(!v)
+ v = volume_find("rootfs_data");
+
+ /*
+ * If no overlay device exists, then there is nothing to do here
+ */
if (!v)
return -1;