* Copyright (c) 2023 CTERA Networks.
*/
+#include "dev.h"
#include "fuse_i.h"
#include <linux/file.h>
*/
#include "dev.h"
+#include "args.h"
#include "dev_uring_i.h"
-#include "fuse_i.h"
-#include "fuse_dev_i.h"
#include <linux/init.h>
#include <linux/module.h>
if (!fud)
return;
- seq_printf(seq, "fuse_connection:\t%u\n", fud->chan->conn->dev);
+ seq_printf(seq, "fuse_connection:\t%u\n", fuse_conn_get_id(fud->chan->conn));
}
#endif
struct fuse_dev;
struct fuse_args;
struct fuse_copy_state;
+struct fuse_backing_map;
struct file;
struct folio;
enum fuse_notify_code;
DEFINE_FREE(fuse_chan_free, struct fuse_chan *, if (_T) fuse_chan_free(_T))
+/**
+ * Initialize the client device
+ */
+int fuse_dev_init(void);
+
+/**
+ * Cleanup the client device
+ */
+void fuse_dev_cleanup(void);
+
void fuse_dev_install(struct fuse_dev *fud, struct fuse_chan *fch);
bool fuse_dev_verify(struct fuse_dev *fud, struct fuse_chan *fch);
void fuse_dev_put(struct fuse_dev *fud);
void fuse_chan_abort(struct fuse_chan *fch, bool abort_with_err);
void fuse_chan_wait_aborted(struct fuse_chan *fch);
+/**
+ * Acquire reference to fuse_conn
+ */
+struct fuse_conn *fuse_conn_get(struct fuse_conn *fc);
+
+/**
+ * Release reference to fuse_conn
+ */
+void fuse_conn_put(struct fuse_conn *fc);
+
+dev_t fuse_conn_get_id(struct fuse_conn *fc);
+
void fuse_end_polls(struct fuse_conn *fc);
int fuse_notify(struct fuse_conn *fc, enum fuse_notify_code code,
unsigned int size, struct fuse_copy_state *cs);
+int fuse_backing_open(struct fuse_conn *fc, struct fuse_backing_map *map);
+int fuse_backing_close(struct fuse_conn *fc, int backing_id);
+
int fuse_copy_one(struct fuse_copy_state *cs, void *val, unsigned size);
int fuse_copy_folio(struct fuse_copy_state *cs, struct folio **foliop,
unsigned offset, unsigned count, int zeroing);
*/
#include "dev.h"
-#include "fuse_i.h"
+#include "args.h"
#include "dev_uring_i.h"
-#include "fuse_dev_i.h"
#include "fuse_trace.h"
#include <linux/fs.h>
void fuse_copy_init(struct fuse_copy_state *cs, bool write,
struct iov_iter *iter);
+/**
+ * Return the number of bytes in an arguments list
+ */
+unsigned int fuse_len_args(unsigned int numargs, struct fuse_arg *args);
+
int fuse_copy_args(struct fuse_copy_state *cs, unsigned int numargs,
unsigned int argpages, struct fuse_arg *args,
int zeroing);
struct fuse_dev *fuse_dev_alloc_install(struct fuse_chan *fch);
struct fuse_dev *fuse_dev_alloc(void);
+int fuse_dev_release(struct inode *inode, struct file *file);
+
/**
* Initialize the fuse processing queue
*/
u32 fuse_get_cache_mask(struct inode *inode);
-/**
- * Initialize the client device
- */
-int fuse_dev_init(void);
-
-/**
- * Cleanup the client device
- */
-void fuse_dev_cleanup(void);
-
int fuse_ctl_init(void);
void __exit fuse_ctl_cleanup(void);
void fuse_change_entry_timeout(struct dentry *entry, struct fuse_entry_out *o);
-/**
- * Acquire reference to fuse_conn
- */
-struct fuse_conn *fuse_conn_get(struct fuse_conn *fc);
-
/**
* Initialize fuse_conn
*/
void fuse_conn_init(struct fuse_conn *fc, struct fuse_mount *fm,
struct user_namespace *user_ns, struct fuse_chan *fch);
-/**
- * Release reference to fuse_conn
- */
-void fuse_conn_put(struct fuse_conn *fc);
-
int fuse_send_init(struct fuse_mount *fm);
/**
long fuse_ioctl_common(struct file *file, unsigned int cmd,
unsigned long arg, unsigned int flags);
__poll_t fuse_file_poll(struct file *file, poll_table *wait);
-int fuse_dev_release(struct inode *inode, struct file *file);
bool fuse_write_update_attr(struct inode *inode, loff_t pos, ssize_t written);
/* readdir.c */
int fuse_readdir(struct file *file, struct dir_context *ctx);
-/**
- * Return the number of bytes in an arguments list
- */
-unsigned int fuse_len_args(unsigned int numargs, struct fuse_arg *args);
-
void fuse_free_conn(struct fuse_conn *fc);
/* dax.c */
void fuse_backing_files_init(struct fuse_conn *fc);
void fuse_backing_files_free(struct fuse_conn *fc);
-int fuse_backing_open(struct fuse_conn *fc, struct fuse_backing_map *map);
-int fuse_backing_close(struct fuse_conn *fc, int backing_id);
/* passthrough.c */
static inline struct fuse_backing *fuse_inode_backing(struct fuse_inode *fi)
}
EXPORT_SYMBOL_GPL(fuse_conn_get);
+dev_t fuse_conn_get_id(struct fuse_conn *fc)
+{
+ return fc->dev;
+}
+
static struct inode *fuse_get_root_inode(struct super_block *sb, unsigned int mode)
{
struct fuse_attr attr;