xref: /haiku/src/kits/storage/disk_device/jobs/DefragmentJob.cpp (revision 300868ce276e35845db32cb8344e662de0872af9)
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 "DefragmentJob.h"
725ab0d1aSIngo Weinhold 
8*300868ceSIngo Weinhold #include <syscalls.h>
9*300868ceSIngo Weinhold 
1025ab0d1aSIngo Weinhold #include "PartitionReference.h"
1125ab0d1aSIngo Weinhold 
1225ab0d1aSIngo Weinhold 
1325ab0d1aSIngo Weinhold // constructor
DefragmentJob(PartitionReference * partition)1425ab0d1aSIngo Weinhold DefragmentJob::DefragmentJob(PartitionReference* partition)
1525ab0d1aSIngo Weinhold 	: DiskDeviceJob(partition)
1625ab0d1aSIngo Weinhold {
1725ab0d1aSIngo Weinhold }
1825ab0d1aSIngo Weinhold 
1925ab0d1aSIngo Weinhold 
2025ab0d1aSIngo Weinhold // destructor
~DefragmentJob()2125ab0d1aSIngo Weinhold DefragmentJob::~DefragmentJob()
2225ab0d1aSIngo Weinhold {
2325ab0d1aSIngo Weinhold }
2425ab0d1aSIngo Weinhold 
2525ab0d1aSIngo Weinhold 
2625ab0d1aSIngo Weinhold // Do
2725ab0d1aSIngo Weinhold status_t
Do()2825ab0d1aSIngo Weinhold DefragmentJob::Do()
2925ab0d1aSIngo Weinhold {
30*300868ceSIngo Weinhold 	int32 changeCounter = fPartition->ChangeCounter();
31*300868ceSIngo Weinhold 	status_t error = _kern_defragment_partition(fPartition->PartitionID(),
32*300868ceSIngo Weinhold 		&changeCounter);
33*300868ceSIngo Weinhold 	if (error != B_OK)
34*300868ceSIngo Weinhold 		return error;
35*300868ceSIngo Weinhold 
36*300868ceSIngo Weinhold 	fPartition->SetChangeCounter(changeCounter);
37*300868ceSIngo Weinhold 
38*300868ceSIngo Weinhold 	return B_OK;
3925ab0d1aSIngo Weinhold }
4025ab0d1aSIngo Weinhold 
41