mirror of
https://github.com/trapexit/mergerfs.git
synced 2025-06-02 23:56:47 +08:00
Merge pull request #528 from trapexit/nc
rename NW (no write) to NC (no create)
This commit is contained in:
@ -87,7 +87,7 @@ The 'branches' (formerly 'srcmounts') argument is a colon (':') delimited list o
|
||||
|
||||
To make it easier to include multiple branches mergerfs supports [globbing](http://linux.die.net/man/7/glob). **The globbing tokens MUST be escaped when using via the shell else the shell itself will apply the glob itself.**
|
||||
|
||||
Each branch can have a suffix of `=RW` (read / write), `=RO` (read only), or `=NW` (no writes). These suffixes work with globs as well and will apply to each path found. `RW` is the default behavior and those paths will be eligible for all policy categories. `RO` will exclude those paths from `create` and `action` policies (just as a filesystem being mounted `ro` would). `NW` will exclude those paths from `create` policies (you can't create but you can change / delete).
|
||||
Each branch can have a suffix of `=RW` (read / write), `=RO` (read only), or `=NC` (no create). These suffixes work with globs as well and will apply to each path found. `RW` is the default behavior and those paths will be eligible for all policy categories. `RO` will exclude those paths from `create` and `action` policies (just as a filesystem being mounted `ro` would). `NC` will exclude those paths from `create` policies (you can't create but you can change / delete).
|
||||
|
||||
```
|
||||
$ mergerfs -o defaults,allow_other,use_ino /mnt/disk\*:/mnt/cdrom /media/drives
|
||||
@ -184,7 +184,7 @@ When using non-path preserving policies paths will be cloned to target drives as
|
||||
|
||||
#### Policy descriptions
|
||||
|
||||
All **create** policies will filter out branches which are mounted **read only** or tagged as **read only** or **no write**. All **action** policies will filter out branches which are mounted or tagged as **read only**.
|
||||
All **create** policies will filter out branches which are mounted **read only** or tagged as **read only** or **no create**. All **action** policies will filter out branches which are mounted or tagged as **read only**.
|
||||
|
||||
If all branches are filtered an error will be returned. Typically EROFS or ENOSPC.
|
||||
|
||||
|
@ -35,10 +35,10 @@ Branch::ro(void) const
|
||||
}
|
||||
|
||||
bool
|
||||
Branch::ro_or_nw(void) const
|
||||
Branch::ro_or_nc(void) const
|
||||
{
|
||||
return ((mode == Branch::RO) ||
|
||||
(mode == Branch::NW));
|
||||
(mode == Branch::NC));
|
||||
}
|
||||
|
||||
string
|
||||
@ -64,8 +64,8 @@ Branches::to_string(const bool mode_) const
|
||||
case Branch::RO:
|
||||
tmp += "RO";
|
||||
break;
|
||||
case Branch::NW:
|
||||
tmp += "NW";
|
||||
case Branch::NC:
|
||||
tmp += "NC";
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -105,8 +105,8 @@ parse(const string &str_,
|
||||
branch.mode = Branch::RO;
|
||||
else if(str::ends_with(str,"=RW"))
|
||||
branch.mode = Branch::RW;
|
||||
else if(str::ends_with(str,"=NW"))
|
||||
branch.mode = Branch::NW;
|
||||
else if(str::ends_with(str,"=NC"))
|
||||
branch.mode = Branch::NC;
|
||||
|
||||
if(branch.mode != Branch::INVALID)
|
||||
str.resize(str.size() - 3);
|
||||
|
@ -28,14 +28,14 @@ struct Branch
|
||||
INVALID,
|
||||
RO,
|
||||
RW,
|
||||
NW
|
||||
NC
|
||||
};
|
||||
|
||||
Mode mode;
|
||||
std::string path;
|
||||
|
||||
bool ro(void) const;
|
||||
bool ro_or_nw(void) const;
|
||||
bool ro_or_nc(void) const;
|
||||
};
|
||||
|
||||
class Branches : public std::vector<Branch>
|
||||
|
@ -45,7 +45,7 @@ namespace all
|
||||
{
|
||||
branch = &branches_[i];
|
||||
|
||||
if(branch->ro_or_nw())
|
||||
if(branch->ro_or_nc())
|
||||
error_and_continue(error,EROFS);
|
||||
rv = fs::info(&branch->path,&info);
|
||||
if(rv == -1)
|
||||
|
@ -49,7 +49,7 @@ namespace epall
|
||||
|
||||
if(!fs::exists(branch->path,fusepath))
|
||||
error_and_continue(error,ENOENT);
|
||||
if(branch->ro_or_nw())
|
||||
if(branch->ro_or_nc())
|
||||
error_and_continue(error,EROFS);
|
||||
rv = fs::info(&branch->path,&info);
|
||||
if(rv == -1)
|
||||
|
@ -50,7 +50,7 @@ namespace epff
|
||||
|
||||
if(!fs::exists(branch->path,fusepath))
|
||||
error_and_continue(error,ENOENT);
|
||||
if(branch->ro_or_nw())
|
||||
if(branch->ro_or_nc())
|
||||
error_and_continue(error,EROFS);
|
||||
rv = fs::info(&branch->path,&info);
|
||||
if(rv == -1)
|
||||
|
@ -55,7 +55,7 @@ namespace eplfs
|
||||
|
||||
if(!fs::exists(branch->path,fusepath))
|
||||
error_and_continue(error,ENOENT);
|
||||
if(branch->ro_or_nw())
|
||||
if(branch->ro_or_nc())
|
||||
error_and_continue(error,EROFS);
|
||||
rv = fs::info(&branch->path,&info);
|
||||
if(rv == -1)
|
||||
|
@ -55,7 +55,7 @@ namespace eplus
|
||||
|
||||
if(!fs::exists(branch->path,fusepath))
|
||||
error_and_continue(error,ENOENT);
|
||||
if(branch->ro_or_nw())
|
||||
if(branch->ro_or_nc())
|
||||
error_and_continue(error,EROFS);
|
||||
rv = fs::info(&branch->path,&info);
|
||||
if(rv == -1)
|
||||
|
@ -55,7 +55,7 @@ namespace epmfs
|
||||
|
||||
if(!fs::exists(branch->path,fusepath))
|
||||
error_and_continue(error,ENOENT);
|
||||
if(branch->ro_or_nw())
|
||||
if(branch->ro_or_nc())
|
||||
error_and_continue(error,EROFS);
|
||||
rv = fs::info(&branch->path,&info);
|
||||
if(rv == -1)
|
||||
|
@ -46,7 +46,7 @@ namespace ff
|
||||
{
|
||||
branch = &branches_[i];
|
||||
|
||||
if(branch->ro_or_nw())
|
||||
if(branch->ro_or_nc())
|
||||
error_and_continue(error,EROFS);
|
||||
rv = fs::info(&branch->path,&info);
|
||||
if(rv == -1)
|
||||
|
@ -52,7 +52,7 @@ namespace lfs
|
||||
{
|
||||
branch = &branches_[i];
|
||||
|
||||
if(branch->ro_or_nw())
|
||||
if(branch->ro_or_nc())
|
||||
error_and_continue(error,EROFS);
|
||||
rv = fs::info(&branch->path,&info);
|
||||
if(rv == -1)
|
||||
|
@ -52,7 +52,7 @@ namespace lus
|
||||
{
|
||||
branch = &branches_[i];
|
||||
|
||||
if(branch->ro_or_nw())
|
||||
if(branch->ro_or_nc())
|
||||
error_and_continue(error,EROFS);
|
||||
rv = fs::info(&branch->path,&info);
|
||||
if(rv == -1)
|
||||
|
@ -51,7 +51,7 @@ namespace mfs
|
||||
{
|
||||
branch = &branches_[i];
|
||||
|
||||
if(branch->ro_or_nw())
|
||||
if(branch->ro_or_nc())
|
||||
error_and_continue(error,EROFS);
|
||||
rv = fs::info(&branch->path,&info);
|
||||
if(rv == -1)
|
||||
|
@ -55,7 +55,7 @@ namespace newest
|
||||
|
||||
if(!fs::exists(branch->path,fusepath,st))
|
||||
error_and_continue(error,ENOENT);
|
||||
if(branch->ro_or_nw())
|
||||
if(branch->ro_or_nc())
|
||||
error_and_continue(error,EROFS);
|
||||
if(st.st_mtime < newest)
|
||||
continue;
|
||||
|
Reference in New Issue
Block a user