diff --git a/src/getxattr.cpp b/src/getxattr.cpp index a24fbd89..d5e9e828 100644 --- a/src/getxattr.cpp +++ b/src/getxattr.cpp @@ -122,6 +122,18 @@ _getxattr_controlfile_minfreespace(const Config &config, attrvalue = buf; } +static +void +_getxattr_controlfile_policies(const Config &config, + string &attrvalue) +{ + size_t i = Policy::Enum::begin(); + + attrvalue = (string)Policy::policies[i]; + for(i++; i < Policy::Enum::end(); i++) + attrvalue += ',' + (string)Policy::policies[i]; +} + static int _getxattr_controlfile(const Config &config, @@ -144,6 +156,8 @@ _getxattr_controlfile(const Config &config, _getxattr_controlfile_srcmounts(config,attrvalue); else if(attr[2] == "minfreespace") _getxattr_controlfile_minfreespace(config,attrvalue); + else if(attr[2] == "policies") + _getxattr_controlfile_policies(config,attrvalue); break; case 4: diff --git a/src/listxattr.cpp b/src/listxattr.cpp index 7d71b6c2..2fc9156f 100644 --- a/src/listxattr.cpp +++ b/src/listxattr.cpp @@ -52,7 +52,8 @@ _listxattr_controlfile(char *list, const vector strs = buildvector ("user.mergerfs.srcmounts") - ("user.mergerfs.minfreespace"); + ("user.mergerfs.minfreespace") + ("user.mergerfs.policies"); xattrs.reserve(512); for(size_t i = 0; i < strs.size(); i++) diff --git a/src/policy.hpp b/src/policy.hpp index 68961023..57e13acd 100644 --- a/src/policy.hpp +++ b/src/policy.hpp @@ -60,6 +60,9 @@ namespace mergerfs rand, END }; + + static size_t begin() { return BEGIN; } + static size_t end() { return END; } }; struct Func