Re: [PATCH] incorrect error handling inside generic_file_direct_write

2007-01-02 Thread 'Christoph Hellwig'
On Fri, Dec 15, 2006 at 10:53:18AM -0800, Chen, Kenneth W wrote: > Christoph Hellwig wrote on Friday, December 15, 2006 2:44 AM > > So we're doing the sync_page_range once in __generic_file_aio_write > > with i_mutex held. > > > > > > > mutex_lock(>i_mutex); > > > - ret =

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2007-01-02 Thread 'Christoph Hellwig'
On Fri, Dec 15, 2006 at 10:53:18AM -0800, Chen, Kenneth W wrote: Christoph Hellwig wrote on Friday, December 15, 2006 2:44 AM So we're doing the sync_page_range once in __generic_file_aio_write with i_mutex held. mutex_lock(inode-i_mutex); - ret =

RE: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-15 Thread Chen, Kenneth W
Christoph Hellwig wrote on Friday, December 15, 2006 2:44 AM > So we're doing the sync_page_range once in __generic_file_aio_write > with i_mutex held. > > > > mutex_lock(>i_mutex); > > - ret = __generic_file_aio_write_nolock(iocb, iov, nr_segs, > > - >ki_pos); > > +

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-15 Thread 'Christoph Hellwig'
> +ssize_t > +__generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov, > + unsigned long nr_segs, loff_t pos) I'd still call this generic_file_aio_write_nolock. > + loff_t *ppos = >ki_pos; I'd rather use iocb->ki_pos directly in the few

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-15 Thread 'Christoph Hellwig'
+ssize_t +__generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov, + unsigned long nr_segs, loff_t pos) I'd still call this generic_file_aio_write_nolock. + loff_t *ppos = iocb-ki_pos; I'd rather use iocb-ki_pos directly in the few

RE: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-15 Thread Chen, Kenneth W
Christoph Hellwig wrote on Friday, December 15, 2006 2:44 AM So we're doing the sync_page_range once in __generic_file_aio_write with i_mutex held. mutex_lock(inode-i_mutex); - ret = __generic_file_aio_write_nolock(iocb, iov, nr_segs, - iocb-ki_pos); + ret =

RE: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-12 Thread Chen, Kenneth W
Andrew Morton wrote on Tuesday, December 12, 2006 2:40 AM > On Tue, 12 Dec 2006 16:18:32 +0300 > Dmitriy Monakhov <[EMAIL PROTECTED]> wrote: > > > >> but according to filemaps locking rules: mm/filemap.c:77 > > >> .. > > >> * ->i_mutex(generic_file_buffered_write) > > >> *

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-12 Thread Dmitriy Monakhov
Andrew Morton <[EMAIL PROTECTED]> writes: > On Tue, 12 Dec 2006 16:18:32 +0300 > Dmitriy Monakhov <[EMAIL PROTECTED]> wrote: > >> >> but according to filemaps locking rules: mm/filemap.c:77 >> >> .. >> >> * ->i_mutex (generic_file_buffered_write) >> >> *->mmap_sem

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-12 Thread Andrew Morton
On Tue, 12 Dec 2006 16:18:32 +0300 Dmitriy Monakhov <[EMAIL PROTECTED]> wrote: > >> but according to filemaps locking rules: mm/filemap.c:77 > >> .. > >> * ->i_mutex (generic_file_buffered_write) > >> *->mmap_sem (fault_in_pages_readable->do_page_fault) > >>

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-12 Thread Dmitriy Monakhov
Andrew Morton <[EMAIL PROTECTED]> writes: > On Tue, 12 Dec 2006 15:20:52 +0300 > Dmitriy Monakhov <[EMAIL PROTECTED]> wrote: > >> > XFS (at least) can call generic_file_direct_write() with i_mutex not held. >> > And vmtruncate() expects i_mutex to be held. >> > >> > I guess a suitable solution

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-12 Thread Andrew Morton
On Tue, 12 Dec 2006 15:20:52 +0300 Dmitriy Monakhov <[EMAIL PROTECTED]> wrote: > > XFS (at least) can call generic_file_direct_write() with i_mutex not held. > > And vmtruncate() expects i_mutex to be held. > > > > I guess a suitable solution would be to push this problem back up to the > >

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-12 Thread Dmitriy Monakhov
Andrew Morton <[EMAIL PROTECTED]> writes: > On Mon, 11 Dec 2006 16:34:27 +0300 > Dmitriy Monakhov <[EMAIL PROTECTED]> wrote: > >> OpenVZ team has discovered error inside generic_file_direct_write() >> If generic_file_direct_IO() has fail (ENOSPC condition) it may have >> instantiated >> a few

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-12 Thread Dmitriy Monakhov
Andrew Morton [EMAIL PROTECTED] writes: On Mon, 11 Dec 2006 16:34:27 +0300 Dmitriy Monakhov [EMAIL PROTECTED] wrote: OpenVZ team has discovered error inside generic_file_direct_write() If generic_file_direct_IO() has fail (ENOSPC condition) it may have instantiated a few blocks outside

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-12 Thread Andrew Morton
On Tue, 12 Dec 2006 15:20:52 +0300 Dmitriy Monakhov [EMAIL PROTECTED] wrote: XFS (at least) can call generic_file_direct_write() with i_mutex not held. And vmtruncate() expects i_mutex to be held. I guess a suitable solution would be to push this problem back up to the callers: let

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-12 Thread Dmitriy Monakhov
Andrew Morton [EMAIL PROTECTED] writes: On Tue, 12 Dec 2006 15:20:52 +0300 Dmitriy Monakhov [EMAIL PROTECTED] wrote: XFS (at least) can call generic_file_direct_write() with i_mutex not held. And vmtruncate() expects i_mutex to be held. I guess a suitable solution would be to push

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-12 Thread Andrew Morton
On Tue, 12 Dec 2006 16:18:32 +0300 Dmitriy Monakhov [EMAIL PROTECTED] wrote: but according to filemaps locking rules: mm/filemap.c:77 .. * -i_mutex (generic_file_buffered_write) *-mmap_sem (fault_in_pages_readable-do_page_fault) .. I'm confused

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-12 Thread Dmitriy Monakhov
Andrew Morton [EMAIL PROTECTED] writes: On Tue, 12 Dec 2006 16:18:32 +0300 Dmitriy Monakhov [EMAIL PROTECTED] wrote: but according to filemaps locking rules: mm/filemap.c:77 .. * -i_mutex (generic_file_buffered_write) *-mmap_sem

RE: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-12 Thread Chen, Kenneth W
Andrew Morton wrote on Tuesday, December 12, 2006 2:40 AM On Tue, 12 Dec 2006 16:18:32 +0300 Dmitriy Monakhov [EMAIL PROTECTED] wrote: but according to filemaps locking rules: mm/filemap.c:77 .. * -i_mutex(generic_file_buffered_write) *-mmap_sem

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-11 Thread Andrew Morton
On Tue, 12 Dec 2006 12:22:14 +0300 Dmitriy Monakhov <[EMAIL PROTECTED]> wrote: > >> @@ -2041,6 +2041,14 @@ generic_file_direct_write(struct kiocb * > >>mark_inode_dirty(inode); > >>} > >>*ppos = end; > >> + } else if (written < 0) { > >> +

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-11 Thread Dmitriy Monakhov
Andrew Morton <[EMAIL PROTECTED]> writes: > On Mon, 11 Dec 2006 16:34:27 +0300 > Dmitriy Monakhov <[EMAIL PROTECTED]> wrote: > >> OpenVZ team has discovered error inside generic_file_direct_write() >> If generic_file_direct_IO() has fail (ENOSPC condition) it may have >> instantiated >> a few

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-11 Thread Andrew Morton
On Mon, 11 Dec 2006 16:34:27 +0300 Dmitriy Monakhov <[EMAIL PROTECTED]> wrote: > OpenVZ team has discovered error inside generic_file_direct_write() > If generic_file_direct_IO() has fail (ENOSPC condition) it may have > instantiated > a few blocks outside i_size. And fsck will complain about

Re: [Devel] [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-11 Thread Kirill Korotaev
I guess you forgot to add Andrew on CC. Thanks, Kirill > OpenVZ team has discovered error inside generic_file_direct_write() > If generic_file_direct_IO() has fail (ENOSPC condition) it may have > instantiated > a few blocks outside i_size. And fsck will complain about wrong i_size > (ext2,

[PATCH] incorrect error handling inside generic_file_direct_write

2006-12-11 Thread Dmitriy Monakhov
OpenVZ team has discovered error inside generic_file_direct_write() If generic_file_direct_IO() has fail (ENOSPC condition) it may have instantiated a few blocks outside i_size. And fsck will complain about wrong i_size (ext2, ext3 and reiserfs interpret i_size and biggest block difference as

[PATCH] incorrect error handling inside generic_file_direct_write

2006-12-11 Thread Dmitriy Monakhov
OpenVZ team has discovered error inside generic_file_direct_write() If generic_file_direct_IO() has fail (ENOSPC condition) it may have instantiated a few blocks outside i_size. And fsck will complain about wrong i_size (ext2, ext3 and reiserfs interpret i_size and biggest block difference as

Re: [Devel] [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-11 Thread Kirill Korotaev
I guess you forgot to add Andrew on CC. Thanks, Kirill OpenVZ team has discovered error inside generic_file_direct_write() If generic_file_direct_IO() has fail (ENOSPC condition) it may have instantiated a few blocks outside i_size. And fsck will complain about wrong i_size (ext2, ext3 and

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-11 Thread Andrew Morton
On Mon, 11 Dec 2006 16:34:27 +0300 Dmitriy Monakhov [EMAIL PROTECTED] wrote: OpenVZ team has discovered error inside generic_file_direct_write() If generic_file_direct_IO() has fail (ENOSPC condition) it may have instantiated a few blocks outside i_size. And fsck will complain about wrong

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-11 Thread Dmitriy Monakhov
Andrew Morton [EMAIL PROTECTED] writes: On Mon, 11 Dec 2006 16:34:27 +0300 Dmitriy Monakhov [EMAIL PROTECTED] wrote: OpenVZ team has discovered error inside generic_file_direct_write() If generic_file_direct_IO() has fail (ENOSPC condition) it may have instantiated a few blocks outside

Re: [PATCH] incorrect error handling inside generic_file_direct_write

2006-12-11 Thread Andrew Morton
On Tue, 12 Dec 2006 12:22:14 +0300 Dmitriy Monakhov [EMAIL PROTECTED] wrote: @@ -2041,6 +2041,14 @@ generic_file_direct_write(struct kiocb * mark_inode_dirty(inode); } *ppos = end; + } else if (written 0) { + loff_t isize =