Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 543ade1f authored by Badari Pulavarty's avatar Badari Pulavarty Committed by Linus Torvalds
Browse files

[PATCH] Streamline generic_file_* interfaces and filemap cleanups



This patch cleans up generic_file_*_read/write() interfaces.  Christoph
Hellwig gave me the idea for this clean ups.

In a nutshell, all filesystems should set .aio_read/.aio_write methods and use
do_sync_read/ do_sync_write() as their .read/.write methods.  This allows us
to cleanup all variants of generic_file_* routines.

Final available interfaces:

generic_file_aio_read() - read handler
generic_file_aio_write() - write handler
generic_file_aio_write_nolock() - no lock write handler

__generic_file_aio_write_nolock() - internal worker routine

Signed-off-by: default avatarBadari Pulavarty <pbadari@us.ibm.com>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent ee0b3e67
Loading
Loading
Loading
Loading
+2 −13
Original line number Diff line number Diff line
@@ -238,21 +238,10 @@ static int raw_ctl_ioctl(struct inode *inode, struct file *filp,
	return err;
}

static ssize_t raw_file_write(struct file *file, const char __user *buf,
				   size_t count, loff_t *ppos)
{
	struct iovec local_iov = {
		.iov_base = (char __user *)buf,
		.iov_len = count
	};

	return generic_file_write_nolock(file, &local_iov, 1, ppos);
}

static const struct file_operations raw_fops = {
	.read	=	generic_file_read,
	.read	=	do_sync_read,
	.aio_read = 	generic_file_aio_read,
	.write	=	raw_file_write,
	.write	=	do_sync_write,
	.aio_write = 	generic_file_aio_write_nolock,
	.open	=	raw_open,
	.release=	raw_release,
+4 −2
Original line number Diff line number Diff line
@@ -27,10 +27,12 @@

const struct file_operations adfs_file_operations = {
	.llseek		= generic_file_llseek,
	.read		= generic_file_read,
	.read		= do_sync_read,
	.aio_read	= generic_file_aio_read,
	.mmap		= generic_file_mmap,
	.fsync		= file_fsync,
	.write		= generic_file_write,
	.write		= do_sync_write,
	.aio_write	= generic_file_aio_write,
	.sendfile	= generic_file_sendfile,
};

+4 −2
Original line number Diff line number Diff line
@@ -27,8 +27,10 @@ static int affs_file_release(struct inode *inode, struct file *filp);

const struct file_operations affs_file_operations = {
	.llseek		= generic_file_llseek,
	.read		= generic_file_read,
	.write		= generic_file_write,
	.read		= do_sync_read,
	.aio_read	= generic_file_aio_read,
	.write		= do_sync_write,
	.aio_write	= generic_file_aio_write,
	.mmap		= generic_file_mmap,
	.open		= affs_file_open,
	.release	= affs_file_release,
+4 −2
Original line number Diff line number Diff line
@@ -19,8 +19,10 @@

const struct file_operations bfs_file_operations = {
	.llseek 	= generic_file_llseek,
	.read		= generic_file_read,
	.write		= generic_file_write,
	.read		= do_sync_read,
	.aio_read	= generic_file_aio_read,
	.write		= do_sync_write,
	.aio_write	= generic_file_aio_write,
	.mmap		= generic_file_mmap,
	.sendfile	= generic_file_sendfile,
};
+2 −10
Original line number Diff line number Diff line
@@ -1154,14 +1154,6 @@ static int blkdev_close(struct inode * inode, struct file * filp)
	return blkdev_put(bdev);
}

static ssize_t blkdev_file_write(struct file *file, const char __user *buf,
				   size_t count, loff_t *ppos)
{
	struct iovec local_iov = { .iov_base = (void __user *)buf, .iov_len = count };

	return generic_file_write_nolock(file, &local_iov, 1, ppos);
}

static long block_ioctl(struct file *file, unsigned cmd, unsigned long arg)
{
	return blkdev_ioctl(file->f_mapping->host, file, cmd, arg);
@@ -1181,8 +1173,8 @@ const struct file_operations def_blk_fops = {
	.open		= blkdev_open,
	.release	= blkdev_close,
	.llseek		= block_llseek,
	.read		= generic_file_read,
	.write		= blkdev_file_write,
	.read		= do_sync_read,
	.write		= do_sync_write,
  	.aio_read	= generic_file_aio_read,
  	.aio_write	= generic_file_aio_write_nolock,
	.mmap		= generic_file_mmap,
Loading