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 WeinholdDefragmentJob::DefragmentJob(PartitionReference* partition) 1525ab0d1aSIngo Weinhold : DiskDeviceJob(partition) 1625ab0d1aSIngo Weinhold { 1725ab0d1aSIngo Weinhold } 1825ab0d1aSIngo Weinhold 1925ab0d1aSIngo Weinhold 2025ab0d1aSIngo Weinhold // destructor ~DefragmentJob()2125ab0d1aSIngo WeinholdDefragmentJob::~DefragmentJob() 2225ab0d1aSIngo Weinhold { 2325ab0d1aSIngo Weinhold } 2425ab0d1aSIngo Weinhold 2525ab0d1aSIngo Weinhold 2625ab0d1aSIngo Weinhold // Do 2725ab0d1aSIngo Weinhold status_t Do()2825ab0d1aSIngo WeinholdDefragmentJob::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