/* this is a raw syscall - man 2 pivot_root */
extern int pivot_root(const char *new_root, const char *put_old);
+/**
+ * mount_move - move mounted point to the new location
+ *
+ * @oldroot: directory that is current location of mount point
+ * @newroot: new directory for the mount point
+ */
int
mount_move(char *oldroot, char *newroot, char *dir)
{
ret = mount(olddir, newdir, NULL, MS_NOATIME | MS_MOVE, NULL);
/* if (ret)
- ULOG_ERR("failed %s %s: %s\n", olddir, newdir, strerror(errno));*/
+ ULOG_ERR("failed %s %s: %m\n", olddir, newdir);*/
return ret;
}
ret = pivot_root(new, pivotdir);
if (ret < 0) {
- ULOG_ERR("pivot_root failed %s %s: %s\n", new, pivotdir, strerror(errno));
+ ULOG_ERR("pivot_root failed %s %s: %m\n", new, pivotdir);
return -1;
}
return 0;
}
+/**
+ * fopivot - switch to overlay using passed dir as upper one
+ *
+ * @rw_root: writable directory that will be used as upper dir
+ * @ro_root: directory where old root will be put
+ */
int
fopivot(char *rw_root, char *ro_root)
{
/* Mainlined overlayfs has been renamed to "overlay", try that first */
if (mount(overlay, "/mnt", "overlay", MS_NOATIME, mount_options)) {
if (mount(overlay, "/mnt", "overlayfs", MS_NOATIME, mount_options)) {
- ULOG_ERR("mount failed: %s, options %s\n",
- strerror(errno), mount_options);
+ ULOG_ERR("mount failed: %s, options %m\n", mount_options);
return -1;
}
}
return pivot("/mnt", ro_root);
}
+/**
+ * ramoverlay - use RAM to store filesystem changes on top of RO root
+ */
int
ramoverlay(void)
{