diff --git a/headers/private/kernel/disk_device_manager/ddm_modules.h b/headers/private/kernel/disk_device_manager/ddm_modules.h index 6b84ca3f6b..c9c5ff0db3 100644 --- a/headers/private/kernel/disk_device_manager/ddm_modules.h +++ b/headers/private/kernel/disk_device_manager/ddm_modules.h @@ -100,7 +100,7 @@ typedef struct partition_module_info { status_t (*initialize)(int fd, partition_id partition, const char* name, const char *parameters, off_t partitionSize, disk_job_id job); status_t (*uninitialize)(int fd, partition_id partition, - off_t partitionSize, disk_job_id job); + off_t partitionSize, uint32 blockSize, disk_job_id job); status_t (*create_child)(int fd, partition_id partition, off_t offset, off_t size, const char* type, const char* name, const char* parameters, disk_job_id job, diff --git a/src/add-ons/kernel/partitioning_systems/intel/write_support.cpp b/src/add-ons/kernel/partitioning_systems/intel/write_support.cpp index d369071c7d..a8ed002a83 100644 --- a/src/add-ons/kernel/partitioning_systems/intel/write_support.cpp +++ b/src/add-ons/kernel/partitioning_systems/intel/write_support.cpp @@ -1287,24 +1287,10 @@ pm_initialize(int fd, partition_id partitionID, const char* name, status_t pm_uninitialize(int fd, partition_id partitionID, off_t partitionSize, - disk_job_id job) + uint32 blockSize, disk_job_id job) { - // get partition's block size - size_t blockSize; - { - PartitionReadLocker locker(partitionID); - if (!locker.IsLocked()) - return B_ERROR; - - partition_data* partition = get_partition(partitionID); - if (partition == NULL) - return B_BAD_VALUE; - update_disk_device_job_progress(job, 0.0); - - blockSize = partition->block_size; - if (blockSize == 0) - return B_BAD_VALUE; - } + if (blockSize == 0) + return B_BAD_VALUE; // We overwrite the first block, which contains the partition table. // Allocate a buffer, we can clear and write. diff --git a/src/add-ons/kernel/partitioning_systems/intel/write_support.h b/src/add-ons/kernel/partitioning_systems/intel/write_support.h index 14a5fa8995..5d63ab6344 100644 --- a/src/add-ons/kernel/partitioning_systems/intel/write_support.h +++ b/src/add-ons/kernel/partitioning_systems/intel/write_support.h @@ -49,7 +49,7 @@ status_t pm_set_type(int fd, partition_id partitionID, const char* type, status_t pm_initialize(int fd, partition_id partitionID, const char* name, const char* parameters, off_t partitionSize, disk_job_id job); status_t pm_uninitialize(int fd, partition_id partitionID, - off_t partitionSize, disk_job_id job); + off_t partitionSize, uint32 blockSize, disk_job_id job); status_t pm_create_child(int fd, partition_id partitionID, off_t offset, off_t size, const char* type, const char* name, const char* parameters, disk_job_id job, diff --git a/src/system/kernel/disk_device_manager/KPartitioningSystem.cpp b/src/system/kernel/disk_device_manager/KPartitioningSystem.cpp index db27e6b8c8..790028e05b 100644 --- a/src/system/kernel/disk_device_manager/KPartitioningSystem.cpp +++ b/src/system/kernel/disk_device_manager/KPartitioningSystem.cpp @@ -429,7 +429,8 @@ KPartitioningSystem::Uninitialize(KPartition* partition, disk_job_id job) return result; // let the module do its job - result = fModule->uninitialize(fd, partition->ID(), partition->Size(), job); + result = fModule->uninitialize(fd, partition->ID(), partition->Size(), + partition->BlockSize(), job); // cleanup and return close(fd);