xref: /haiku/src/kits/storage/disk_device/jobs/RepairJob.cpp (revision e1b526b95a2dc473c254bc332454c53ca892ac5e)
125ab0d1aSIngo Weinhold /*
225ab0d1aSIngo Weinhold  * Copyright 2007, Ingo Weinhold, ingo_weinhold@gmx.de.
325ab0d1aSIngo Weinhold  * Distributed under the terms of the MIT License.
425ab0d1aSIngo Weinhold  */
525ab0d1aSIngo Weinhold 
625ab0d1aSIngo Weinhold #include "RepairJob.h"
725ab0d1aSIngo Weinhold 
8300868ceSIngo Weinhold #include <syscalls.h>
9300868ceSIngo Weinhold 
1025ab0d1aSIngo Weinhold #include "PartitionReference.h"
1125ab0d1aSIngo Weinhold 
1225ab0d1aSIngo Weinhold 
1325ab0d1aSIngo Weinhold // constructor
RepairJob(PartitionReference * partition,bool checkOnly)1425ab0d1aSIngo Weinhold RepairJob::RepairJob(PartitionReference* partition, bool checkOnly)
15*e1b526b9SJonas Sundström 	:
16*e1b526b9SJonas Sundström 	DiskDeviceJob(partition),
1725ab0d1aSIngo Weinhold 	fCheckOnly(checkOnly)
1825ab0d1aSIngo Weinhold {
1925ab0d1aSIngo Weinhold }
2025ab0d1aSIngo Weinhold 
2125ab0d1aSIngo Weinhold 
2225ab0d1aSIngo Weinhold // destructor
~RepairJob()2325ab0d1aSIngo Weinhold RepairJob::~RepairJob()
2425ab0d1aSIngo Weinhold {
2525ab0d1aSIngo Weinhold }
2625ab0d1aSIngo Weinhold 
2725ab0d1aSIngo Weinhold 
2825ab0d1aSIngo Weinhold // Do
2925ab0d1aSIngo Weinhold status_t
Do()3025ab0d1aSIngo Weinhold RepairJob::Do()
3125ab0d1aSIngo Weinhold {
32300868ceSIngo Weinhold 	int32 changeCounter = fPartition->ChangeCounter();
33300868ceSIngo Weinhold 	status_t error = _kern_repair_partition(fPartition->PartitionID(),
34300868ceSIngo Weinhold 		&changeCounter, fCheckOnly);
35300868ceSIngo Weinhold 	if (error != B_OK)
36300868ceSIngo Weinhold 		return error;
37300868ceSIngo Weinhold 
38300868ceSIngo Weinhold 	fPartition->SetChangeCounter(changeCounter);
39300868ceSIngo Weinhold 
40300868ceSIngo Weinhold 	return B_OK;
4125ab0d1aSIngo Weinhold }
4225ab0d1aSIngo Weinhold 
43