diff --git a/changelog/unreleased/pull-4590 b/changelog/unreleased/pull-4590 new file mode 100644 index 000000000..353d21616 --- /dev/null +++ b/changelog/unreleased/pull-4590 @@ -0,0 +1,7 @@ +Enhancement: `mount` tests mountpoint existence before opening the repository + +The restic `mount` command now checks for the existence of the +mountpoint before opening the repository, leading to quicker error +detection. + +https://github.com/restic/restic/pull/4590 diff --git a/cmd/restic/cmd_mount.go b/cmd/restic/cmd_mount.go index 04c072daf..5fd81b344 100644 --- a/cmd/restic/cmd_mount.go +++ b/cmd/restic/cmd_mount.go @@ -113,6 +113,15 @@ func runMount(ctx context.Context, opts MountOptions, gopts GlobalOptions, args return errors.Fatal("wrong number of parameters") } + mountpoint := args[0] + + // Check the existence of the mount point at the earliest stage to + // prevent unnecessary computations while opening the repository. + if _, err := resticfs.Stat(mountpoint); errors.Is(err, os.ErrNotExist) { + Verbosef("Mountpoint %s doesn't exist\n", mountpoint) + return err + } + debug.Log("start mount") defer debug.Log("finish mount") @@ -136,12 +145,6 @@ func runMount(ctx context.Context, opts MountOptions, gopts GlobalOptions, args return err } - mountpoint := args[0] - - if _, err := resticfs.Stat(mountpoint); errors.Is(err, os.ErrNotExist) { - Verbosef("Mountpoint %s doesn't exist\n", mountpoint) - return err - } mountOptions := []systemFuse.MountOption{ systemFuse.ReadOnly(), systemFuse.FSName("restic"),