Folded KPhysicalPartition into KPartition. Removed the notion of shadow
partitions from the disk device manager. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22800 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -7,15 +7,18 @@
|
||||
|
||||
#include <OS.h>
|
||||
|
||||
#include "KPhysicalPartition.h"
|
||||
#include "KPartition.h"
|
||||
#include "RWLocker.h"
|
||||
|
||||
|
||||
namespace BPrivate {
|
||||
namespace DiskDevice {
|
||||
|
||||
|
||||
class UserDataWriter;
|
||||
|
||||
class KDiskDevice : public KPhysicalPartition {
|
||||
|
||||
class KDiskDevice : public KPartition {
|
||||
public:
|
||||
KDiskDevice(partition_id id = -1);
|
||||
virtual ~KDiskDevice();
|
||||
@@ -38,8 +41,6 @@ public:
|
||||
void WriteUnlock();
|
||||
bool IsWriteLocked();
|
||||
|
||||
virtual bool PrepareForRemoval();
|
||||
|
||||
virtual void SetID(partition_id id);
|
||||
|
||||
virtual status_t PublishDevice();
|
||||
@@ -70,14 +71,9 @@ public:
|
||||
disk_device_data *DeviceData();
|
||||
const disk_device_data *DeviceData() const;
|
||||
|
||||
status_t CreateShadowDevice(team_id team);
|
||||
status_t DeleteShadowDevice();
|
||||
void SetShadowOwner(team_id team);
|
||||
team_id ShadowOwner() const;
|
||||
|
||||
virtual void WriteUserData(UserDataWriter &writer,
|
||||
user_partition_data *data);
|
||||
void WriteUserData(UserDataWriter &writer, bool shadow);
|
||||
void WriteUserData(UserDataWriter &writer);
|
||||
|
||||
virtual void Dump(bool deep = true, int32 level = 0);
|
||||
|
||||
@@ -92,9 +88,9 @@ private:
|
||||
RWLocker fLocker;
|
||||
int fFD;
|
||||
status_t fMediaStatus;
|
||||
team_id fShadowOwner;
|
||||
};
|
||||
|
||||
|
||||
} // namespace DiskDevice
|
||||
} // namespace BPrivate
|
||||
|
||||
|
||||
@@ -43,15 +43,15 @@ public:
|
||||
// manager must be locked
|
||||
KDiskDevice *FindDevice(const char *path);
|
||||
KDiskDevice *FindDevice(partition_id id, bool deviceOnly = true);
|
||||
KPartition *FindPartition(const char *path, bool noShadow = false);
|
||||
KPartition *FindPartition(partition_id id, bool noShadow = false);
|
||||
KPartition *FindPartition(const char *path);
|
||||
KPartition *FindPartition(partition_id id);
|
||||
KFileDiskDevice *FindFileDevice(const char *filePath);
|
||||
|
||||
KDiskDevice *RegisterDevice(const char *path);
|
||||
KDiskDevice *RegisterDevice(partition_id id, bool deviceOnly = true);
|
||||
KDiskDevice *RegisterNextDevice(int32 *cookie);
|
||||
KPartition *RegisterPartition(const char *path, bool noShadow = false);
|
||||
KPartition *RegisterPartition(partition_id id, bool noShadow = false);
|
||||
KPartition *RegisterPartition(const char *path);
|
||||
KPartition *RegisterPartition(partition_id id);
|
||||
KFileDiskDevice *RegisterFileDevice(const char *filePath);
|
||||
|
||||
KDiskDevice *ReadLockDevice(partition_id id, bool deviceOnly = true);
|
||||
|
||||
@@ -24,7 +24,6 @@ class KPartitionListener;
|
||||
class KPartitionVisitor;
|
||||
class KPath;
|
||||
class KPhysicalPartition;
|
||||
class KShadowPartition;
|
||||
|
||||
//! \brief Class representing a single partition.
|
||||
class KPartition {
|
||||
@@ -139,7 +138,7 @@ public:
|
||||
|
||||
status_t AddChild(KPartition *partition, int32 index = -1);
|
||||
virtual status_t CreateChild(partition_id id, int32 index,
|
||||
KPartition **child = NULL) = 0;
|
||||
KPartition **child = NULL);
|
||||
bool RemoveChild(int32 index);
|
||||
bool RemoveChild(KPartition *child);
|
||||
bool RemoveAllChildren();
|
||||
@@ -149,14 +148,6 @@ public:
|
||||
|
||||
KPartition *VisitEachDescendant(KPartitionVisitor *visitor);
|
||||
|
||||
// Shadow Partition
|
||||
|
||||
virtual status_t CreateShadowPartition(); // creates a complete tree
|
||||
virtual void UnsetShadowPartition(bool doDelete);
|
||||
virtual KShadowPartition *ShadowPartition() const = 0;
|
||||
virtual bool IsShadowPartition() const = 0;
|
||||
virtual KPhysicalPartition *PhysicalPartition() const = 0;
|
||||
|
||||
// DiskSystem
|
||||
|
||||
void SetDiskSystem(KDiskSystem *diskSystem);
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
/*
|
||||
* Copyright 2003-2007, Haiku, Inc. All Rights Reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Ingo Weinhold <[email protected]>
|
||||
*/
|
||||
#ifndef _K_DISK_DEVICE_PHYSICAL_PARTITION_H
|
||||
#define _K_DISK_DEVICE_PHYSICAL_PARTITION_H
|
||||
|
||||
#include <KPartition.h>
|
||||
|
||||
namespace BPrivate {
|
||||
namespace DiskDevice {
|
||||
|
||||
class KDiskDevice;
|
||||
class KDiskSystem;
|
||||
class KShadowPartition;
|
||||
|
||||
//! \brief Class representing an existing partition.
|
||||
class KPhysicalPartition : public KPartition {
|
||||
public:
|
||||
KPhysicalPartition(partition_id id = -1);
|
||||
virtual ~KPhysicalPartition();
|
||||
|
||||
virtual bool PrepareForRemoval();
|
||||
|
||||
virtual status_t Open(int flags, int *fd);
|
||||
virtual status_t PublishDevice();
|
||||
virtual status_t UnpublishDevice();
|
||||
|
||||
virtual status_t Mount(uint32 mountFlags, const char *parameters);
|
||||
virtual status_t Unmount();
|
||||
|
||||
// Hierarchy
|
||||
|
||||
virtual status_t CreateChild(partition_id id, int32 index,
|
||||
KPartition **child = NULL);
|
||||
|
||||
// Shadow Partition
|
||||
|
||||
virtual status_t CreateShadowPartition(); // creates a complete tree
|
||||
virtual void UnsetShadowPartition(bool doDelete);
|
||||
virtual KShadowPartition *ShadowPartition() const;
|
||||
virtual bool IsShadowPartition() const;
|
||||
virtual KPhysicalPartition *PhysicalPartition() const;
|
||||
|
||||
// DiskSystem
|
||||
|
||||
virtual void Dump(bool deep, int32 level);
|
||||
|
||||
protected:
|
||||
KShadowPartition *fShadowPartition;
|
||||
};
|
||||
|
||||
} // namespace DiskDevice
|
||||
} // namespace BPrivate
|
||||
|
||||
using BPrivate::DiskDevice::KPhysicalPartition;
|
||||
|
||||
#endif // _K_DISK_DEVICE_PHYSICAL_PARTITION_H
|
||||
@@ -1,84 +0,0 @@
|
||||
/*
|
||||
* Copyright 2003-2007, Haiku, Inc. All Rights Reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Ingo Weinhold <[email protected]>
|
||||
*/
|
||||
#ifndef _K_DISK_DEVICE_SHADOW_PARTITION_H
|
||||
#define _K_DISK_DEVICE_SHADOW_PARTITION_H
|
||||
|
||||
#include <KPartition.h>
|
||||
#include <KPartitionListener.h>
|
||||
|
||||
namespace BPrivate {
|
||||
namespace DiskDevice {
|
||||
|
||||
class KPhysicalPartition;
|
||||
|
||||
/*! \brief Class representing a shadow of an existing partition.
|
||||
|
||||
See \ref path_kernel_structures for more information.
|
||||
*/
|
||||
class KShadowPartition : public KPartition, private KPartitionListener {
|
||||
public:
|
||||
KShadowPartition(KPhysicalPartition *physicalPartition);
|
||||
virtual ~KShadowPartition();
|
||||
|
||||
// Hierarchy
|
||||
|
||||
virtual status_t CreateChild(partition_id id, int32 index,
|
||||
KPartition **child = NULL);
|
||||
|
||||
// Shadow Partition
|
||||
|
||||
virtual KShadowPartition *ShadowPartition() const;
|
||||
virtual bool IsShadowPartition() const;
|
||||
void UnsetPhysicalPartition();
|
||||
virtual KPhysicalPartition *PhysicalPartition() const;
|
||||
|
||||
void SyncWithPhysicalPartition();
|
||||
|
||||
virtual void WriteUserData(UserDataWriter &writer,
|
||||
user_partition_data *data);
|
||||
|
||||
virtual void Dump(bool deep, int32 level);
|
||||
|
||||
private:
|
||||
virtual void OffsetChanged(KPartition *partition, off_t offset);
|
||||
virtual void SizeChanged(KPartition *partition, off_t size);
|
||||
virtual void ContentSizeChanged(KPartition *partition, off_t size);
|
||||
virtual void BlockSizeChanged(KPartition *partition, uint32 blockSize);
|
||||
virtual void IndexChanged(KPartition *partition, int32 index);
|
||||
virtual void StatusChanged(KPartition *partition, uint32 status);
|
||||
virtual void FlagsChanged(KPartition *partition, uint32 flags);
|
||||
virtual void NameChanged(KPartition *partition, const char *name);
|
||||
virtual void ContentNameChanged(KPartition *partition, const char *name);
|
||||
virtual void TypeChanged(KPartition *partition, const char *type);
|
||||
virtual void IDChanged(KPartition *partition, partition_id id);
|
||||
virtual void VolumeIDChanged(KPartition *partition, dev_t volumeID);
|
||||
virtual void MountCookieChanged(KPartition *partition, void *cookie);
|
||||
virtual void ParametersChanged(KPartition *partition,
|
||||
const char *parameters);
|
||||
virtual void ContentParametersChanged(KPartition *partition,
|
||||
const char *parameters);
|
||||
virtual void ChildAdded(KPartition *partition, KPartition *child,
|
||||
int32 index);
|
||||
virtual void ChildRemoved(KPartition *partition, KPartition *child,
|
||||
int32 index);
|
||||
virtual void DiskSystemChanged(KPartition *partition,
|
||||
KDiskSystem *diskSystem);
|
||||
virtual void CookieChanged(KPartition *partition, void *cookie);
|
||||
virtual void ContentCookieChanged(KPartition *partition, void *cookie);
|
||||
|
||||
private:
|
||||
KPhysicalPartition *fPhysicalPartition;
|
||||
|
||||
};
|
||||
|
||||
} // namespace DiskDevice
|
||||
} // namespace BPrivate
|
||||
|
||||
using BPrivate::DiskDevice::KShadowPartition;
|
||||
|
||||
#endif // _K_DISK_DEVICE_SHADOW_PARTITION_H
|
||||
@@ -17,7 +17,6 @@ extern "C" {
|
||||
typedef struct user_partition_data user_partition_data;
|
||||
struct user_partition_data {
|
||||
partition_id id;
|
||||
partition_id shadow_id;
|
||||
off_t offset;
|
||||
off_t size;
|
||||
off_t content_size;
|
||||
@@ -70,8 +69,8 @@ partition_id _user_get_next_disk_device_id(int32 *cookie, size_t *neededSize);
|
||||
partition_id _user_find_disk_device(const char *filename, size_t *neededSize);
|
||||
partition_id _user_find_partition(const char *filename, size_t *neededSize);
|
||||
status_t _user_get_disk_device_data(partition_id deviceID, bool deviceOnly,
|
||||
bool shadow, user_disk_device_data *buffer,
|
||||
size_t bufferSize, size_t *neededSize);
|
||||
user_disk_device_data *buffer, size_t bufferSize,
|
||||
size_t *neededSize);
|
||||
|
||||
partition_id _user_register_file_device(const char *filename);
|
||||
status_t _user_unregister_file_device(partition_id deviceID,
|
||||
|
||||
Reference in New Issue
Block a user