Skip to content

Commit

Permalink
Merge pull request #1161 from trapexit/fix
Browse files Browse the repository at this point in the history
Workaround older gcc bug with namespacing std::hash
  • Loading branch information
trapexit authored Mar 29, 2023
2 parents cdceade + 26fd11c commit 26c8b5c
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 51 deletions.
48 changes: 4 additions & 44 deletions man/mergerfs.1
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
Expand Down
18 changes: 11 additions & 7 deletions src/fs_wait_for_mount.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include "fs_wait_for_mount.hpp"
#include "syslog.hpp"

#include <functional>
#include <thread>
#include <unordered_set>

Expand All @@ -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
Expand Down

0 comments on commit 26c8b5c

Please sign in to comment.