2002-10-29 18:14:29

by Badari Pulavarty

[permalink] [raw]
Subject: [RFC] generic_file_direct_IO() argument changes for AIO

Hi,

Inorder to support AIO for raw/O_DIRECT, I need to add "struct kiocb *"
to generic_file_direct_IO() and all direct_IO() ops.

generic_file_direct_IO(int rw, struct file *file, const struct iovec *iov,
loff_t offset, unsigned long nr_segs)

Instead of adding a new argument, I propose replace

"struct file *file" argument with "struct kiocb *iocb"

One can get "filp" from iocb->ki_filp.

Any objections ?

Thanks,
Badari


2002-10-29 18:51:56

by Andrew Morton

[permalink] [raw]
Subject: Re: [RFC] generic_file_direct_IO() argument changes for AIO

Badari Pulavarty wrote:
>
> Hi,
>
> Inorder to support AIO for raw/O_DIRECT, I need to add "struct kiocb *"
> to generic_file_direct_IO() and all direct_IO() ops.
>
> generic_file_direct_IO(int rw, struct file *file, const struct iovec *iov,
> loff_t offset, unsigned long nr_segs)
>
> Instead of adding a new argument, I propose replace
>
> "struct file *file" argument with "struct kiocb *iocb"
>
> One can get "filp" from iocb->ki_filp.
>
> Any objections ?
>

OK by me.

BTW, while you're poking around in there could you please rename
generic_direct_IO() to blockdev_direct_IO() and move
generic_file_direct_IO() back into filemap.c?

2002-10-29 19:09:38

by Chuck Lever

[permalink] [raw]
Subject: Re: [RFC] generic_file_direct_IO() argument changes for AIO

On Tue, 29 Oct 2002, Badari Pulavarty wrote:

> Inorder to support AIO for raw/O_DIRECT, I need to add "struct kiocb *"
> to generic_file_direct_IO() and all direct_IO() ops.
>
> generic_file_direct_IO(int rw, struct file *file, const struct iovec *iov,
> loff_t offset, unsigned long nr_segs)
>
> Instead of adding a new argument, I propose replace
>
> "struct file *file" argument with "struct kiocb *iocb"
>
> One can get "filp" from iocb->ki_filp.
>
> Any objections ?

here's a naive objection. is there any preallocated data structure
associated with a kiocb other than the struct itself? if there is, that
will have some scalability impact for applications like Oracle that like
to create a very large database by opening thousands of files.

- Chuck Lever
--
corporate: <cel at netapp dot com>
personal: <chucklever at bigfoot dot com>

2002-10-29 19:23:33

by Badari Pulavarty

[permalink] [raw]
Subject: Re: [RFC] generic_file_direct_IO() argument changes for AIO

>
> On Tue, 29 Oct 2002, Badari Pulavarty wrote:
>
> > Inorder to support AIO for raw/O_DIRECT, I need to add "struct kiocb *"
> > to generic_file_direct_IO() and all direct_IO() ops.
> >
> > generic_file_direct_IO(int rw, struct file *file, const struct iovec *iov,
> > loff_t offset, unsigned long nr_segs)
> >
> > Instead of adding a new argument, I propose replace
> >
> > "struct file *file" argument with "struct kiocb *iocb"
> >
> > One can get "filp" from iocb->ki_filp.
> >
> > Any objections ?
>
> here's a naive objection. is there any preallocated data structure
> associated with a kiocb other than the struct itself? if there is, that
> will have some scalability impact for applications like Oracle that like
> to create a very large database by opening thousands of files.
>
> - Chuck Lever

If the application is not using Async IO, "kiocb" structure comes
from stack. Other than that, there are no preallocated strcutures
associated with kiocb.

- Badari