-
-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy path0001-conf-add-script-attribute-to-disk-specification.patch
87 lines (78 loc) · 3.05 KB
/
0001-conf-add-script-attribute-to-disk-specification.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
From 3afc6d4ba5838cf6cd2a31032442491401989094 Mon Sep 17 00:00:00 2001
From: Marek Marczykowski <[email protected]>
Date: Fri, 5 Apr 2013 01:37:29 +0200
Subject: [PATCH] conf: add 'script' attribute to disk specification
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Script to be called to prepare custom device for domain. Done with Xen
in mind, it maps to libxl_device_disk.script.
XML configuration would be:
<disk type='block' device='disk'>
<source dev='/dev/mapper/custom-device'/>
<script path='/script/to/setup/custom-device'/>
<target dev='xvdc'/>
</disk>
Signed-off-by: Marek Marczykowski-Górecki <[email protected]>
---
src/conf/domain_conf.c | 3 +++
src/conf/domain_conf.h | 1 +
src/conf/schemas/domaincommon.rng | 8 ++++++++
3 files changed, 12 insertions(+)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index cb1154b23f..bcc5e17204 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -2392,6 +2392,7 @@ virDomainDiskDefFree(virDomainDiskDef *def)
g_free(def->domain_name);
g_free(def->blkdeviotune.group_name);
g_free(def->virtio);
+ g_free(def->script);
virDomainDeviceInfoClear(&def->info);
virObjectUnref(def->privateData);
g_slist_free_full(def->iothreads, (GDestroyNotify) virDomainDiskIothreadDefFree);
@@ -8194,6 +8195,7 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt,
return NULL;
def->domain_name = virXPathString("string(./backenddomain/@name)", ctxt);
+ def->script = virXPathString("string(./script/@path)", ctxt);
def->serial = virXPathString("string(./serial)", ctxt);
def->wwn = virXPathString("string(./wwn)", ctxt);
def->vendor = virXPathString("string(./vendor)", ctxt);
@@ -23016,6 +23018,7 @@ virDomainDiskDefFormat(virBuffer *buf,
return -1;
virBufferEscapeString(&childBuf, "<backenddomain name='%s'/>\n", def->domain_name);
+ virBufferEscapeString(&childBuf, "<script path='%s'/>\n", def->script);
virDomainDiskGeometryDefFormat(&childBuf, def);
virDomainDiskBlockIoDefFormat(&childBuf, def);
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 2818a9f1f5..8f1245f202 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -580,6 +580,7 @@ struct _virDomainDiskDef {
unsigned int queue_size;
virDomainDiskModel model;
virDomainVirtioOptions *virtio;
+ char *script;
bool diskElementAuth;
bool diskElementEnc;
diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng
index 844a931deb..faaf69bdee 100644
--- a/src/conf/schemas/domaincommon.rng
+++ b/src/conf/schemas/domaincommon.rng
@@ -1601,6 +1601,14 @@
<empty/>
</element>
</optional>
+ <optional>
+ <element name="script">
+ <attribute name="path">
+ <ref name="filePath"/>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
<optional>
<element name="readonly">
<empty/>
--
2.45.2