1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
/*
* Copyright IBM Corp. 2021
*
* s390-tools is free software; you can redistribute it and/or modify
* it under the terms of the MIT license. See LICENSE for details.
*/
#include <stddef.h>
#include <string.h>
#include <errno.h>
#include <sys/mount.h>
#include "lib/util_log.h"
#include "mount.h"
int mount_debugfs(const char *target)
{
int ret;
util_log_print(UTIL_LOG_INFO, "Mount debugfs on %s\n", target);
ret = mount("none", target, "debugfs", 0, NULL);
if (ret) {
util_log_print(UTIL_LOG_ERROR, "mount syscall failed (%s)\n",
strerror(errno));
return -1;
}
return 0;
}
int bind_mount(const char *src, const char *target)
{
int ret;
util_log_print(UTIL_LOG_INFO, "Bind mount %s on %s\n", src, target);
ret = mount(src, target, "", MS_BIND, NULL);
if (ret) {
util_log_print(UTIL_LOG_ERROR, "mount syscall failed (%s)\n",
strerror(errno));
return -1;
}
return 0;
}
int unmount_detach(const char *target)
{
int ret;
util_log_print(UTIL_LOG_INFO, "Unmount detach %s\n", target);
ret = umount2(target, MNT_DETACH);
if (ret) {
util_log_print(UTIL_LOG_ERROR, "umount2 syscall failed (%s)\n",
strerror(errno));
return -1;
}
return 0;
}
|