aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/buffer.c11
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
550void do_thaw_all(unsigned long unused) 550void 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 */
578void emergency_thaw_all(void) 579void 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/**