From 0e01b34628b672fecbfbb442fad83eebc7da21a4 Mon Sep 17 00:00:00 2001 From: Martin Date: Wed, 22 Jan 2020 12:52:57 +0100 Subject: [PATCH] Substract sparse extents before checking if file fits on storage (cherry picked from commit 6a73f2832d0bb7eff26146864129c32137e5c461) --- urbackupserver/server_hash.cpp | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/urbackupserver/server_hash.cpp b/urbackupserver/server_hash.cpp index 6fd36e19..4e57e064 100644 --- a/urbackupserver/server_hash.cpp +++ b/urbackupserver/server_hash.cpp @@ -929,15 +929,32 @@ void BackupServerHash::addFile(int backupid, int incremental, IFile *tf, const s if( fs>0 && available_space<=fs ) { - if(space_logcnt==0) + if (extent_iterator != NULL) { - ServerLogger::Log(logid, "HT: No free space available deleting backups...", LL_WARNING); + extent_iterator->reset(); + + IFsFile::SSparseExtent ext; + while ((ext = extent_iterator->nextExtent()).offset!=-1) + { + if(ext.size>0) + fs -= ext.size; + } + + extent_iterator->reset(); } - else + + if (fs > 0 && available_space <= fs) { - ServerLogger::Log(logid, "HT: No free space available deleting backups...", LL_WARNING); + if (space_logcnt == 0) + { + ServerLogger::Log(logid, "HT: No free space available deleting backups...", LL_WARNING); + } + else + { + ServerLogger::Log(logid, "HT: No free space available deleting backups...", LL_WARNING); + } + free_ok = freeSpace(fs, os_file_prefix(tfn)); } - free_ok=freeSpace(fs, os_file_prefix(tfn)); } if(!free_ok)