mirror of
https://github.com/trapexit/mergerfs.git
synced 2025-01-22 08:26:15 +08:00
Merge pull request #1161 from trapexit/fix
Workaround older gcc bug with namespacing std::hash
This commit is contained in:
commit
26c8b5c642
|
@ -1866,24 +1866,8 @@ of rsync or run rsync with the tool \[lq]nocache\[rq].
|
|||
\f[B]filesystem\f[R] itself.
|
||||
Not the pool with the cache filesystem.
|
||||
You could have data loss if the source is the cache pool.
|
||||
.IP
|
||||
.nf
|
||||
\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
|
||||
.PP
|
||||
mergerfs.time-based-mover
|
||||
.SS percentage full expiring
|
||||
.PP
|
||||
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.
|
||||
Not the pool with the cache filesystem.
|
||||
You could have data loss if the source is the cache pool.
|
||||
.IP
|
||||
.nf
|
||||
\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
|
||||
.PP
|
||||
mergerfs.percent-full-mover
|
||||
.SH PERFORMANCE
|
||||
.PP
|
||||
mergerfs is at its core just a proxy and therefore its theoretical max
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "fs_wait_for_mount.hpp"
|
||||
#include "syslog.hpp"
|
||||
|
||||
#include <functional>
|
||||
#include <thread>
|
||||
#include <unordered_set>
|
||||
|
||||
|
@ -30,15 +31,18 @@ namespace fs
|
|||
|
||||
constexpr std::chrono::milliseconds SLEEP_DURATION = std::chrono::milliseconds(333);
|
||||
|
||||
template<>
|
||||
struct std::hash<fs::Path>
|
||||
namespace std
|
||||
{
|
||||
std::size_t
|
||||
operator()(fs::Path const &path_) const noexcept
|
||||
template<>
|
||||
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
|
||||
void
|
||||
|
|
Loading…
Reference in New Issue
Block a user