diff --git a/src/engine/strat_engine/serde_structs.rs b/src/engine/strat_engine/serde_structs.rs index f77693509ab..085945bc45d 100644 --- a/src/engine/strat_engine/serde_structs.rs +++ b/src/engine/strat_engine/serde_structs.rs @@ -119,4 +119,6 @@ pub struct FilesystemSave { pub created: u64, // Unix timestamp #[serde(skip_serializing_if = "Option::is_none")] pub fs_size_limit: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub origin: Option, } diff --git a/src/engine/strat_engine/thinpool/filesystem.rs b/src/engine/strat_engine/thinpool/filesystem.rs index a93fd9dab5f..63f804eb91e 100644 --- a/src/engine/strat_engine/thinpool/filesystem.rs +++ b/src/engine/strat_engine/thinpool/filesystem.rs @@ -51,6 +51,7 @@ pub struct StratFilesystem { created: DateTime, used: Option, size_limit: Option, + origin: Option, } fn init_used(thin_dev: &ThinDev) -> Option { @@ -114,6 +115,7 @@ impl StratFilesystem { thin_dev, created: Utc::now(), size_limit, + origin: None, }, )) } @@ -140,6 +142,7 @@ impl StratFilesystem { thin_dev, created, size_limit: fssave.fs_size_limit, + origin: fssave.origin, }) } @@ -200,6 +203,7 @@ impl StratFilesystem { snapshot_fs_name: &Name, snapshot_fs_uuid: FilesystemUuid, snapshot_thin_id: ThinDevId, + origin_uuid: FilesystemUuid, ) -> StratisResult { match self.thin_dev.snapshot( get_dm(), @@ -245,6 +249,7 @@ impl StratFilesystem { thin_dev, created: Utc::now(), size_limit: self.size_limit, + origin: Some(origin_uuid), }) } Err(e) => Err(StratisError::Msg(format!( @@ -366,6 +371,7 @@ impl StratFilesystem { size: self.thin_dev.size(), created: self.created.timestamp() as u64, fs_size_limit: self.size_limit, + origin: self.origin, } } diff --git a/src/engine/strat_engine/thinpool/thinpool.rs b/src/engine/strat_engine/thinpool/thinpool.rs index d79d3baaee4..835ba6b0e40 100644 --- a/src/engine/strat_engine/thinpool/thinpool.rs +++ b/src/engine/strat_engine/thinpool/thinpool.rs @@ -1253,6 +1253,7 @@ impl ThinPool { &fs_name, snapshot_fs_uuid, snapshot_id, + origin_uuid, )?, None => { return Err(StratisError::Msg(