From 85519985b4fbb70d26c176b88b32f17c3eb365dd Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Wed, 8 Apr 2009 13:44:08 +0200 Subject: [PATCH] --- yaml --- r: 143329 b: refs/heads/master c: 053c525fcf976810f023d96472f414c0d5e6339b h: refs/heads/master i: 143327: be3d45740204678069b1c2db8050ce26f7c32f3f v: v3 --- [refs] | 2 +- trunk/fs/buffer.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index e7ad3da27367..26ea989ce486 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 329007ce25d56fc7113df7b4828d607806d8bc21 +refs/heads/master: 053c525fcf976810f023d96472f414c0d5e6339b diff --git a/trunk/fs/buffer.c b/trunk/fs/buffer.c index 13edf7ad3ff1..ff8bb1f2333a 100644 --- a/trunk/fs/buffer.c +++ b/trunk/fs/buffer.c @@ -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]; @@ -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"); } @@ -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); + } } /**