diff options
author | James Davidson <james.davidson@vyatta.com> | 2012-10-19 12:11:03 -0700 |
---|---|---|
committer | James Davidson <james.davidson@vyatta.com> | 2012-10-19 13:47:02 -0700 |
commit | 5ffad3ec21332a7cd8b967231b84d5eecee5be92 (patch) | |
tree | c89335c695e4608fe38d6110138549058c89720c /src/cstore | |
parent | 72c915729c7d98a23db8415119283808110d0972 (diff) | |
download | vyatta-cfg-5ffad3ec21332a7cd8b967231b84d5eecee5be92.tar.gz vyatta-cfg-5ffad3ec21332a7cd8b967231b84d5eecee5be92.zip |
Add support for overlayfs and start using it
Diffstat (limited to 'src/cstore')
-rw-r--r-- | src/cstore/unionfs/cstore-unionfs.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/cstore/unionfs/cstore-unionfs.cpp b/src/cstore/unionfs/cstore-unionfs.cpp index e21e660..c53e443 100644 --- a/src/cstore/unionfs/cstore-unionfs.cpp +++ b/src/cstore/unionfs/cstore-unionfs.cpp @@ -1477,14 +1477,26 @@ bool UnionfsCstore::do_mount(const FsPath& rwdir, const FsPath& rdir, const FsPath& mdir) { - string mopts = "dirs="; + const char *fstype; + string mopts; + +#ifdef USE_OVERLAYFS + fstype = "overlayfs"; + mopts = "upperdir="; + mopts += rwdir.path_cstr(); + mopts += ",lowerdir="; + mopts += rdir.path_cstr(); +#else + fstype = "unionfs"; + mopts = "dirs="; mopts += rwdir.path_cstr(); mopts += "=rw:"; mopts += rdir.path_cstr(); mopts += "=ro"; - if (mount("unionfs", mdir.path_cstr(), "unionfs", 0, mopts.c_str()) != 0) { - output_internal("union mount failed [%s][%s]\n", - strerror(errno), mdir.path_cstr()); +#endif + if (mount(fstype, mdir.path_cstr(), fstype, 0, mopts.c_str()) != 0) { + output_internal("union mount failed [%s][%s][%s]\n", + strerror(errno), mdir.path_cstr(), mopts.c_str()); return false; } return true; |