diff options
Diffstat (limited to 'kde-frameworks/baloo/files/baloo-5.26.0-size-limit.patch')
-rw-r--r-- | kde-frameworks/baloo/files/baloo-5.26.0-size-limit.patch | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/kde-frameworks/baloo/files/baloo-5.26.0-size-limit.patch b/kde-frameworks/baloo/files/baloo-5.26.0-size-limit.patch new file mode 100644 index 000000000000..6739a2754b63 --- /dev/null +++ b/kde-frameworks/baloo/files/baloo-5.26.0-size-limit.patch @@ -0,0 +1,118 @@ +From: Christoph Cullmann <cullmann@kde.org> +Date: Sun, 11 Sep 2016 16:54:58 +0000 +Subject: Increase size limit of baloo index for 64-bit machines +X-Git-Url: http://quickgit.kde.org/?p=baloo.git&a=commitdiff&h=b0890aca71aa4f0fdabe65ee7b7fbd0bc844d8b8 +--- +Increase size limit of baloo index for 64-bit machines + +CHANGELOG: On 64-bit systems baloo allows now > 5 GB index storage. + +Increase size limit of baloo index for 64-bit machines to avoid crashs after > 5GB of index size. +(Better would be additional out-of-space handling, but ATM baloo has zero checks for that) + +The size limit for 32-bit is still 1GB, like before (there was a silent overflow from 5GB to 1GB in the computation), people with large homes will still get random segfaults on 32-bit. + +Patch based on patch from Hao Zhang, Bug 364475 + +REVIEW: 128885 +BUG: 364475 +--- + + +--- a/src/engine/database.cpp ++++ b/src/engine/database.cpp +@@ -93,8 +93,18 @@ + return false; + } + ++ /** ++ * maximal number of allowed named databases, must match number of databases we create below ++ * each additional one leads to overhead ++ */ + mdb_env_set_maxdbs(m_env, 12); +- mdb_env_set_mapsize(m_env, static_cast<size_t>(1024) * 1024 * 1024 * 5); // 5 gb ++ ++ /** ++ * size limit for database == size limit of mmap ++ * use 1 GB on 32-bit, use 256 GB on 64-bit ++ */ ++ const size_t maximalSizeInBytes = size_t((sizeof(size_t) == 4) ? 1 : 256) * size_t(1024) * size_t(1024) * size_t(1024); ++ mdb_env_set_mapsize(m_env, maximalSizeInBytes); + + // The directory needs to be created before opening the environment + QByteArray arr = QFile::encodeName(indexInfo.absoluteFilePath()); + +--- a/src/engine/databasesize.h ++++ b/src/engine/databasesize.h +@@ -31,30 +31,30 @@ + * This is the size which is computed with all the pages used from all the + * individual database pages + */ +- uint expectedSize; ++ size_t expectedSize; + + /** + * This is the size based on the MDB_env and the total number of pages used + */ +- uint actualSize; ++ size_t actualSize; + +- uint postingDb; +- uint positionDb; ++ size_t postingDb; ++ size_t positionDb; + +- uint docTerms; +- uint docFilenameTerms; +- uint docXattrTerms; ++ size_t docTerms; ++ size_t docFilenameTerms; ++ size_t docXattrTerms; + +- uint idTree; +- uint idFilename; ++ size_t idTree; ++ size_t idFilename; + +- uint docTime; +- uint docData; ++ size_t docTime; ++ size_t docData; + +- uint contentIndexingIds; +- uint failedIds; ++ size_t contentIndexingIds; ++ size_t failedIds; + +- uint mtimeDb; ++ size_t mtimeDb; + }; + + } + +--- a/src/engine/transaction.cpp ++++ b/src/engine/transaction.cpp +@@ -402,7 +402,7 @@ + // + // File Size + // +-static uint dbiSize(MDB_txn* txn, MDB_dbi dbi) ++static size_t dbiSize(MDB_txn* txn, MDB_dbi dbi) + { + MDB_stat stat; + mdb_stat(txn, dbi, &stat); + +--- a/src/tools/balooctl/statuscommand.cpp ++++ b/src/tools/balooctl/statuscommand.cpp +@@ -92,8 +92,8 @@ + + const QString path = fileIndexDbPath(); + +- QFileInfo indexInfo(path + QLatin1String("/index")); +- quint32 size = indexInfo.size(); ++ const QFileInfo indexInfo(path + QLatin1String("/index")); ++ const auto size = indexInfo.size(); + KFormat format(QLocale::system()); + if (size) { + out << "Current size of index is " << format.formatByteSize(size, 2) << endl; + |