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 = __generic_file_

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)

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-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 wo

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 > > calle

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 blo

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

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 blo

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 wro