diff options
Diffstat (limited to 'fs/buffer.c')
-rw-r--r-- | fs/buffer.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/fs/buffer.c b/fs/buffer.c index 13edf7ad3ff1..ff8bb1f2333a 100644 --- a/fs/buffer.c +++ b/fs/buffer.c | |||
@@ -547,7 +547,7 @@ repeat: | |||
547 | return err; | 547 | return err; |
548 | } | 548 | } |
549 | 549 | ||
550 | void do_thaw_all(unsigned long unused) | 550 | void do_thaw_all(struct work_struct *work) |
551 | { | 551 | { |
552 | struct super_block *sb; | 552 | struct super_block *sb; |
553 | char b[BDEVNAME_SIZE]; | 553 | char b[BDEVNAME_SIZE]; |
@@ -567,6 +567,7 @@ restart: | |||
567 | goto restart; | 567 | goto restart; |
568 | } | 568 | } |
569 | spin_unlock(&sb_lock); | 569 | spin_unlock(&sb_lock); |
570 | kfree(work); | ||
570 | printk(KERN_WARNING "Emergency Thaw complete\n"); | 571 | printk(KERN_WARNING "Emergency Thaw complete\n"); |
571 | } | 572 | } |
572 | 573 | ||
@@ -577,7 +578,13 @@ restart: | |||
577 | */ | 578 | */ |
578 | void emergency_thaw_all(void) | 579 | void emergency_thaw_all(void) |
579 | { | 580 | { |
580 | pdflush_operation(do_thaw_all, 0); | 581 | struct work_struct *work; |
582 | |||
583 | work = kmalloc(sizeof(*work), GFP_ATOMIC); | ||
584 | if (work) { | ||
585 | INIT_WORK(work, do_thaw_all); | ||
586 | schedule_work(work); | ||
587 | } | ||
581 | } | 588 | } |
582 | 589 | ||
583 | /** | 590 | /** |