public ProcMount(DriveType driveType, string name, string mount, string type, MountOptions mountOptions) { DriveType = driveType; Name = name; RootDirectory = mount; DriveFormat = type; MountOptions = mountOptions; _unixDriveInfo = new UnixDriveInfo(mount); }
private static int Mount(IServiceProvider provider, MountOptions options, CancellationToken token) { provider.GetRequiredService <WorkshopMounter>() .Mount(token) .GetAwaiter() .GetResult(); ConsoleHelpers.WaitBeforeExiting(TimeSpan.FromSeconds(5), PrimaryCancellationSource.Token) .GetAwaiter() .GetResult(); return(0); }
public void Start(VFSProvider data, MountOptions opts) { this.data = data; base.MountPoint = opts.MountPoint; logger.Debug ("Unmounting previous..."); Process p = new Process { StartInfo = new ProcessStartInfo { FileName = "fusermount", Arguments = "-u " + base.MountPoint } }; p.Start (); p.WaitForExit (); logger.Debug ("Done. Mounting..."); base.Start (); }
static async Task Main(string[] args) { if (args.Length < 2) { throw new Exception($"Usage: NeoFS narpv|neovirt mountpoint <fuse-args>"); } var fileType = args[0].ToLowerInvariant(); var mountPoint = args[1]; args = args.Skip(2).ToArray(); var conn = Environment.GetEnvironmentVariable("MONGO_URI"); var Connection = new MongoClient(conn); var NeoDb = Connection.GetDatabase("NeoAlexandria"); var narps = NeoDb.NARPs(); if (!Fuse.CheckDependencies()) { Console.WriteLine(Fuse.InstallationInstructions); return; } // Test to see if we can new a FuseFileInfo IFuseFileSystem fileSystem; switch (fileType) { case "neofs": var provisioner = new ProvisionFilesystem(); fileSystem = provisioner.CreateFs(NeoDb, narps); break; case "neovirt": fileSystem = new NeoVirtFS.NeoVirtFS(NeoDb); break; default: throw new Exception($"Unknown filesystem: {fileType}"); } System.Console.WriteLine($"Mounting filesystem at {mountPoint}"); Fuse.LazyUnmount(mountPoint); // Ensure mount point directory exists Directory.CreateDirectory(mountPoint); try { var mo = new MountOptions { SingleThread = false }; // Debug = "-d" using (var mount = Fuse.Mount(mountPoint, fileSystem, mo, Arguments: new string[] { "-o", "allow_other" })) { await mount.WaitForUnmountAsync(); } } catch (FuseException fe) { Console.WriteLine($"Fuse throw an exception: {fe}"); Console.WriteLine("Try unmounting the file system by executing:"); Console.WriteLine($"fuser -kM {mountPoint}"); Console.WriteLine($"sudo umount -f {mountPoint}"); } }
public DriveInfoMount(DriveInfo driveInfo, DriveType driveType = DriveType.Unknown, MountOptions mountOptions = null) { _driveInfo = driveInfo; _driveType = driveType; MountOptions = mountOptions; }
public void Start(VFSProvider data, MountOptions opts) { this.data = data; DokanOptions dokanOpts = new DokanOptions () { DebugMode = true, UseStdErr = true, MountPoint = opts.MountPoint, VolumeLabel = opts.VolumeLabel, FileSystemName = opts.FileSystemName }; int status = DokanNet.DokanMain (dokanOpts, this); switch (status) { case DokanNet.DOKAN_SUCCESS: logger.Debug ("Clean shutdown"); break; case DokanNet.DOKAN_DRIVE_LETTER_ERROR: logger.Fatal ("Drive letter error"); break; case DokanNet.DOKAN_DRIVER_INSTALL_ERROR: logger.Fatal ("Driver install error"); break; case DokanNet.DOKAN_MOUNT_ERROR: logger.Fatal ("Mount error"); break; case DokanNet.DOKAN_START_ERROR: logger.Fatal ("Start error"); break; case DokanNet.DOKAN_ERROR: logger.Fatal ("Unknown error"); break; default: logger.Fatal ("Unknown status: %d", status); break; } }