@@ -42,6 +42,9 @@ use crate::SessionACL;
4242use crate :: dev_fuse:: DevFuse ;
4343use crate :: mnt:: is_mounted;
4444use crate :: mnt:: mount_options:: MountOption ;
45+ use crate :: mnt:: mount_options:: MountOptionGroup ;
46+ use crate :: mnt:: mount_options:: option_group;
47+ use crate :: mnt:: mount_options:: option_to_flag;
4548use crate :: mnt:: mount_options:: option_to_string;
4649
4750const FUSERMOUNT_BIN : & str = "fusermount" ;
@@ -503,123 +506,3 @@ fn fuse_mount_sys(
503506) -> Result < Option < DevFuse > , Error > {
504507 Ok ( None )
505508}
506-
507- #[ cfg( any( target_os = "linux" , target_os = "macos" ) ) ]
508- #[ derive( PartialEq ) ]
509- pub ( crate ) enum MountOptionGroup {
510- KernelOption ,
511- KernelFlag ,
512- Fusermount ,
513- }
514-
515- #[ cfg( any( target_os = "linux" , target_os = "macos" ) ) ]
516- pub ( crate ) fn option_group ( option : & MountOption ) -> MountOptionGroup {
517- match option {
518- MountOption :: FSName ( _) => MountOptionGroup :: Fusermount ,
519- MountOption :: Subtype ( _) => MountOptionGroup :: Fusermount ,
520- MountOption :: CUSTOM ( _) => MountOptionGroup :: KernelOption ,
521- MountOption :: AutoUnmount => MountOptionGroup :: Fusermount ,
522- MountOption :: Dev => MountOptionGroup :: KernelFlag ,
523- MountOption :: NoDev => MountOptionGroup :: KernelFlag ,
524- MountOption :: Suid => MountOptionGroup :: KernelFlag ,
525- MountOption :: NoSuid => MountOptionGroup :: KernelFlag ,
526- MountOption :: RO => MountOptionGroup :: KernelFlag ,
527- MountOption :: RW => MountOptionGroup :: KernelFlag ,
528- MountOption :: Exec => MountOptionGroup :: KernelFlag ,
529- MountOption :: NoExec => MountOptionGroup :: KernelFlag ,
530- MountOption :: Atime => MountOptionGroup :: KernelFlag ,
531- MountOption :: NoAtime => MountOptionGroup :: KernelFlag ,
532- MountOption :: DirSync => MountOptionGroup :: KernelFlag ,
533- MountOption :: Sync => MountOptionGroup :: KernelFlag ,
534- MountOption :: Async => MountOptionGroup :: KernelFlag ,
535- MountOption :: DefaultPermissions => MountOptionGroup :: KernelOption ,
536- }
537- }
538-
539- #[ cfg( target_os = "linux" ) ]
540- pub ( crate ) fn option_to_flag ( option : & MountOption ) -> io:: Result < nix:: mount:: MsFlags > {
541- match option {
542- MountOption :: Dev => Ok ( nix:: mount:: MsFlags :: empty ( ) ) , // There is no option for dev. It's the absence of NoDev
543- MountOption :: NoDev => Ok ( nix:: mount:: MsFlags :: MS_NODEV ) ,
544- MountOption :: Suid => Ok ( nix:: mount:: MsFlags :: empty ( ) ) ,
545- MountOption :: NoSuid => Ok ( nix:: mount:: MsFlags :: MS_NOSUID ) ,
546- MountOption :: RW => Ok ( nix:: mount:: MsFlags :: empty ( ) ) ,
547- MountOption :: RO => Ok ( nix:: mount:: MsFlags :: MS_RDONLY ) ,
548- MountOption :: Exec => Ok ( nix:: mount:: MsFlags :: empty ( ) ) ,
549- MountOption :: NoExec => Ok ( nix:: mount:: MsFlags :: MS_NOEXEC ) ,
550- MountOption :: Atime => Ok ( nix:: mount:: MsFlags :: empty ( ) ) ,
551- MountOption :: NoAtime => Ok ( nix:: mount:: MsFlags :: MS_NOATIME ) ,
552- MountOption :: Async => Ok ( nix:: mount:: MsFlags :: empty ( ) ) ,
553- MountOption :: Sync => Ok ( nix:: mount:: MsFlags :: MS_SYNCHRONOUS ) ,
554- MountOption :: DirSync => Ok ( nix:: mount:: MsFlags :: MS_DIRSYNC ) ,
555- option => Err ( io:: Error :: new (
556- io:: ErrorKind :: InvalidInput ,
557- format ! ( "Invalid mount option for flag conversion: {option:?}" ) ,
558- ) ) ,
559- }
560- }
561-
562- #[ cfg( target_os = "macos" ) ]
563- pub ( crate ) fn option_to_flag ( option : & MountOption ) -> io:: Result < nix:: mount:: MntFlags > {
564- match option {
565- MountOption :: Dev => Ok ( nix:: mount:: MntFlags :: empty ( ) ) , // There is no option for dev. It's the absence of NoDev
566- MountOption :: NoDev => Ok ( nix:: mount:: MntFlags :: MNT_NODEV ) ,
567- MountOption :: Suid => Ok ( nix:: mount:: MntFlags :: empty ( ) ) ,
568- MountOption :: NoSuid => Ok ( nix:: mount:: MntFlags :: MNT_NOSUID ) ,
569- MountOption :: RW => Ok ( nix:: mount:: MntFlags :: empty ( ) ) ,
570- MountOption :: RO => Ok ( nix:: mount:: MntFlags :: MNT_RDONLY ) ,
571- MountOption :: Exec => Ok ( nix:: mount:: MntFlags :: empty ( ) ) ,
572- MountOption :: NoExec => Ok ( nix:: mount:: MntFlags :: MNT_NOEXEC ) ,
573- MountOption :: Atime => Ok ( nix:: mount:: MntFlags :: empty ( ) ) ,
574- MountOption :: NoAtime => Ok ( nix:: mount:: MntFlags :: MNT_NOATIME ) ,
575- MountOption :: Async => Ok ( nix:: mount:: MntFlags :: empty ( ) ) ,
576- MountOption :: Sync => Ok ( nix:: mount:: MntFlags :: MNT_SYNCHRONOUS ) ,
577- option => Err ( io:: Error :: new (
578- io:: ErrorKind :: InvalidInput ,
579- format ! ( "Invalid mount option for flag conversion: {option:?}" ) ,
580- ) ) ,
581- }
582- }
583-
584- #[ cfg_attr(
585- any(
586- target_os = "freebsd" ,
587- target_os = "dragonfly" ,
588- target_os = "openbsd" ,
589- target_os = "netbsd"
590- ) ,
591- allow( dead_code)
592- ) ]
593- #[ cfg( any(
594- target_os = "freebsd" ,
595- target_os = "dragonfly" ,
596- target_os = "openbsd" ,
597- target_os = "netbsd"
598- ) ) ]
599- pub ( crate ) fn option_to_flag ( option : & MountOption ) -> io:: Result < nix:: mount:: MntFlags > {
600- match option {
601- MountOption :: Dev => Ok ( nix:: mount:: MntFlags :: empty ( ) ) ,
602- #[ cfg( target_os = "freebsd" ) ]
603- MountOption :: NoDev => Err ( io:: Error :: new (
604- io:: ErrorKind :: Unsupported ,
605- "NoDev option is not supported on FreeBSD" ,
606- ) ) ,
607- #[ cfg( not( target_os = "freebsd" ) ) ]
608- MountOption :: NoDev => Ok ( nix:: mount:: MntFlags :: MNT_NODEV ) ,
609- MountOption :: Suid => Ok ( nix:: mount:: MntFlags :: empty ( ) ) ,
610- MountOption :: NoSuid => Ok ( nix:: mount:: MntFlags :: MNT_NOSUID ) ,
611- MountOption :: RW => Ok ( nix:: mount:: MntFlags :: empty ( ) ) ,
612- MountOption :: RO => Ok ( nix:: mount:: MntFlags :: MNT_RDONLY ) ,
613- MountOption :: Exec => Ok ( nix:: mount:: MntFlags :: empty ( ) ) ,
614- MountOption :: NoExec => Ok ( nix:: mount:: MntFlags :: MNT_NOEXEC ) ,
615- MountOption :: Atime => Ok ( nix:: mount:: MntFlags :: empty ( ) ) ,
616- MountOption :: NoAtime => Ok ( nix:: mount:: MntFlags :: MNT_NOATIME ) ,
617- MountOption :: Async => Ok ( nix:: mount:: MntFlags :: MNT_ASYNC ) ,
618- MountOption :: Sync => Ok ( nix:: mount:: MntFlags :: MNT_SYNCHRONOUS ) ,
619- MountOption :: DirSync => Ok ( nix:: mount:: MntFlags :: MNT_SYNCHRONOUS ) ,
620- option => Err ( io:: Error :: new (
621- io:: ErrorKind :: InvalidInput ,
622- format ! ( "Invalid mount option for flag conversion: {option:?}" ) ,
623- ) ) ,
624- }
625- }
0 commit comments