chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
shared/unit-name: fix gcc5 warning
[elogind.git]
/
src
/
shared
/
btrfs-util.c
diff --git
a/src/shared/btrfs-util.c
b/src/shared/btrfs-util.c
index 254483c31a3ce5649fc0d722456c448a5461d450..2a70dfea451a4bf2ee6ece3d3c1d05cfcac4b1c7 100644
(file)
--- a/
src/shared/btrfs-util.c
+++ b/
src/shared/btrfs-util.c
@@
-31,7
+31,6
@@
#include "util.h"
#include "path-util.h"
#include "macro.h"
#include "util.h"
#include "path-util.h"
#include "macro.h"
-#include "strv.h"
#include "copy.h"
#include "selinux-util.h"
#include "smack-util.h"
#include "copy.h"
#include "selinux-util.h"
#include "smack-util.h"
@@
-228,14
+227,18
@@
int btrfs_subvol_remove(const char *path) {
return 0;
}
return 0;
}
-int btrfs_subvol_set_read_only(const char *path, bool b) {
- _cleanup_close_ int fd = -1;
+int btrfs_subvol_set_read_only_fd(int fd, bool b) {
uint64_t flags, nflags;
uint64_t flags, nflags;
+ struct stat st;
- fd = open(path, O_RDONLY|O_NOCTTY|O_CLOEXEC);
- if (fd < 0)
+ assert(fd >= 0);
+
+ if (fstat(fd, &st) < 0)
return -errno;
return -errno;
+ if (!S_ISDIR(st.st_mode) || st.st_ino != 256)
+ return -EINVAL;
+
if (ioctl(fd, BTRFS_IOC_SUBVOL_GETFLAGS, &flags) < 0)
return -errno;
if (ioctl(fd, BTRFS_IOC_SUBVOL_GETFLAGS, &flags) < 0)
return -errno;
@@
-253,6
+256,16
@@
int btrfs_subvol_set_read_only(const char *path, bool b) {
return 0;
}
return 0;
}
+int btrfs_subvol_set_read_only(const char *path, bool b) {
+ _cleanup_close_ int fd = -1;
+
+ fd = open(path, O_RDONLY|O_NOCTTY|O_CLOEXEC|O_DIRECTORY);
+ if (fd < 0)
+ return -errno;
+
+ return btrfs_subvol_set_read_only_fd(fd, b);
+}
+
int btrfs_subvol_get_read_only_fd(int fd) {
uint64_t flags;
int btrfs_subvol_get_read_only_fd(int fd) {
uint64_t flags;