1/* 2 * Copyright 2007, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 6#include "UninitializeJob.h" 7 8#include <syscalls.h> 9 10#include "PartitionReference.h" 11 12 13// constructor 14UninitializeJob::UninitializeJob(PartitionReference* partition, 15 PartitionReference* parent) 16 : DiskDeviceJob(parent, partition) 17{ 18} 19 20 21// destructor 22UninitializeJob::~UninitializeJob() 23{ 24} 25 26 27// Do 28status_t 29UninitializeJob::Do() 30{ 31 bool haveParent = fPartition != NULL; 32 int32 changeCounter = fChild->ChangeCounter(); 33 int32 parentChangeCounter = haveParent ? fPartition->ChangeCounter() : 0; 34 partition_id parentID = haveParent ? fPartition->PartitionID() : -1; 35 36 status_t error = _kern_uninitialize_partition(fChild->PartitionID(), 37 &changeCounter, parentID, &parentChangeCounter); 38 39 if (error != B_OK) 40 return error; 41 42 fChild->SetChangeCounter(changeCounter); 43 if (haveParent) 44 fPartition->SetChangeCounter(parentChangeCounter); 45 46 return B_OK; 47} 48 49