Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 251735
b: refs/heads/master
c: 4ed5c03
h: refs/heads/master
i:
  251733: 85d6ec1
  251731: 682374f
  251727: 3631817
v: v3
  • Loading branch information
Lukas Czerner authored and Theodore Ts'o committed May 20, 2011
1 parent acddd93 commit ecd70a0
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 30 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0e499890c1fd9e0a1bed02002161c4c7873d7489
refs/heads/master: 4ed5c033c11b33149d993734a6a8de1016e8f03f
4 changes: 0 additions & 4 deletions trunk/fs/ext4/ext4.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
Expand Down
31 changes: 6 additions & 25 deletions trunk/fs/ext4/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -2673,12 +2673,6 @@ static void print_daily_error_info(unsigned long arg)
mod_timer(&sbi->s_err_report, jiffies + 24*60*60*HZ); /* Once a day */
}

static void ext4_lazyinode_timeout(unsigned long data)
{
struct task_struct *p = (struct task_struct *)data;
wake_up_process(p);
}

/* Find next suitable group and run ext4_init_inode_table */
static int ext4_run_li_request(struct ext4_li_request *elr)
{
Expand Down Expand Up @@ -2726,7 +2720,7 @@ static int ext4_run_li_request(struct ext4_li_request *elr)

/*
* Remove lr_request from the list_request and free the
* request tructure. Should be called with li_list_mtx held
* request structure. Should be called with li_list_mtx held
*/
static void ext4_remove_li_request(struct ext4_li_request *elr)
{
Expand Down Expand Up @@ -2770,14 +2764,10 @@ static int ext4_lazyinit_thread(void *arg)
struct ext4_lazy_init *eli = (struct ext4_lazy_init *)arg;
struct list_head *pos, *n;
struct ext4_li_request *elr;
unsigned long next_wakeup;
DEFINE_WAIT(wait);
unsigned long next_wakeup, cur;

BUG_ON(NULL == eli);

eli->li_timer.data = (unsigned long)current;
eli->li_timer.function = ext4_lazyinode_timeout;

eli->li_task = current;
wake_up(&eli->li_wait_task);

Expand Down Expand Up @@ -2811,19 +2801,15 @@ static int ext4_lazyinit_thread(void *arg)
if (freezing(current))
refrigerator();

if ((time_after_eq(jiffies, next_wakeup)) ||
cur = jiffies;
if ((time_after_eq(cur, next_wakeup)) ||
(MAX_JIFFY_OFFSET == next_wakeup)) {
cond_resched();
continue;
}

eli->li_timer.expires = next_wakeup;
add_timer(&eli->li_timer);
prepare_to_wait(&eli->li_wait_daemon, &wait,
TASK_INTERRUPTIBLE);
if (time_before(jiffies, next_wakeup))
schedule();
finish_wait(&eli->li_wait_daemon, &wait);
schedule_timeout_interruptible(next_wakeup - cur);

if (kthread_should_stop()) {
ext4_clear_request_list();
goto exit_thread;
Expand All @@ -2847,12 +2833,10 @@ static int ext4_lazyinit_thread(void *arg)
goto cont_thread;
}
mutex_unlock(&eli->li_list_mtx);
del_timer_sync(&ext4_li_info->li_timer);
eli->li_task = NULL;
wake_up(&eli->li_wait_task);

kfree(ext4_li_info);
ext4_lazyinit_task = NULL;
ext4_li_info = NULL;
mutex_unlock(&ext4_li_mtx);

Expand Down Expand Up @@ -2880,7 +2864,6 @@ static int ext4_run_lazyinit_thread(void)
if (IS_ERR(ext4_lazyinit_task)) {
int err = PTR_ERR(ext4_lazyinit_task);
ext4_clear_request_list();
del_timer_sync(&ext4_li_info->li_timer);
kfree(ext4_li_info);
ext4_li_info = NULL;
printk(KERN_CRIT "EXT4: error %d creating inode table "
Expand Down Expand Up @@ -2929,9 +2912,7 @@ static int ext4_li_info_new(void)
INIT_LIST_HEAD(&eli->li_request_list);
mutex_init(&eli->li_list_mtx);

init_waitqueue_head(&eli->li_wait_daemon);
init_waitqueue_head(&eli->li_wait_task);
init_timer(&eli->li_timer);
eli->li_state |= EXT4_LAZYINIT_QUIT;

ext4_li_info = eli;
Expand Down

0 comments on commit ecd70a0

Please sign in to comment.