From 8eea5a0ac97c8825cbb5881029a29ffc2f6755ea Mon Sep 17 00:00:00 2001 From: Taloth Saldono Date: Sat, 18 Apr 2020 10:55:08 +0200 Subject: [PATCH] Another mono 6.x workaround to use rename rather than expensive copy --- src/NzbDrone.Mono/Disk/DiskProvider.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/NzbDrone.Mono/Disk/DiskProvider.cs b/src/NzbDrone.Mono/Disk/DiskProvider.cs index 5958d73b9..cb8c21e5f 100644 --- a/src/NzbDrone.Mono/Disk/DiskProvider.cs +++ b/src/NzbDrone.Mono/Disk/DiskProvider.cs @@ -244,6 +244,19 @@ namespace NzbDrone.Mono.Disk // - In 6.0 it'll leave a full length file // - In 6.6 it'll leave a zero length file // Catch the exception and attempt to handle these edgecases + + // Mono 6.x till 6.10 doesn't properly try use rename first. + if (move && PlatformInfo.Platform == PlatformType.Mono && PlatformInfo.GetVersion() < new Version(6, 10)) + { + if (Syscall.lstat(source, out var sourcestat) == 0 && + Syscall.lstat(destination, out var deststat) != 0 && + Syscall.rename(source, destination) == 0) + { + _logger.Trace("Moved '{0}' -> '{1}' using Syscall.rename", source, destination); + return; + } + } + try { if (move)