Re: [PATCH] Direct IO async short read bug followup

2005-04-01 Thread Daniel McNeil
On Fri, 2005-04-01 at 17:27, Andrew Morton wrote:
> Andrew Morton <[EMAIL PROTECTED]> wrote:
> >
> >  >  --- linux-2.6.11.orig/fs/direct-io.c2005-04-01 15:33:11.0 
> > -0800
> >  >  +++ linux-2.6.11/fs/direct-io.c 2005-03-31 16:59:15.0 -0800
> >  >  @@ -66,6 +66,7 @@ struct dio {
> >  >  struct bio *bio;/* bio under assembly */
> >  >  struct inode *inode;
> >  >  int rw;
> >  >  +   ssize_t i_size; /* i_size when submitted */
> > 
> >  I'll change this to loff_t, OK?
> 
> And I think local variable `transferred' can remain ssize_t.  Agree?

Yes.

Daniel

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Direct IO async short read bug followup

2005-04-01 Thread Daniel McNeil
On Fri, 2005-04-01 at 17:20, Andrew Morton wrote:
> Daniel McNeil <[EMAIL PROTECTED]> wrote:
> >
> > I updated the patch to add an i_size element to the dio structure and
> >  sample i_size during i/o submission.  When i/o completes the result can
> >  be truncated to match the file size without using i_size_read(), thus
> >  the aio result now matches the number of bytes read to the end of file.
> > 
> 
> Can you provide the analysis of the bug, please?

The direct i/o code is mapping the read request to the file system
block.  If the file size was not on a block boundary, the result
would show the the read reading past EOF.  This was only happening
for the AIO case.  The non-AIO case truncates the result to match
file size (in direct_io_worker).  This patch does the same thing
for the AIO case, it truncates the result to match the file size
if the read reads past EOF.
> 
> > 
> >  Daniel
> > 
> >  --- linux-2.6.11.orig/fs/direct-io.c   2005-04-01 15:33:11.0 
> > -0800
> >  +++ linux-2.6.11/fs/direct-io.c2005-03-31 16:59:15.0 -0800
> >  @@ -66,6 +66,7 @@ struct dio {
> > struct bio *bio;/* bio under assembly */
> > struct inode *inode;
> > int rw;
> >  +  ssize_t i_size; /* i_size when submitted */
> 
> I'll change this to loff_t, OK?
> -

Yes.

Daniel

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Direct IO async short read bug followup

2005-04-01 Thread Andrew Morton
Andrew Morton <[EMAIL PROTECTED]> wrote:
>
>  >  --- linux-2.6.11.orig/fs/direct-io.c  2005-04-01 15:33:11.0 
> -0800
>  >  +++ linux-2.6.11/fs/direct-io.c   2005-03-31 16:59:15.0 -0800
>  >  @@ -66,6 +66,7 @@ struct dio {
>  >struct bio *bio;/* bio under assembly */
>  >struct inode *inode;
>  >int rw;
>  >  + ssize_t i_size; /* i_size when submitted */
> 
>  I'll change this to loff_t, OK?

And I think local variable `transferred' can remain ssize_t.  Agree?
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Direct IO async short read bug followup

2005-04-01 Thread Andrew Morton
Daniel McNeil <[EMAIL PROTECTED]> wrote:
>
> I updated the patch to add an i_size element to the dio structure and
>  sample i_size during i/o submission.  When i/o completes the result can
>  be truncated to match the file size without using i_size_read(), thus
>  the aio result now matches the number of bytes read to the end of file.
> 

Can you provide the analysis of the bug, please?

> 
>  Daniel
> 
>  --- linux-2.6.11.orig/fs/direct-io.c 2005-04-01 15:33:11.0 -0800
>  +++ linux-2.6.11/fs/direct-io.c  2005-03-31 16:59:15.0 -0800
>  @@ -66,6 +66,7 @@ struct dio {
>   struct bio *bio;/* bio under assembly */
>   struct inode *inode;
>   int rw;
>  +ssize_t i_size; /* i_size when submitted */

I'll change this to loff_t, OK?
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Direct IO async short read bug followup

2005-04-01 Thread Andrew Morton
Daniel McNeil [EMAIL PROTECTED] wrote:

 I updated the patch to add an i_size element to the dio structure and
  sample i_size during i/o submission.  When i/o completes the result can
  be truncated to match the file size without using i_size_read(), thus
  the aio result now matches the number of bytes read to the end of file.
 

Can you provide the analysis of the bug, please?

 
  Daniel
 
  --- linux-2.6.11.orig/fs/direct-io.c 2005-04-01 15:33:11.0 -0800
  +++ linux-2.6.11/fs/direct-io.c  2005-03-31 16:59:15.0 -0800
  @@ -66,6 +66,7 @@ struct dio {
   struct bio *bio;/* bio under assembly */
   struct inode *inode;
   int rw;
  +ssize_t i_size; /* i_size when submitted */

I'll change this to loff_t, OK?
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Direct IO async short read bug followup

2005-04-01 Thread Andrew Morton
Andrew Morton [EMAIL PROTECTED] wrote:

--- linux-2.6.11.orig/fs/direct-io.c  2005-04-01 15:33:11.0 
 -0800
+++ linux-2.6.11/fs/direct-io.c   2005-03-31 16:59:15.0 -0800
@@ -66,6 +66,7 @@ struct dio {
  struct bio *bio;/* bio under assembly */
  struct inode *inode;
  int rw;
+ ssize_t i_size; /* i_size when submitted */
 
  I'll change this to loff_t, OK?

And I think local variable `transferred' can remain ssize_t.  Agree?
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Direct IO async short read bug followup

2005-04-01 Thread Daniel McNeil
On Fri, 2005-04-01 at 17:20, Andrew Morton wrote:
 Daniel McNeil [EMAIL PROTECTED] wrote:
 
  I updated the patch to add an i_size element to the dio structure and
   sample i_size during i/o submission.  When i/o completes the result can
   be truncated to match the file size without using i_size_read(), thus
   the aio result now matches the number of bytes read to the end of file.
  
 
 Can you provide the analysis of the bug, please?

The direct i/o code is mapping the read request to the file system
block.  If the file size was not on a block boundary, the result
would show the the read reading past EOF.  This was only happening
for the AIO case.  The non-AIO case truncates the result to match
file size (in direct_io_worker).  This patch does the same thing
for the AIO case, it truncates the result to match the file size
if the read reads past EOF.
 
  
   Daniel
  
   --- linux-2.6.11.orig/fs/direct-io.c   2005-04-01 15:33:11.0 
  -0800
   +++ linux-2.6.11/fs/direct-io.c2005-03-31 16:59:15.0 -0800
   @@ -66,6 +66,7 @@ struct dio {
  struct bio *bio;/* bio under assembly */
  struct inode *inode;
  int rw;
   +  ssize_t i_size; /* i_size when submitted */
 
 I'll change this to loff_t, OK?
 -

Yes.

Daniel

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Direct IO async short read bug followup

2005-04-01 Thread Daniel McNeil
On Fri, 2005-04-01 at 17:27, Andrew Morton wrote:
 Andrew Morton [EMAIL PROTECTED] wrote:
 
 --- linux-2.6.11.orig/fs/direct-io.c2005-04-01 15:33:11.0 
  -0800
 +++ linux-2.6.11/fs/direct-io.c 2005-03-31 16:59:15.0 -0800
 @@ -66,6 +66,7 @@ struct dio {
 struct bio *bio;/* bio under assembly */
 struct inode *inode;
 int rw;
 +   ssize_t i_size; /* i_size when submitted */
  
   I'll change this to loff_t, OK?
 
 And I think local variable `transferred' can remain ssize_t.  Agree?

Yes.

Daniel

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/