xref: /haiku/src/kits/storage/disk_device/jobs/DeleteChildJob.cpp (revision fce4895d1884da5ae6fb299d23c735c598e690b1)
1 /*
2  * Copyright 2007, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Distributed under the terms of the MIT License.
4  */
5 
6 #include "DeleteChildJob.h"
7 
8 #include <syscalls.h>
9 
10 #include "DiskDeviceUtils.h"
11 #include "PartitionReference.h"
12 
13 
14 // constructor
15 DeleteChildJob::DeleteChildJob(PartitionReference* partition,
16 		PartitionReference* child)
17 	: DiskDeviceJob(partition, child)
18 {
19 }
20 
21 
22 // destructor
23 DeleteChildJob::~DeleteChildJob()
24 {
25 }
26 
27 
28 // Do
29 status_t
30 DeleteChildJob::Do()
31 {
32 	int32 changeCounter = fPartition->ChangeCounter();
33 	status_t error = _kern_delete_child_partition(fPartition->PartitionID(),
34 		&changeCounter, fChild->PartitionID(), fChild->ChangeCounter());
35 	if (error != B_OK)
36 		return error;
37 
38 	fPartition->SetChangeCounter(changeCounter);
39 	fChild->SetTo(-1, 0);
40 
41 	return B_OK;
42 }
43 
44