... | ... |
@@ -175,6 +175,11 @@ const ( |
175 | 175 |
DeviceSetGeometry |
176 | 176 |
) |
177 | 177 |
|
178 |
+const ( |
|
179 |
+ AddNodeOnResume AddNodeType = iota |
|
180 |
+ AddNodeOnCreate |
|
181 |
+) |
|
182 |
+ |
|
178 | 183 |
var ( |
179 | 184 |
ErrTaskRun = errors.New("dm_task_run failed") |
180 | 185 |
ErrTaskSetName = errors.New("dm_task_set_name failed") |
... | ... |
@@ -209,6 +214,7 @@ type ( |
209 | 209 |
TargetCount int32 |
210 | 210 |
} |
211 | 211 |
TaskType int |
212 |
+ AddNodeType int |
|
212 | 213 |
) |
213 | 214 |
|
214 | 215 |
func (t *Task) destroy() { |
... | ... |
@@ -274,6 +280,13 @@ func (t *Task) SetCookie(cookie *uint32, flags uint16) error { |
274 | 274 |
return nil |
275 | 275 |
} |
276 | 276 |
|
277 |
+func (t *Task) SetAddNode(add_node AddNodeType) error { |
|
278 |
+ if res := C.dm_task_set_add_node(t.unmanaged, C.dm_add_node_t (add_node)); res != 1 { |
|
279 |
+ return ErrTaskSetAddNode |
|
280 |
+ } |
|
281 |
+ return nil |
|
282 |
+} |
|
283 |
+ |
|
277 | 284 |
func (t *Task) SetRo() error { |
278 | 285 |
if res := C.dm_task_set_ro(t.unmanaged); res != 1 { |
279 | 286 |
return ErrTaskSetRO |
... | ... |
@@ -614,6 +627,9 @@ func activateDevice(poolName string, name string, deviceId int, size uint64) err |
614 | 614 |
if err := task.AddTarget(0, size/512, "thin", params); err != nil { |
615 | 615 |
return fmt.Errorf("Can't add target") |
616 | 616 |
} |
617 |
+ if err := task.SetAddNode(AddNodeOnCreate); err != nil { |
|
618 |
+ return fmt.Errorf("Can't add node") |
|
619 |
+ } |
|
617 | 620 |
|
618 | 621 |
var cookie uint32 = 0 |
619 | 622 |
if err := task.SetCookie(&cookie, 0); err != nil { |