Skip to content

Commit

Permalink
buffer: switch do_emergency_thaw() away from pdflush_operation()
Browse files Browse the repository at this point in the history
This is (again) a preparatory patch similar to commit
a2a9537. It open codes a simple
async way of executing do_thaw_all() out of context, so we can get
rid of pdflush.

Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
Jens Axboe committed Apr 15, 2009
1 parent 329007c commit 053c525
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions fs/buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,7 @@ static int osync_buffers_list(spinlock_t *lock, struct list_head *list)
return err;
}

void do_thaw_all(unsigned long unused)
void do_thaw_all(struct work_struct *work)
{
struct super_block *sb;
char b[BDEVNAME_SIZE];
Expand All @@ -567,6 +567,7 @@ void do_thaw_all(unsigned long unused)
goto restart;
}
spin_unlock(&sb_lock);
kfree(work);
printk(KERN_WARNING "Emergency Thaw complete\n");
}

Expand All @@ -577,7 +578,13 @@ void do_thaw_all(unsigned long unused)
*/
void emergency_thaw_all(void)
{
pdflush_operation(do_thaw_all, 0);
struct work_struct *work;

work = kmalloc(sizeof(*work), GFP_ATOMIC);
if (work) {
INIT_WORK(work, do_thaw_all);
schedule_work(work);
}
}

/**
Expand Down

0 comments on commit 053c525

Please sign in to comment.