summaryrefslogtreecommitdiff
path: root/morphlib/fsutils.py
diff options
context:
space:
mode:
Diffstat (limited to 'morphlib/fsutils.py')
-rw-r--r--morphlib/fsutils.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/morphlib/fsutils.py b/morphlib/fsutils.py
index 97a7a8f2..3a9ee4db 100644
--- a/morphlib/fsutils.py
+++ b/morphlib/fsutils.py
@@ -60,6 +60,23 @@ def mount(runcmd, partition, mount_point,
runcmd(['mount', partition, mount_point] + fstype + options)
+def overlay_mount(runcmd, partition, mount_point,
+ lowerdir, upperdir, workdir, settings): # pragma: no cover
+ method = settings['union-filesystem']
+ if method == 'overlayfs':
+ options = '-olowerdir=%s,upperdir=%s,workdir=%s' % \
+ (lowerdir, upperdir, workdir)
+ mount(runcmd, partition, mount_point, 'overlay', options)
+ elif method == 'unionfs':
+ if not os.path.exists(mount_point):
+ os.mkdir(mount_point)
+ dir_string = '%s=RW:%s=RO' % (upperdir, lowerdir)
+ runcmd(['unionfs', '-o', 'cow', dir_string, mount_point])
+ else:
+ raise cliapp.AppException('Union filesystem %s not supported' %
+ method)
+
+
def unmount(runcmd, mount_point): # pragma: no cover
runcmd(['umount', mount_point])