fs-util: teach xopenat_full() about XO_SOCKET and XO_TRIGGER_AUTOMOUNT
XO_SOCKET asks for the opened inode to be verified as a socket, analogous to the existing XO_REGULAR. A new fd_verify_socket() helper is added to stat-util to perform the check on an opened fd. XO_TRIGGER_AUTOMOUNT asks O_PATH opens to trigger automounts by going via open_tree() without OPEN_TREE_CLONE, falling back to openat() if the kernel or sandbox rejects open_tree().
This commit is contained in:
+6
-4
@@ -109,10 +109,12 @@ int posix_fallocate_loop(int fd, uint64_t offset, uint64_t size);
|
||||
int parse_cifs_service(const char *s, char **ret_host, char **ret_service, char **ret_path);
|
||||
|
||||
typedef enum XOpenFlags {
|
||||
XO_LABEL = 1 << 0, /* When creating: relabel */
|
||||
XO_SUBVOLUME = 1 << 1, /* When creating as directory: make it a subvolume */
|
||||
XO_NOCOW = 1 << 2, /* Enable NOCOW mode after opening */
|
||||
XO_REGULAR = 1 << 3, /* Fail if the inode is not a regular file */
|
||||
XO_LABEL = 1 << 0, /* When creating: relabel */
|
||||
XO_SUBVOLUME = 1 << 1, /* When creating as directory: make it a subvolume */
|
||||
XO_NOCOW = 1 << 2, /* Enable NOCOW mode after opening */
|
||||
XO_REGULAR = 1 << 3, /* Fail if the inode is not a regular file */
|
||||
XO_SOCKET = 1 << 4, /* Fail if the inode is not a socket */
|
||||
XO_TRIGGER_AUTOMOUNT = 1 << 5, /* Trigger automounts via open_tree(). Requires O_PATH. */
|
||||
} XOpenFlags;
|
||||
|
||||
int open_mkdir_at_full(int dirfd, const char *path, int flags, XOpenFlags xopen_flags, mode_t mode);
|
||||
|
||||
Reference in New Issue
Block a user