diff options
author | Alex Auvolat <alex@adnab.me> | 2023-09-04 14:49:49 +0200 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2023-09-06 16:35:28 +0200 |
commit | 71c0188055e25aa1c00d0226f0ca99ce323310a6 (patch) | |
tree | e02f35033a601a502672e6c0294e5cc06ff3b563 /src/util | |
parent | 4b4f2000f45a83b4dad3f2a8fd8392a245a30286 (diff) | |
download | garage-71c0188055e25aa1c00d0226f0ca99ce323310a6.tar.gz garage-71c0188055e25aa1c00d0226f0ca99ce323310a6.zip |
block manager: skeleton for multi-hdd support
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/config.rs | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/util/config.rs b/src/util/config.rs index eeb17e0e..9d00fe82 100644 --- a/src/util/config.rs +++ b/src/util/config.rs @@ -13,7 +13,7 @@ pub struct Config { /// Path where to store metadata. Should be fast, but low volume pub metadata_dir: PathBuf, /// Path where to store data. Can be slower, but need higher volume - pub data_dir: PathBuf, + pub data_dir: DataDirEnum, /// Whether to fsync after all metadata transactions (disabled by default) #[serde(default)] @@ -94,6 +94,26 @@ pub struct Config { pub admin: AdminConfig, } +/// Value for data_dir: either a single directory or a list of dirs with attributes +#[derive(Deserialize, Debug, Clone)] +#[serde(untagged)] +pub enum DataDirEnum { + Single(PathBuf), + Multiple(Vec<DataDir>), +} + +#[derive(Deserialize, Debug, Clone)] +pub struct DataDir { + /// Path to the data directory + pub path: PathBuf, + /// Capacity of the drive (required if read_only is false) + #[serde(default)] + pub capacity: Option<String>, + /// Whether this is a legacy read-only path (capacity should be None) + #[serde(default)] + pub read_only: bool, +} + /// Configuration for S3 api #[derive(Deserialize, Debug, Clone)] pub struct S3ApiConfig { |