@@ -169,8 +169,8 @@ pub fn open_dir(dirfd: impl AsFd, name: impl AsRef<Path> + Debug) -> Result<Owne
169169}
170170
171171#[ context( "Ensure dir" ) ]
172- fn ensure_dir ( dirfd : impl AsFd , name : & str ) -> Result < OwnedFd > {
173- match mkdirat ( dirfd. as_fd ( ) , name, 0o700 . into ( ) ) {
172+ fn ensure_dir ( dirfd : impl AsFd , name : & str , mode : Option < u32 > ) -> Result < OwnedFd > {
173+ match mkdirat ( dirfd. as_fd ( ) , name, mode . unwrap_or ( 0o700 ) . into ( ) ) {
174174 Ok ( ( ) ) | Err ( Errno :: EXIST ) => { }
175175 Err ( err) => Err ( err) . with_context ( || format ! ( "Creating dir {name}" ) ) ?,
176176 }
@@ -203,9 +203,9 @@ fn mount_tmpfs() -> Result<OwnedFd> {
203203}
204204
205205#[ context( "Mounting state as overlay" ) ]
206- fn overlay_state ( base : impl AsFd , state : impl AsFd , source : & str ) -> Result < ( ) > {
207- let upper = ensure_dir ( state. as_fd ( ) , "upper" ) ?;
208- let work = ensure_dir ( state. as_fd ( ) , "work" ) ?;
206+ fn overlay_state ( base : impl AsFd , state : impl AsFd , source : & str , mode : Option < u32 > ) -> Result < ( ) > {
207+ let upper = ensure_dir ( state. as_fd ( ) , "upper" , mode ) ?;
208+ let work = ensure_dir ( state. as_fd ( ) , "work" , mode ) ?;
209209
210210 let overlayfs = FsHandle :: open ( "overlay" ) ?;
211211 fsconfig_set_string ( overlayfs. as_fd ( ) , "source" , source) ?;
@@ -224,8 +224,8 @@ fn overlay_state(base: impl AsFd, state: impl AsFd, source: &str) -> Result<()>
224224
225225/// Mounts a transient overlayfs with passed in fd as the lowerdir
226226#[ context( "Mounting transient overlayfs" ) ]
227- pub fn overlay_transient ( base : impl AsFd ) -> Result < ( ) > {
228- overlay_state ( base, prepare_mount ( mount_tmpfs ( ) ?) ?, "transient" )
227+ pub fn overlay_transient ( base : impl AsFd , mode : Option < u32 > ) -> Result < ( ) > {
228+ overlay_state ( base, prepare_mount ( mount_tmpfs ( ) ?) ?, "transient" , mode )
229229}
230230
231231#[ context( "Opening rootfs" ) ]
@@ -287,8 +287,9 @@ fn mount_subdir(
287287 open_dir ( & new_root, subdir) ?,
288288 open_dir ( & state, subdir) ?,
289289 "overlay" ,
290+ None ,
290291 ) ,
291- MountType :: Transient => overlay_transient ( open_dir ( & new_root, subdir) ?) ,
292+ MountType :: Transient => overlay_transient ( open_dir ( & new_root, subdir) ?, None ) ,
292293 }
293294}
294295
@@ -350,7 +351,7 @@ pub fn setup_root(args: Args) -> Result<()> {
350351 }
351352
352353 if config. root . transient {
353- overlay_transient ( & new_root) ?;
354+ overlay_transient ( & new_root, None ) ?;
354355 }
355356
356357 match composefs:: mount:: mount_at ( & sysroot_clone, & new_root, "sysroot" ) {
0 commit comments