Re: reiser4: porting to 3.16: any reason ->aio_read() of struct file_operations has been left out?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wednesday 20 August 2014 at 01:39:42, Edward Shishkin wrote:	
> 
> On 08/20/2014 12:32 AM, Ivan Shapovalov wrote:
> >  From `git log` I've seen that VFS people intend to replace ->aio_read() and
> > ->aio_write() of struct file_operations with new methods ->read_iter() and
> > ->write_iter().
> >
> > (Along with a couple of related new helpers, differing from previous just in
> > calling _iter methods instead of aio_ ones.)
> >
> >  From other filesystems it seems that these are simple drop-in replacements
> > (however, well, I have zero familiarity with VFS). So here is a question:
> > is there any intentional reason that generic_file_aio_write() is not used
> > in reiser4?
> 
> 
> Currently reiser4 is a set of two filesystems which differ in methods
> of handling regular files. For VFS we provide "dispatchers", which pass
> management to appropriate plugin (UNIX_FILE or CRYPTCOMPRESS).
> 
> UNIX_FILE plugin doesn't use generic write for performance reasons
> (I'll try to find the respective mailing thread). CRYPTCOMPRESS doesn't
> use it for compatibility reasons: I don't know how how to rewrite it
> gracefully using the generic write method.
> 
> Edward.


Thanks for explanation! So, does this patch make any sense?

-- 
Ivan Shapovalov / intelfx /

> >
> > What follows is a simple patch that I've currently applied to my own kernel
> > (seems to be the only significant vfs change affecting filesystems), however,
> > I fear that these code-paths are not generally used, so my "works for me"
> > isn't really representative. Could you please clarify the situation here?
> >
> >  From 81172835255a01718c2c256942d5887825a0cd7a Mon Sep 17 00:00:00 2001
> > From: Ivan Shapovalov <intelfx100@xxxxxxxxx>
> > Date: Tue, 19 Aug 2014 14:33:35 +0400
> > Subject: [PATCH] Adjust reiser4 to 3.16: ->{read,write}_iter of struct
> >   file_operations.
> >
> > 1. ->aio_{read,write} of struct file_operations are being replaced with ->{read,write}_iter.
> > 2. do_sync_{read,write} are being replaced with new_sync_{read,write}.
> > 3. generic_file_splice_write is being replaced with iter_file_splice_write.
> >
> > Signed-off-by: Ivan Shapovalov <intelfx100@xxxxxxxxx>
> > ---
> >   fs/reiser4/plugin/file/cryptcompress.c | 2 +-
> >   fs/reiser4/plugin/file/file.c          | 2 +-
> >   fs/reiser4/plugin/object.c             | 4 ++--
> >   3 files changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/fs/reiser4/plugin/file/cryptcompress.c b/fs/reiser4/plugin/file/cryptcompress.c
> > index 8af388d..b0109fb 100644
> > --- a/fs/reiser4/plugin/file/cryptcompress.c
> > +++ b/fs/reiser4/plugin/file/cryptcompress.c
> > @@ -2964,7 +2964,7 @@ ssize_t read_cryptcompress(struct file * file, char __user *buf, size_t size,
> >   		reiser4_exit_context(ctx);
> >   		return result;
> >   	}
> > -	result = do_sync_read(file, buf, size, off);
> > +	result = new_sync_read(file, buf, size, off);
> >   
> >   	context_set_commit_async(ctx);
> >   	reiser4_exit_context(ctx);
> > diff --git a/fs/reiser4/plugin/file/file.c b/fs/reiser4/plugin/file/file.c
> > index 94029cd..e65c48d 100644
> > --- a/fs/reiser4/plugin/file/file.c
> > +++ b/fs/reiser4/plugin/file/file.c
> > @@ -1752,7 +1752,7 @@ ssize_t read_unix_file(struct file *file, char __user *buf,
> >   	switch (uf_info->container) {
> >   	case UF_CONTAINER_EXTENTS:
> >   		if (!reiser4_inode_get_flag(inode, REISER4_PART_MIXED)) {
> > -			result = do_sync_read(file, buf, read_amount, off);
> > +			result = new_sync_read(file, buf, read_amount, off);
> >   			break;
> >   		}
> >   	case UF_CONTAINER_TAILS:
> > diff --git a/fs/reiser4/plugin/object.c b/fs/reiser4/plugin/object.c
> > index 553f1e2..e431e1f 100644
> > --- a/fs/reiser4/plugin/object.c
> > +++ b/fs/reiser4/plugin/object.c
> > @@ -188,7 +188,7 @@ static struct file_operations regular_file_f_ops = {
> >   	.llseek = generic_file_llseek,
> >   	.read = reiser4_read_dispatch,
> >   	.write = reiser4_write_dispatch,
> > -	.aio_read = generic_file_aio_read,
> > +	.read_iter = generic_file_read_iter,
> >   	.unlocked_ioctl = reiser4_ioctl_dispatch,
> >   #ifdef CONFIG_COMPAT
> >   	.compat_ioctl = reiser4_ioctl_dispatch,
> > @@ -198,7 +198,7 @@ static struct file_operations regular_file_f_ops = {
> >   	.release = reiser4_release_dispatch,
> >   	.fsync = reiser4_sync_file_common,
> >   	.splice_read = generic_file_splice_read,
> > -	.splice_write = generic_file_splice_write
> > +	.splice_write = iter_file_splice_write
> >   };
> >   static struct address_space_operations regular_file_a_ops = {
> >   	.writepage = reiser4_writepage,
> 

Attachment: signature.asc
Description: This is a digitally signed message part.


[Index of Archives]     [Linux File System Development]     [Linux BTRFS]     [Linux NFS]     [Linux Filesystems]     [Ext4 Filesystem]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Resources]

  Powered by Linux