summaryrefslogtreecommitdiff
path: root/src/basic/chattr-util.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-03-28 17:54:04 +0100
committerLennart Poettering <lennart@poettering.net>2019-03-28 18:43:04 +0100
commit8a016c746ef4f7e9b5fcc5fc7086e80880d84608 (patch)
tree3de74a91ac4963ec214009b55c14fd72b1429712 /src/basic/chattr-util.h
parentc3272fd4df4a2ff3ebc1b8d4024d56bc803a1b62 (diff)
downloadsystemd-8a016c746ef4f7e9b5fcc5fc7086e80880d84608.tar.gz
util-lib: when copying files make sure to apply some chattrs early, some late
Some chattrs only work sensible if you set them right after opening a file for create (think: FS_NOCOW_FL). Others only work when they are applied when the file is fully written (think: FS_IMMUTABLE_FL). Let's take that into account when copying files and applying a chattr to them.
Diffstat (limited to 'src/basic/chattr-util.h')
-rw-r--r--src/basic/chattr-util.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/basic/chattr-util.h b/src/basic/chattr-util.h
index 7570bba2fa..eb6bfbe461 100644
--- a/src/basic/chattr-util.h
+++ b/src/basic/chattr-util.h
@@ -1,6 +1,20 @@
/* SPDX-License-Identifier: LGPL-2.1+ */
#pragma once
+#include <linux/fs.h>
+
+#include "missing_fs.h"
+
+/* The chattr() flags to apply when creating a new file *before* writing to it. In particular, flags such as
+ * FS_NOCOW_FL don't work if applied a-posteriori. All other flags are fine (or even necessary, think
+ * FS_IMMUTABLE_FL!) to apply after writing to the files. */
+#define CHATTR_EARLY_FL \
+ (FS_NOATIME_FL | \
+ FS_COMPR_FL | \
+ FS_NOCOW_FL | \
+ FS_NOCOMP_FL | \
+ FS_PROJINHERIT_FL)
+
int chattr_fd(int fd, unsigned value, unsigned mask, unsigned *previous);
int chattr_path(const char *p, unsigned value, unsigned mask, unsigned *previous);