xref: /haiku/src/kits/storage/disk_device/jobs/InitializeJob.cpp (revision 2b76973fa2401f7a5edf68e6470f3d3210cbcff3)
1 /*
2  * Copyright 2007, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Distributed under the terms of the MIT License.
4  */
5 
6 
7 #include "InitializeJob.h"
8 
9 #include <syscalls.h>
10 
11 #include "DiskDeviceUtils.h"
12 #include "PartitionReference.h"
13 
14 
15 // constructor
16 InitializeJob::InitializeJob(PartitionReference* partition)
17 	:
18 	DiskDeviceJob(partition),
19 	fDiskSystem(NULL),
20 	fName(NULL),
21 	fParameters(NULL)
22 {
23 }
24 
25 
26 // destructor
27 InitializeJob::~InitializeJob()
28 {
29 	free(fDiskSystem);
30 	free(fName);
31 	free(fParameters);
32 }
33 
34 
35 // Init
36 status_t
37 InitializeJob::Init(const char* diskSystem, const char* name,
38 	const char* parameters)
39 {
40 	SET_STRING_RETURN_ON_ERROR(fDiskSystem, diskSystem);
41 	SET_STRING_RETURN_ON_ERROR(fName, name);
42 	SET_STRING_RETURN_ON_ERROR(fParameters, parameters);
43 
44 	return B_OK;
45 }
46 
47 
48 // Do
49 status_t
50 InitializeJob::Do()
51 {
52 	int32 changeCounter = fPartition->ChangeCounter();
53 
54 	status_t error = _kern_initialize_partition(fPartition->PartitionID(),
55 		&changeCounter, fDiskSystem, fName, fParameters);
56 	if (error != B_OK)
57 		return error;
58 
59 	fPartition->SetChangeCounter(changeCounter);
60 
61 	return B_OK;
62 }
63 
64