Merge pull request #1161 from trapexit/fix

Workaround older gcc bug with namespacing std::hash
This commit is contained in:
trapexit 2023-03-28 21:57:51 -04:00 committed by GitHub
commit 26c8b5c642
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 51 deletions

View File

@ -1866,24 +1866,8 @@ of rsync or run rsync with the tool \[lq]nocache\[rq].
\f[B]filesystem\f[R] itself. \f[B]filesystem\f[R] itself.
Not the pool with the cache filesystem. Not the pool with the cache filesystem.
You could have data loss if the source is the cache pool. You could have data loss if the source is the cache pool.
.IP .PP
.nf mergerfs.time-based-mover
\f[C]
#!/bin/bash
if [ $# != 3 ]; then
echo \[dq]usage: $0 <cache-fs> <backing-pool> <days-old>\[dq]
exit 1
fi
CACHE=\[dq]${1}\[dq]
BACKING=\[dq]${2}\[dq]
N=${3}
find \[dq]${CACHE}\[dq] -type f -atime +${N} -printf \[aq]%P\[rs]n\[aq] | \[rs]
rsync --files-from=- -axqHAXWES --preallocate --remove-source-files \[dq]${CACHE}/\[dq] \[dq]${BACKING}/\[dq]
\f[R]
.fi
.SS percentage full expiring .SS percentage full expiring
.PP .PP
Move the oldest file from the cache to the backing pool. Move the oldest file from the cache to the backing pool.
@ -1893,32 +1877,8 @@ Continue till below percentage threshold.
\f[B]filesystem\f[R] itself. \f[B]filesystem\f[R] itself.
Not the pool with the cache filesystem. Not the pool with the cache filesystem.
You could have data loss if the source is the cache pool. You could have data loss if the source is the cache pool.
.IP .PP
.nf mergerfs.percent-full-mover
\f[C]
#!/bin/bash
if [ $# != 3 ]; then
echo \[dq]usage: $0 <cache-fs> <backing-pool> <percentage>\[dq]
exit 1
fi
CACHE=\[dq]${1}\[dq]
BACKING=\[dq]${2}\[dq]
PERCENTAGE=${3}
set -o errexit
while [ $(df --output=pcent \[dq]${CACHE}\[dq] | grep -v Use | cut -d\[aq]%\[aq] -f1) -gt ${PERCENTAGE} ]
do
FILE=$(find \[dq]${CACHE}\[dq] -type f -printf \[aq]%A\[at] %P\[rs]n\[aq] | \[rs]
sort | \[rs]
head -n 1 | \[rs]
cut -d\[aq] \[aq] -f2-)
test -n \[dq]${FILE}\[dq]
rsync -axqHAXWESR --preallocate --remove-source-files \[dq]${CACHE}/./${FILE}\[dq] \[dq]${BACKING}/\[dq]
done
\f[R]
.fi
.SH PERFORMANCE .SH PERFORMANCE
.PP .PP
mergerfs is at its core just a proxy and therefore its theoretical max mergerfs is at its core just a proxy and therefore its theoretical max

View File

@ -19,6 +19,7 @@
#include "fs_wait_for_mount.hpp" #include "fs_wait_for_mount.hpp"
#include "syslog.hpp" #include "syslog.hpp"
#include <functional>
#include <thread> #include <thread>
#include <unordered_set> #include <unordered_set>
@ -30,15 +31,18 @@ namespace fs
constexpr std::chrono::milliseconds SLEEP_DURATION = std::chrono::milliseconds(333); constexpr std::chrono::milliseconds SLEEP_DURATION = std::chrono::milliseconds(333);
template<> namespace std
struct std::hash<fs::Path>
{ {
std::size_t template<>
operator()(fs::Path const &path_) const noexcept struct hash<fs::Path>
{ {
return std::hash<std::string>{}(path_.string()); std::size_t
} operator()(fs::Path const &path_) const noexcept
}; {
return std::hash<std::string>{}(path_.string());
}
};
}
static static
void void