diff --git a/app/server/modules/backends/nfs/nfs-backend.ts b/app/server/modules/backends/nfs/nfs-backend.ts index 73ea30f3..876c18b0 100644 --- a/app/server/modules/backends/nfs/nfs-backend.ts +++ b/app/server/modules/backends/nfs/nfs-backend.ts @@ -34,9 +34,7 @@ const mount = async (config: BackendConfig, path: string) => { } if (status === "error") { - logger.debug( - `Trying to unmount any existing mounts at ${path} before mounting...`, - ); + logger.debug(`Trying to unmount any existing mounts at ${path} before mounting...`); await unmount(path); } @@ -58,6 +56,9 @@ const mount = async (config: BackendConfig, path: string) => { await executeMount(args); + // Fallback with -i flag if the first mount fails using the mount helper + await executeMount(["-i", ...args]); + logger.info(`NFS volume at ${path} mounted successfully.`); return { status: BACKEND_STATUS.mounted }; }; @@ -120,9 +121,7 @@ const checkHealth = async (path: string) => { } if (!mount.fstype.startsWith("nfs")) { - throw new Error( - `Path ${path} is not mounted as NFS (found ${mount.fstype}).`, - ); + throw new Error(`Path ${path} is not mounted as NFS (found ${mount.fstype}).`); } logger.debug(`NFS volume at ${path} is healthy and mounted.`); @@ -140,10 +139,7 @@ const checkHealth = async (path: string) => { } }; -export const makeNfsBackend = ( - config: BackendConfig, - path: string, -): VolumeBackend => ({ +export const makeNfsBackend = (config: BackendConfig, path: string): VolumeBackend => ({ mount: () => mount(config, path), unmount: () => unmount(path), checkHealth: () => checkHealth(path), diff --git a/app/server/modules/backends/smb/smb-backend.ts b/app/server/modules/backends/smb/smb-backend.ts index d8811605..39d97a29 100644 --- a/app/server/modules/backends/smb/smb-backend.ts +++ b/app/server/modules/backends/smb/smb-backend.ts @@ -64,6 +64,9 @@ const mount = async (config: BackendConfig, path: string) => { await executeMount(args); + // Fallback with -i flag if the first mount fails using the mount helper + await executeMount(["-i", ...args]); + logger.info(`SMB volume at ${path} mounted successfully.`); return { status: BACKEND_STATUS.mounted }; }; diff --git a/app/server/modules/backends/utils/backend-utils.ts b/app/server/modules/backends/utils/backend-utils.ts index ea11570c..20153e59 100644 --- a/app/server/modules/backends/utils/backend-utils.ts +++ b/app/server/modules/backends/utils/backend-utils.ts @@ -16,13 +16,13 @@ export const executeMount = async (args: string[]): Promise => { const stderr = result.stderr.toString().trim(); if (result.exitCode === 0) { - logger.debug(stdout); - logger.debug(stderr); + if (stdout) logger.debug(stdout); + if (stderr) logger.debug(stderr); return; } - logger.warn(stdout); - logger.warn(stderr); + if (stdout) logger.warn(stdout); + if (stderr) logger.warn(stderr); throw new Error(`Mount command failed with exit code ${result.exitCode}: ${stderr || stdout || "unknown error"}`); }; diff --git a/app/server/modules/backends/webdav/webdav-backend.ts b/app/server/modules/backends/webdav/webdav-backend.ts index f971ad90..864da6ca 100644 --- a/app/server/modules/backends/webdav/webdav-backend.ts +++ b/app/server/modules/backends/webdav/webdav-backend.ts @@ -60,6 +60,9 @@ const mount = async (config: BackendConfig, path: string) => { const args = ["-t", "davfs", "-o", options.join(","), source, path]; await executeMount(args); + // Fallback with -i flag if the first mount fails using the mount helper + await executeMount(["-i", ...args]); + logger.info(`WebDAV volume at ${path} mounted successfully.`); return { status: BACKEND_STATUS.mounted }; };