FROMLIST: fuse: Definitions and ioctl for passthrough
Expose the FUSE_PASSTHROUGH interface to user space and declare all the basic data structures and functions as the skeleton on top of which the FUSE passthrough functionality will be built. As part of this, introduce the new FUSE passthrough ioctl, which allows the FUSE daemon to specify a direct connection between a FUSE file and a lower file system file. Such ioctl requires user space to pass the file descriptor of one of its opened files through the fuse_passthrough_out data structure introduced in this patch. This structure includes extra fields for possible future extensions. Also, add the passthrough functions for the set-up and tear-down of the data structures and locks that will be used both when fuse_conns and fuse_files are created/deleted. Bug: 179164095 Link: https://lore.kernel.org/lkml/20210125153057.3623715-4-balsini@android.com/ Signed-off-by: Alessio Balsini <balsini@android.com> Change-Id: I732532581348adadda5b5048a9346c2b0868d539 Signed-off-by: Alessio Balsini <balsini@google.com>
This commit is contained in:
committed by
Hridaya Prajapati
parent
759f072297
commit
0d86dc020b
@@ -274,6 +274,7 @@ struct fuse_file_lock {
|
||||
#define FUSE_HANDLE_KILLPRIV (1 << 19)
|
||||
#define FUSE_POSIX_ACL (1 << 20)
|
||||
#define FUSE_ABORT_ERROR (1 << 21)
|
||||
#define FUSE_PASSTHROUGH (1 << 31)
|
||||
|
||||
/**
|
||||
* CUSE INIT request/reply flags
|
||||
@@ -506,7 +507,7 @@ struct fuse_create_in {
|
||||
struct fuse_open_out {
|
||||
uint64_t fh;
|
||||
uint32_t open_flags;
|
||||
uint32_t padding;
|
||||
uint32_t passthrough_fh;
|
||||
};
|
||||
|
||||
struct fuse_release_in {
|
||||
@@ -707,6 +708,14 @@ struct fuse_in_header {
|
||||
uint32_t padding;
|
||||
};
|
||||
|
||||
/* fuse_passthrough_out for passthrough V1 */
|
||||
struct fuse_passthrough_out {
|
||||
uint32_t fd;
|
||||
/* For future implementation */
|
||||
uint32_t len;
|
||||
void *vec;
|
||||
};
|
||||
|
||||
struct fuse_out_header {
|
||||
uint32_t len;
|
||||
int32_t error;
|
||||
@@ -784,6 +793,8 @@ struct fuse_notify_retrieve_in {
|
||||
/* Device ioctls: */
|
||||
#define FUSE_DEV_IOC_MAGIC 229
|
||||
#define FUSE_DEV_IOC_CLONE _IOR(FUSE_DEV_IOC_MAGIC, 0, uint32_t)
|
||||
/* 127 is reserved for the V1 interface implementation in Android */
|
||||
#define FUSE_DEV_IOC_PASSTHROUGH_OPEN _IOW(FUSE_DEV_IOC_MAGIC, 127, struct fuse_passthrough_out)
|
||||
|
||||
struct fuse_lseek_in {
|
||||
uint64_t fh;
|
||||
|
||||
Reference in New Issue
Block a user