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 "ResizeJob.h"
725ab0d1aSIngo Weinhold
8300868ceSIngo Weinhold #include <syscalls.h>
9300868ceSIngo Weinhold
1025ab0d1aSIngo Weinhold #include "DiskDeviceUtils.h"
1125ab0d1aSIngo Weinhold #include "PartitionReference.h"
1225ab0d1aSIngo Weinhold
1325ab0d1aSIngo Weinhold
1425ab0d1aSIngo Weinhold // constructor
ResizeJob(PartitionReference * partition,PartitionReference * child,off_t size,off_t contentSize)1525ab0d1aSIngo Weinhold ResizeJob::ResizeJob(PartitionReference* partition, PartitionReference* child,
1625ab0d1aSIngo Weinhold off_t size, off_t contentSize)
17*e1b526b9SJonas Sundström :
18*e1b526b9SJonas Sundström DiskDeviceJob(partition, child),
1925ab0d1aSIngo Weinhold fSize(size),
2025ab0d1aSIngo Weinhold fContentSize(contentSize)
2125ab0d1aSIngo Weinhold {
2225ab0d1aSIngo Weinhold }
2325ab0d1aSIngo Weinhold
2425ab0d1aSIngo Weinhold
2525ab0d1aSIngo Weinhold // destructor
~ResizeJob()2625ab0d1aSIngo Weinhold ResizeJob::~ResizeJob()
2725ab0d1aSIngo Weinhold {
2825ab0d1aSIngo Weinhold }
2925ab0d1aSIngo Weinhold
3025ab0d1aSIngo Weinhold
3125ab0d1aSIngo Weinhold // Do
3225ab0d1aSIngo Weinhold status_t
Do()3325ab0d1aSIngo Weinhold ResizeJob::Do()
3425ab0d1aSIngo Weinhold {
35300868ceSIngo Weinhold int32 changeCounter = fPartition->ChangeCounter();
36300868ceSIngo Weinhold int32 childChangeCounter = fChild->ChangeCounter();
37300868ceSIngo Weinhold status_t error = _kern_resize_partition(fPartition->PartitionID(),
38300868ceSIngo Weinhold &changeCounter, fChild->PartitionID(), &childChangeCounter, fSize,
39300868ceSIngo Weinhold fContentSize);
40300868ceSIngo Weinhold if (error != B_OK)
41300868ceSIngo Weinhold return error;
42300868ceSIngo Weinhold
43300868ceSIngo Weinhold fPartition->SetChangeCounter(changeCounter);
44300868ceSIngo Weinhold fChild->SetChangeCounter(childChangeCounter);
45300868ceSIngo Weinhold
46300868ceSIngo Weinhold return B_OK;
4725ab0d1aSIngo Weinhold }
4825ab0d1aSIngo Weinhold
49