CUSE: implement CUSE - Character device in Userspace
authorTejun Heo <tj@kernel.org>
Tue, 14 Apr 2009 01:54:54 +0000 (10:54 +0900)
committerMiklos Szeredi <mszeredi@suse.cz>
Tue, 9 Jun 2009 09:24:11 +0000 (11:24 +0200)
commit151060ac13144208bd7601d17e4c92c59b98072f
treec93ba28042bcb7917c9098b449756cbe84fb0a51
parent08cbf542bf24fb0481a54526b177347ae4046f5e
CUSE: implement CUSE - Character device in Userspace

CUSE enables implementing character devices in userspace.  With recent
additions of ioctl and poll support, FUSE already has most of what's
necessary to implement character devices.  All CUSE has to do is
bonding all those components - FUSE, chardev and the driver model -
nicely.

When client opens /dev/cuse, kernel starts conversation with
CUSE_INIT.  The client tells CUSE which device it wants to create.  As
the previous patch made fuse_file usable without associated
fuse_inode, CUSE doesn't create super block or inodes.  It attaches
fuse_file to cdev file->private_data during open and set ff->fi to
NULL.  The rest of the operation is almost identical to FUSE direct IO
case.

Each CUSE device has a corresponding directory /sys/class/cuse/DEVNAME
(which is symlink to /sys/devices/virtual/class/DEVNAME if
SYSFS_DEPRECATED is turned off) which hosts "waiting" and "abort"
among other things.  Those two files have the same meaning as the FUSE
control files.

The only notable lacking feature compared to in-kernel implementation
is mmap support.

Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
fs/Kconfig
fs/fuse/Makefile
fs/fuse/cuse.c [new file with mode: 0644]
include/linux/fuse.h