@@ -51,8 +51,6 @@ use crate::store::Storage;
5151use crate :: task:: Task ;
5252use crate :: utils:: sigpolicy_from_opts;
5353
54- /// The default "stateroot" or "osname"; see https://github.com/ostreedev/ostree/issues/2794
55- const STATEROOT_DEFAULT : & str = "default" ;
5654/// The toplevel boot directory
5755const BOOT : & str = "boot" ;
5856/// Directory for transient runtime state
@@ -171,6 +169,10 @@ pub(crate) struct InstallConfigOpts {
171169 #[ clap( long, hide = true ) ]
172170 #[ serde( default ) ]
173171 pub ( crate ) skip_bound_images : bool ,
172+
173+ /// The stateroot name to use. Defaults to `default`.
174+ #[ clap( long) ]
175+ pub ( crate ) stateroot : Option < String > ,
174176}
175177
176178#[ derive( Debug , Clone , clap:: Parser , Serialize , Deserialize , PartialEq , Eq ) ]
@@ -567,8 +569,12 @@ async fn initialize_ostree_root(state: &State, root_setup: &RootSetup) -> Result
567569 // Another implementation: https://github.com/coreos/coreos-assembler/blob/3cd3307904593b3a131b81567b13a4d0b6fe7c90/src/create_disk.sh#L295
568570 crate :: lsm:: ensure_dir_labeled ( rootfs_dir, "" , Some ( "/" . into ( ) ) , 0o755 . into ( ) , sepolicy) ?;
569571
570- // TODO: make configurable?
571- let stateroot = STATEROOT_DEFAULT ;
572+ let stateroot = state
573+ . config_opts
574+ . stateroot
575+ . as_deref ( )
576+ . unwrap_or ( ostree_ext:: container:: deploy:: STATEROOT_DEFAULT ) ;
577+
572578 Task :: new_and_run (
573579 "Initializing ostree layout" ,
574580 "ostree" ,
@@ -638,7 +644,11 @@ async fn install_container(
638644) -> Result < ( ostree:: Deployment , InstallAleph ) > {
639645 let sepolicy = state. load_policy ( ) ?;
640646 let sepolicy = sepolicy. as_ref ( ) ;
641- let stateroot = STATEROOT_DEFAULT ;
647+ let stateroot = state
648+ . config_opts
649+ . stateroot
650+ . as_deref ( )
651+ . unwrap_or ( ostree_ext:: container:: deploy:: STATEROOT_DEFAULT ) ;
642652
643653 let container_rootfs = & Dir :: open_ambient_dir ( "/" , cap_std:: ambient_authority ( ) ) ?;
644654
@@ -1099,7 +1109,9 @@ pub(crate) fn setup_sys_mount(fstype: &str, fspath: &str) -> Result<()> {
10991109 Task :: new ( format ! ( "Mounting {fstype} {fspath}" ) , "mount" )
11001110 . args ( [ "-t" , fstype, fstype, fspath] )
11011111 . quiet ( )
1102- . run ( )
1112+ . run ( ) ?;
1113+
1114+ Ok ( ( ) )
11031115}
11041116
11051117/// Verify that we can load the manifest of the target image
0 commit comments