diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-15 12:03:47 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-15 12:03:47 -0400 |
commit | 23da64b4714812b66ecf010e7dfb3ed1bf2eda69 (patch) | |
tree | e2736bebc916cb540b0da83296d62b342612ecbd /fs/buffer.c | |
parent | a23c218bd36e11120daf18e00a91d5dc20e288e6 (diff) | |
parent | a36e71f996e25d6213f57951f7ae1874086ec57e (diff) |
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block: (28 commits)
cfq-iosched: add close cooperator code
cfq-iosched: log responsible 'cfqq' in idle timer arm
cfq-iosched: tweak kick logic a bit more
cfq-iosched: no need to save interrupts in cfq_kick_queue()
brd: fix cacheflushing
brd: support barriers
swap: Remove code handling bio_alloc failure with __GFP_WAIT
gfs2: Remove code handling bio_alloc failure with __GFP_WAIT
ext4: Remove code handling bio_alloc failure with __GFP_WAIT
dio: Remove code handling bio_alloc failure with __GFP_WAIT
block: Remove code handling bio_alloc failure with __GFP_WAIT
bio: add documentation to bio_alloc()
splice: add helpers for locking pipe inode
splice: remove generic_file_splice_write_nolock()
ocfs2: fix i_mutex locking in ocfs2_splice_to_file()
splice: fix i_mutex locking in generic_splice_write()
splice: remove i_mutex locking in splice_from_pipe()
splice: split up __splice_from_pipe()
block: fix SG_IO to return a proper error value
cfq-iosched: don't delay queue kick for a merged request
...
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 | /** |