Commit 08cbf542 authored by Tejun Heo's avatar Tejun Heo Committed by Miklos Szeredi

fuse: export symbols to be used by CUSE

Export the following symbols for CUSE.

fuse_conn_put()
fuse_conn_get()
fuse_conn_kill()
fuse_send_init()
fuse_do_open()
fuse_sync_release()
fuse_direct_io()
fuse_do_ioctl()
fuse_file_poll()
fuse_request_alloc()
fuse_get_req()
fuse_put_request()
fuse_request_send()
fuse_abort_conn()
fuse_dev_release()
fuse_dev_operations
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
parent a325f9b9
...@@ -46,6 +46,7 @@ struct fuse_req *fuse_request_alloc(void) ...@@ -46,6 +46,7 @@ struct fuse_req *fuse_request_alloc(void)
fuse_request_init(req); fuse_request_init(req);
return req; return req;
} }
EXPORT_SYMBOL_GPL(fuse_request_alloc);
struct fuse_req *fuse_request_alloc_nofs(void) struct fuse_req *fuse_request_alloc_nofs(void)
{ {
...@@ -124,6 +125,7 @@ struct fuse_req *fuse_get_req(struct fuse_conn *fc) ...@@ -124,6 +125,7 @@ struct fuse_req *fuse_get_req(struct fuse_conn *fc)
atomic_dec(&fc->num_waiting); atomic_dec(&fc->num_waiting);
return ERR_PTR(err); return ERR_PTR(err);
} }
EXPORT_SYMBOL_GPL(fuse_get_req);
/* /*
* Return request in fuse_file->reserved_req. However that may * Return request in fuse_file->reserved_req. However that may
...@@ -208,6 +210,7 @@ void fuse_put_request(struct fuse_conn *fc, struct fuse_req *req) ...@@ -208,6 +210,7 @@ void fuse_put_request(struct fuse_conn *fc, struct fuse_req *req)
fuse_request_free(req); fuse_request_free(req);
} }
} }
EXPORT_SYMBOL_GPL(fuse_put_request);
static unsigned len_args(unsigned numargs, struct fuse_arg *args) static unsigned len_args(unsigned numargs, struct fuse_arg *args)
{ {
...@@ -400,6 +403,7 @@ void fuse_request_send(struct fuse_conn *fc, struct fuse_req *req) ...@@ -400,6 +403,7 @@ void fuse_request_send(struct fuse_conn *fc, struct fuse_req *req)
} }
spin_unlock(&fc->lock); spin_unlock(&fc->lock);
} }
EXPORT_SYMBOL_GPL(fuse_request_send);
static void fuse_request_send_nowait_locked(struct fuse_conn *fc, static void fuse_request_send_nowait_locked(struct fuse_conn *fc,
struct fuse_req *req) struct fuse_req *req)
...@@ -440,6 +444,7 @@ void fuse_request_send_background(struct fuse_conn *fc, struct fuse_req *req) ...@@ -440,6 +444,7 @@ void fuse_request_send_background(struct fuse_conn *fc, struct fuse_req *req)
req->isreply = 1; req->isreply = 1;
fuse_request_send_nowait(fc, req); fuse_request_send_nowait(fc, req);
} }
EXPORT_SYMBOL_GPL(fuse_request_send_background);
/* /*
* Called under fc->lock * Called under fc->lock
...@@ -1106,8 +1111,9 @@ void fuse_abort_conn(struct fuse_conn *fc) ...@@ -1106,8 +1111,9 @@ void fuse_abort_conn(struct fuse_conn *fc)
} }
spin_unlock(&fc->lock); spin_unlock(&fc->lock);
} }
EXPORT_SYMBOL_GPL(fuse_abort_conn);
static int fuse_dev_release(struct inode *inode, struct file *file) int fuse_dev_release(struct inode *inode, struct file *file)
{ {
struct fuse_conn *fc = fuse_get_conn(file); struct fuse_conn *fc = fuse_get_conn(file);
if (fc) { if (fc) {
...@@ -1121,6 +1127,7 @@ static int fuse_dev_release(struct inode *inode, struct file *file) ...@@ -1121,6 +1127,7 @@ static int fuse_dev_release(struct inode *inode, struct file *file)
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(fuse_dev_release);
static int fuse_dev_fasync(int fd, struct file *file, int on) static int fuse_dev_fasync(int fd, struct file *file, int on)
{ {
...@@ -1143,6 +1150,7 @@ const struct file_operations fuse_dev_operations = { ...@@ -1143,6 +1150,7 @@ const struct file_operations fuse_dev_operations = {
.release = fuse_dev_release, .release = fuse_dev_release,
.fasync = fuse_dev_fasync, .fasync = fuse_dev_fasync,
}; };
EXPORT_SYMBOL_GPL(fuse_dev_operations);
static struct miscdevice fuse_miscdevice = { static struct miscdevice fuse_miscdevice = {
.minor = FUSE_MINOR, .minor = FUSE_MINOR,
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/module.h>
static const struct file_operations fuse_direct_io_file_operations; static const struct file_operations fuse_direct_io_file_operations;
...@@ -100,8 +101,8 @@ static void fuse_file_put(struct fuse_file *ff) ...@@ -100,8 +101,8 @@ static void fuse_file_put(struct fuse_file *ff)
} }
} }
static int fuse_do_open(struct fuse_conn *fc, u64 nodeid, struct file *file, int fuse_do_open(struct fuse_conn *fc, u64 nodeid, struct file *file,
bool isdir) bool isdir)
{ {
struct fuse_open_out outarg; struct fuse_open_out outarg;
struct fuse_file *ff; struct fuse_file *ff;
...@@ -128,6 +129,7 @@ static int fuse_do_open(struct fuse_conn *fc, u64 nodeid, struct file *file, ...@@ -128,6 +129,7 @@ static int fuse_do_open(struct fuse_conn *fc, u64 nodeid, struct file *file,
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(fuse_do_open);
void fuse_finish_open(struct inode *inode, struct file *file) void fuse_finish_open(struct inode *inode, struct file *file)
{ {
...@@ -232,6 +234,7 @@ void fuse_sync_release(struct fuse_file *ff, int flags) ...@@ -232,6 +234,7 @@ void fuse_sync_release(struct fuse_file *ff, int flags)
fuse_put_request(ff->fc, ff->reserved_req); fuse_put_request(ff->fc, ff->reserved_req);
kfree(ff); kfree(ff);
} }
EXPORT_SYMBOL_GPL(fuse_sync_release);
/* /*
* Scramble the ID space with XTEA, so that the value of the files_struct * Scramble the ID space with XTEA, so that the value of the files_struct
...@@ -1009,8 +1012,8 @@ static int fuse_get_user_pages(struct fuse_req *req, const char __user *buf, ...@@ -1009,8 +1012,8 @@ static int fuse_get_user_pages(struct fuse_req *req, const char __user *buf,
return 0; return 0;
} }
static ssize_t fuse_direct_io(struct file *file, const char __user *buf, ssize_t fuse_direct_io(struct file *file, const char __user *buf,
size_t count, loff_t *ppos, int write) size_t count, loff_t *ppos, int write)
{ {
struct fuse_file *ff = file->private_data; struct fuse_file *ff = file->private_data;
struct fuse_conn *fc = ff->fc; struct fuse_conn *fc = ff->fc;
...@@ -1066,6 +1069,7 @@ static ssize_t fuse_direct_io(struct file *file, const char __user *buf, ...@@ -1066,6 +1069,7 @@ static ssize_t fuse_direct_io(struct file *file, const char __user *buf,
return res; return res;
} }
EXPORT_SYMBOL_GPL(fuse_direct_io);
static ssize_t fuse_direct_read(struct file *file, char __user *buf, static ssize_t fuse_direct_read(struct file *file, char __user *buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
...@@ -1647,8 +1651,8 @@ static int fuse_ioctl_copy_user(struct page **pages, struct iovec *iov, ...@@ -1647,8 +1651,8 @@ static int fuse_ioctl_copy_user(struct page **pages, struct iovec *iov,
* limits ioctl data transfers to well-formed ioctls and is the forced * limits ioctl data transfers to well-formed ioctls and is the forced
* behavior for all FUSE servers. * behavior for all FUSE servers.
*/ */
static long fuse_do_ioctl(struct file *file, unsigned int cmd, long fuse_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg,
unsigned long arg, unsigned int flags) unsigned int flags)
{ {
struct fuse_file *ff = file->private_data; struct fuse_file *ff = file->private_data;
struct fuse_conn *fc = ff->fc; struct fuse_conn *fc = ff->fc;
...@@ -1813,6 +1817,7 @@ static long fuse_do_ioctl(struct file *file, unsigned int cmd, ...@@ -1813,6 +1817,7 @@ static long fuse_do_ioctl(struct file *file, unsigned int cmd,
return err ? err : outarg.result; return err ? err : outarg.result;
} }
EXPORT_SYMBOL_GPL(fuse_do_ioctl);
static long fuse_file_ioctl_common(struct file *file, unsigned int cmd, static long fuse_file_ioctl_common(struct file *file, unsigned int cmd,
unsigned long arg, unsigned int flags) unsigned long arg, unsigned int flags)
...@@ -1892,7 +1897,7 @@ static void fuse_register_polled_file(struct fuse_conn *fc, ...@@ -1892,7 +1897,7 @@ static void fuse_register_polled_file(struct fuse_conn *fc,
spin_unlock(&fc->lock); spin_unlock(&fc->lock);
} }
static unsigned fuse_file_poll(struct file *file, poll_table *wait) unsigned fuse_file_poll(struct file *file, poll_table *wait)
{ {
struct fuse_file *ff = file->private_data; struct fuse_file *ff = file->private_data;
struct fuse_conn *fc = ff->fc; struct fuse_conn *fc = ff->fc;
...@@ -1939,6 +1944,7 @@ static unsigned fuse_file_poll(struct file *file, poll_table *wait) ...@@ -1939,6 +1944,7 @@ static unsigned fuse_file_poll(struct file *file, poll_table *wait)
} }
return POLLERR; return POLLERR;
} }
EXPORT_SYMBOL_GPL(fuse_file_poll);
/* /*
* This is called from fuse_handle_notify() on FUSE_NOTIFY_POLL and * This is called from fuse_handle_notify() on FUSE_NOTIFY_POLL and
......
...@@ -261,6 +261,8 @@ struct fuse_req { ...@@ -261,6 +261,8 @@ struct fuse_req {
} release; } release;
struct fuse_init_in init_in; struct fuse_init_in init_in;
struct fuse_init_out init_out; struct fuse_init_out init_out;
struct cuse_init_in cuse_init_in;
struct cuse_init_out cuse_init_out;
struct { struct {
struct fuse_read_in in; struct fuse_read_in in;
u64 attr_ver; u64 attr_ver;
...@@ -662,6 +664,8 @@ void fuse_invalidate_entry_cache(struct dentry *entry); ...@@ -662,6 +664,8 @@ void fuse_invalidate_entry_cache(struct dentry *entry);
*/ */
struct fuse_conn *fuse_conn_get(struct fuse_conn *fc); struct fuse_conn *fuse_conn_get(struct fuse_conn *fc);
void fuse_conn_kill(struct fuse_conn *fc);
/** /**
* Initialize fuse_conn * Initialize fuse_conn
*/ */
...@@ -704,4 +708,13 @@ void fuse_release_nowrite(struct inode *inode); ...@@ -704,4 +708,13 @@ void fuse_release_nowrite(struct inode *inode);
u64 fuse_get_attr_version(struct fuse_conn *fc); u64 fuse_get_attr_version(struct fuse_conn *fc);
int fuse_do_open(struct fuse_conn *fc, u64 nodeid, struct file *file,
bool isdir);
ssize_t fuse_direct_io(struct file *file, const char __user *buf,
size_t count, loff_t *ppos, int write);
long fuse_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg,
unsigned int flags);
unsigned fuse_file_poll(struct file *file, poll_table *wait);
int fuse_dev_release(struct inode *inode, struct file *file);
#endif /* _FS_FUSE_I_H */ #endif /* _FS_FUSE_I_H */
...@@ -280,7 +280,7 @@ static void fuse_bdi_destroy(struct fuse_conn *fc) ...@@ -280,7 +280,7 @@ static void fuse_bdi_destroy(struct fuse_conn *fc)
bdi_destroy(&fc->bdi); bdi_destroy(&fc->bdi);
} }
static void fuse_conn_kill(struct fuse_conn *fc) void fuse_conn_kill(struct fuse_conn *fc)
{ {
spin_lock(&fc->lock); spin_lock(&fc->lock);
fc->connected = 0; fc->connected = 0;
...@@ -297,6 +297,7 @@ static void fuse_conn_kill(struct fuse_conn *fc) ...@@ -297,6 +297,7 @@ static void fuse_conn_kill(struct fuse_conn *fc)
mutex_unlock(&fuse_mutex); mutex_unlock(&fuse_mutex);
fuse_bdi_destroy(fc); fuse_bdi_destroy(fc);
} }
EXPORT_SYMBOL_GPL(fuse_conn_kill);
static void fuse_put_super(struct super_block *sb) static void fuse_put_super(struct super_block *sb)
{ {
...@@ -508,12 +509,14 @@ void fuse_conn_put(struct fuse_conn *fc) ...@@ -508,12 +509,14 @@ void fuse_conn_put(struct fuse_conn *fc)
fc->release(fc); fc->release(fc);
} }
} }
EXPORT_SYMBOL_GPL(fuse_conn_put);
struct fuse_conn *fuse_conn_get(struct fuse_conn *fc) struct fuse_conn *fuse_conn_get(struct fuse_conn *fc)
{ {
atomic_inc(&fc->count); atomic_inc(&fc->count);
return fc; return fc;
} }
EXPORT_SYMBOL_GPL(fuse_conn_get);
static struct inode *fuse_get_root_inode(struct super_block *sb, unsigned mode) static struct inode *fuse_get_root_inode(struct super_block *sb, unsigned mode)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment