diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index efb221c150e3a..6eb2eefd755e1 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -1719,7 +1719,7 @@ void ProcessDirectoryJob::processFileFinalize( } if (_discoveryData->_syncOptions._vfs && - item->_type == CSyncEnums::ItemTypeFile && + (item->_type == CSyncEnums::ItemTypeFile || item->_type == CSyncEnums::ItemTypeDirectory) && item->_instruction == CSyncEnums::CSYNC_INSTRUCTION_NONE && !_discoveryData->_syncOptions._vfs->isPlaceHolderInSync(_discoveryData->_localDir + path._local)) { item->_instruction = CSyncEnums::CSYNC_INSTRUCTION_UPDATE_VFS_METADATA; diff --git a/src/libsync/propagateremotemove.cpp b/src/libsync/propagateremotemove.cpp index 401a8f27bf124..6d2c0a229b047 100644 --- a/src/libsync/propagateremotemove.cpp +++ b/src/libsync/propagateremotemove.cpp @@ -217,7 +217,19 @@ void PropagateRemoteMove::slotMoveJobFinished() qCWarning(lcPropagateRemoteMove) << "Could not MOVE file" << filePathOriginal << " to" << filePath << " with error:" << _job->errorString() << " and successfully restored it."; + + auto restoredItem = *_item; + restoredItem._renameTarget = _item->_originalFile; + const auto result = propagator()->updateMetadata(restoredItem); + if (!result) { + done(SyncFileItem::FatalError, tr("Error updating metadata: %1").arg(result.error()), ErrorCategory::GenericError); + return; + } else if (*result == Vfs::ConvertToPlaceholderResult::Locked) { + done(SyncFileItem::SoftError, tr("The file %1 is currently in use").arg(restoredItem._file), ErrorCategory::GenericError); + return; + } } + done(status, _job->errorString(), ErrorCategory::GenericError); return; }