Message ID | 1348487060-19598-3-git-send-email-dmonakhov@openvz.org |
---|---|
State | Superseded, archived |
Headers | show |
On Mon 24-09-12 15:44:12, Dmitry Monakhov wrote: > AIO/DIO prefix is wrong because it account unwritten extents which > also may be scheduled from buffered write endio Correct. You can add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > > Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org> > --- > fs/ext4/ext4.h | 4 ++-- > fs/ext4/file.c | 6 +++--- > fs/ext4/page-io.c | 2 +- > fs/ext4/super.c | 2 +- > 4 files changed, 7 insertions(+), 7 deletions(-) > > diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h > index e59fbc5..47f0778 100644 > --- a/fs/ext4/ext4.h > +++ b/fs/ext4/ext4.h > @@ -912,7 +912,7 @@ struct ext4_inode_info { > struct list_head i_completed_io_list; > spinlock_t i_completed_io_lock; > atomic_t i_ioend_count; /* Number of outstanding io_end structs */ > - atomic_t i_aiodio_unwritten; /* Nr. of inflight conversions pending */ > + atomic_t i_unwritten; /* Nr. of inflight conversions pending */ > > spinlock_t i_block_reservation_lock; > > @@ -1335,7 +1335,7 @@ static inline void ext4_set_io_unwritten_flag(struct inode *inode, > { > if (!(io_end->flag & EXT4_IO_END_UNWRITTEN)) { > io_end->flag |= EXT4_IO_END_UNWRITTEN; > - atomic_inc(&EXT4_I(inode)->i_aiodio_unwritten); > + atomic_inc(&EXT4_I(inode)->i_unwritten); > } > } > > diff --git a/fs/ext4/file.c b/fs/ext4/file.c > index 3b0e3bd..39335bd 100644 > --- a/fs/ext4/file.c > +++ b/fs/ext4/file.c > @@ -55,11 +55,11 @@ static int ext4_release_file(struct inode *inode, struct file *filp) > return 0; > } > > -static void ext4_aiodio_wait(struct inode *inode) > +static void ext4_unwritten_wait(struct inode *inode) > { > wait_queue_head_t *wq = ext4_ioend_wq(inode); > > - wait_event(*wq, (atomic_read(&EXT4_I(inode)->i_aiodio_unwritten) == 0)); > + wait_event(*wq, (atomic_read(&EXT4_I(inode)->i_unwritten) == 0)); > } > > /* > @@ -116,7 +116,7 @@ ext4_file_dio_write(struct kiocb *iocb, const struct iovec *iov, > "performance will be poor.", > inode->i_ino, current->comm); > mutex_lock(ext4_aio_mutex(inode)); > - ext4_aiodio_wait(inode); > + ext4_unwritten_wait(inode); > } > > BUG_ON(iocb->ki_pos != pos); > diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c > index dcdeef1..de77e31 100644 > --- a/fs/ext4/page-io.c > +++ b/fs/ext4/page-io.c > @@ -113,7 +113,7 @@ int ext4_end_io_nolock(ext4_io_end_t *io) > if (io->flag & EXT4_IO_END_DIRECT) > inode_dio_done(inode); > /* Wake up anyone waiting on unwritten extent conversion */ > - if (atomic_dec_and_test(&EXT4_I(inode)->i_aiodio_unwritten)) > + if (atomic_dec_and_test(&EXT4_I(inode)->i_unwritten)) > wake_up_all(ext4_ioend_wq(io->inode)); > return ret; > } > diff --git a/fs/ext4/super.c b/fs/ext4/super.c > index 64acf55..0a37c75 100644 > --- a/fs/ext4/super.c > +++ b/fs/ext4/super.c > @@ -968,7 +968,7 @@ static struct inode *ext4_alloc_inode(struct super_block *sb) > ei->i_sync_tid = 0; > ei->i_datasync_tid = 0; > atomic_set(&ei->i_ioend_count, 0); > - atomic_set(&ei->i_aiodio_unwritten, 0); > + atomic_set(&ei->i_unwritten, 0); > > return &ei->vfs_inode; > } > -- > 1.7.7.6 >
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index e59fbc5..47f0778 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -912,7 +912,7 @@ struct ext4_inode_info { struct list_head i_completed_io_list; spinlock_t i_completed_io_lock; atomic_t i_ioend_count; /* Number of outstanding io_end structs */ - atomic_t i_aiodio_unwritten; /* Nr. of inflight conversions pending */ + atomic_t i_unwritten; /* Nr. of inflight conversions pending */ spinlock_t i_block_reservation_lock; @@ -1335,7 +1335,7 @@ static inline void ext4_set_io_unwritten_flag(struct inode *inode, { if (!(io_end->flag & EXT4_IO_END_UNWRITTEN)) { io_end->flag |= EXT4_IO_END_UNWRITTEN; - atomic_inc(&EXT4_I(inode)->i_aiodio_unwritten); + atomic_inc(&EXT4_I(inode)->i_unwritten); } } diff --git a/fs/ext4/file.c b/fs/ext4/file.c index 3b0e3bd..39335bd 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -55,11 +55,11 @@ static int ext4_release_file(struct inode *inode, struct file *filp) return 0; } -static void ext4_aiodio_wait(struct inode *inode) +static void ext4_unwritten_wait(struct inode *inode) { wait_queue_head_t *wq = ext4_ioend_wq(inode); - wait_event(*wq, (atomic_read(&EXT4_I(inode)->i_aiodio_unwritten) == 0)); + wait_event(*wq, (atomic_read(&EXT4_I(inode)->i_unwritten) == 0)); } /* @@ -116,7 +116,7 @@ ext4_file_dio_write(struct kiocb *iocb, const struct iovec *iov, "performance will be poor.", inode->i_ino, current->comm); mutex_lock(ext4_aio_mutex(inode)); - ext4_aiodio_wait(inode); + ext4_unwritten_wait(inode); } BUG_ON(iocb->ki_pos != pos); diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c index dcdeef1..de77e31 100644 --- a/fs/ext4/page-io.c +++ b/fs/ext4/page-io.c @@ -113,7 +113,7 @@ int ext4_end_io_nolock(ext4_io_end_t *io) if (io->flag & EXT4_IO_END_DIRECT) inode_dio_done(inode); /* Wake up anyone waiting on unwritten extent conversion */ - if (atomic_dec_and_test(&EXT4_I(inode)->i_aiodio_unwritten)) + if (atomic_dec_and_test(&EXT4_I(inode)->i_unwritten)) wake_up_all(ext4_ioend_wq(io->inode)); return ret; } diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 64acf55..0a37c75 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -968,7 +968,7 @@ static struct inode *ext4_alloc_inode(struct super_block *sb) ei->i_sync_tid = 0; ei->i_datasync_tid = 0; atomic_set(&ei->i_ioend_count, 0); - atomic_set(&ei->i_aiodio_unwritten, 0); + atomic_set(&ei->i_unwritten, 0); return &ei->vfs_inode; }
AIO/DIO prefix is wrong because it account unwritten extents which also may be scheduled from buffered write endio Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org> --- fs/ext4/ext4.h | 4 ++-- fs/ext4/file.c | 6 +++--- fs/ext4/page-io.c | 2 +- fs/ext4/super.c | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-)