Browse Source

Merge pull request #1161 from trapexit/fix

Workaround older gcc bug with namespacing std::hash
pull/1165/head 2.35.0
trapexit 2 years ago
committed by GitHub
parent
commit
26c8b5c642
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 48
      man/mergerfs.1
  2. 18
      src/fs_wait_for_mount.cpp

48
man/mergerfs.1

@ -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
.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 .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
.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 .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

18
src/fs_wait_for_mount.cpp

@ -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<>
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 static
void void

Loading…
Cancel
Save