From 5ae886b1d8940d26e465551eb2b31d0834cfae62 Mon Sep 17 00:00:00 2001 From: Robbert Eggermont Date: Sun, 30 Aug 2026 02:33:15 +0200 Subject: [PATCH] Fix "Too many open files" when migrating files with hard links Close the fromFD file descriptor when MigrateFile::migrateRegularFile() returns early. --- ctl/source/modes/migrate/MigrateFile.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ctl/source/modes/migrate/MigrateFile.cpp b/ctl/source/modes/migrate/MigrateFile.cpp index d7db1329..dd51fdae 100644 --- a/ctl/source/modes/migrate/MigrateFile.cpp +++ b/ctl/source/modes/migrate/MigrateFile.cpp @@ -101,19 +101,24 @@ bool MigrateFile::migrateRegularFile() if (fromStatData.st_nlink > 1) { std::cerr << "Cannot migrate file with hard link (yet): " << this->filePath << std::endl; + close(fromFD); return false; } auto maybeFromXAttrs(getXAttrs()); if (!maybeFromXAttrs) { + close(fromFD); return false; } XAttrMap fromXAttrs (std::move(*maybeFromXAttrs)); int tmpFD = runCreateIoctl(&fromStatData); if (tmpFD < 0) + { + close(fromFD); return false; // failed to create new file + } bool metaRes; int renameRes;