diff options
author | Lukas Czerner <lczerner@redhat.com> | 2011-05-20 13:49:04 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2011-05-20 13:49:04 -0400 |
commit | 4ed5c033c11b33149d993734a6a8de1016e8f03f (patch) | |
tree | 826892fddc9cef7cbfac541eb13bb8eebc95c539 /fs/ext4/ext4.h | |
parent | 0e499890c1fd9e0a1bed02002161c4c7873d7489 (diff) | |
download | linux-3.10-4ed5c033c11b33149d993734a6a8de1016e8f03f.tar.gz linux-3.10-4ed5c033c11b33149d993734a6a8de1016e8f03f.tar.bz2 linux-3.10-4ed5c033c11b33149d993734a6a8de1016e8f03f.zip |
ext4: Use schedule_timeout_interruptible() for waiting in lazyinit thread
In order to make lazyinit eat approx. 10% of io bandwidth at max, we
are sleeping between zeroing each single inode table. For that purpose
we are using timer which wakes up thread when it expires. It is set
via add_timer() and this may cause troubles in the case that thread
has been woken up earlier and in next iteration we call add_timer() on
still running timer hence hitting BUG_ON in add_timer(). We could fix
that by using mod_timer() instead however we can use
schedule_timeout_interruptible() for waiting and hence simplifying
things a lot.
This commit exchange the old "waiting mechanism" with simple
schedule_timeout_interruptible(), setting the time to sleep. Hence we
do not longer need li_wait_daemon waiting queue and others, so get rid
of it.
Addresses-Red-Hat-Bugzilla: #699708
Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Diffstat (limited to 'fs/ext4/ext4.h')
-rw-r--r-- | fs/ext4/ext4.h | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 47986ae8dce..579dfeda614 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -1605,12 +1605,8 @@ void ext4_get_group_no_and_offset(struct super_block *sb, ext4_fsblk_t blocknr, */ struct ext4_lazy_init { unsigned long li_state; - - wait_queue_head_t li_wait_daemon; wait_queue_head_t li_wait_task; - struct timer_list li_timer; struct task_struct *li_task; - struct list_head li_request_list; struct mutex li_list_mtx; }; |