diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-21 10:25:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-21 10:25:43 -0400 |
commit | 05ec7dd8dd5aa42c22a49682e4a51cadd4166b7e (patch) | |
tree | 6370b43c0d8f324aa7421bbb5a647aa04ab5d747 /fs | |
parent | c316ba3b518bc35ce5aef5421135220389f4eb98 (diff) | |
parent | 8046112818b70329e930b1d4557ef0876c1ad2bb (diff) |
Merge git://git.infradead.org/mtd-2.6
* git://git.infradead.org/mtd-2.6: (154 commits)
mtd: cfi_cmdset_0002: use AMD standard command-set with Winbond flash chips
mtd: cfi_cmdset_0002: Fix MODULE_ALIAS and linkage for new 0701 commandset ID
mtd: mxc_nand: Remove duplicate NAND_CMD_RESET case value
mtd: update gfp/slab.h includes
jffs2: Stop triggering block erases from jffs2_write_super()
jffs2: Rename jffs2_erase_pending_trigger() to jffs2_dirty_trigger()
jffs2: Use jffs2_garbage_collect_trigger() to trigger pending erases
jffs2: Require jffs2_garbage_collect_trigger() to be called with lock held
jffs2: Wake GC thread when there are blocks to be erased
jffs2: Erase pending blocks in GC pass, avoid invalid -EIO return
jffs2: Add 'work_done' return value from jffs2_erase_pending_blocks()
mtd: mtdchar: Do not corrupt backing device of device node inode
mtd/maps/pcmciamtd: Fix printk format for ssize_t in debug messages
drivers/mtd: Use kmemdup
mtd: cfi_cmdset_0002: Fix argument order in bootloc warning
mtd: nand: add Toshiba TC58NVG0 device ID
pcmciamtd: add another ID
pcmciamtd: coding style cleanups
pcmciamtd: fixing obvious errors
mtd: chips: add SST39WF160x NOR-flashes
...
Trivial conflicts due to dev_node removal in drivers/mtd/maps/pcmciamtd.c
Diffstat (limited to 'fs')
-rw-r--r-- | fs/jffs2/background.c | 3 | ||||
-rw-r--r-- | fs/jffs2/erase.c | 12 | ||||
-rw-r--r-- | fs/jffs2/fs.c | 10 | ||||
-rw-r--r-- | fs/jffs2/gc.c | 17 | ||||
-rw-r--r-- | fs/jffs2/nodelist.h | 10 | ||||
-rw-r--r-- | fs/jffs2/nodemgmt.c | 28 | ||||
-rw-r--r-- | fs/jffs2/os-linux.h | 3 | ||||
-rw-r--r-- | fs/jffs2/scan.c | 4 | ||||
-rw-r--r-- | fs/jffs2/super.c | 2 | ||||
-rw-r--r-- | fs/jffs2/wbuf.c | 8 |
10 files changed, 65 insertions, 32 deletions
diff --git a/fs/jffs2/background.c b/fs/jffs2/background.c index 3ff50da94789..55f1dde2fa8b 100644 --- a/fs/jffs2/background.c +++ b/fs/jffs2/background.c | |||
@@ -23,10 +23,9 @@ static int jffs2_garbage_collect_thread(void *); | |||
23 | 23 | ||
24 | void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c) | 24 | void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c) |
25 | { | 25 | { |
26 | spin_lock(&c->erase_completion_lock); | 26 | assert_spin_locked(&c->erase_completion_lock); |
27 | if (c->gc_task && jffs2_thread_should_wake(c)) | 27 | if (c->gc_task && jffs2_thread_should_wake(c)) |
28 | send_sig(SIGHUP, c->gc_task, 1); | 28 | send_sig(SIGHUP, c->gc_task, 1); |
29 | spin_unlock(&c->erase_completion_lock); | ||
30 | } | 29 | } |
31 | 30 | ||
32 | /* This must only ever be called when no GC thread is currently running */ | 31 | /* This must only ever be called when no GC thread is currently running */ |
diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c index b47679be118a..6286ad9b00f7 100644 --- a/fs/jffs2/erase.c +++ b/fs/jffs2/erase.c | |||
@@ -103,9 +103,10 @@ static void jffs2_erase_block(struct jffs2_sb_info *c, | |||
103 | jffs2_erase_failed(c, jeb, bad_offset); | 103 | jffs2_erase_failed(c, jeb, bad_offset); |
104 | } | 104 | } |
105 | 105 | ||
106 | void jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count) | 106 | int jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count) |
107 | { | 107 | { |
108 | struct jffs2_eraseblock *jeb; | 108 | struct jffs2_eraseblock *jeb; |
109 | int work_done = 0; | ||
109 | 110 | ||
110 | mutex_lock(&c->erase_free_sem); | 111 | mutex_lock(&c->erase_free_sem); |
111 | 112 | ||
@@ -121,6 +122,7 @@ void jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count) | |||
121 | mutex_unlock(&c->erase_free_sem); | 122 | mutex_unlock(&c->erase_free_sem); |
122 | jffs2_mark_erased_block(c, jeb); | 123 | jffs2_mark_erased_block(c, jeb); |
123 | 124 | ||
125 | work_done++; | ||
124 | if (!--count) { | 126 | if (!--count) { |
125 | D1(printk(KERN_DEBUG "Count reached. jffs2_erase_pending_blocks leaving\n")); | 127 | D1(printk(KERN_DEBUG "Count reached. jffs2_erase_pending_blocks leaving\n")); |
126 | goto done; | 128 | goto done; |
@@ -157,6 +159,7 @@ void jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count) | |||
157 | mutex_unlock(&c->erase_free_sem); | 159 | mutex_unlock(&c->erase_free_sem); |
158 | done: | 160 | done: |
159 | D1(printk(KERN_DEBUG "jffs2_erase_pending_blocks completed\n")); | 161 | D1(printk(KERN_DEBUG "jffs2_erase_pending_blocks completed\n")); |
162 | return work_done; | ||
160 | } | 163 | } |
161 | 164 | ||
162 | static void jffs2_erase_succeeded(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb) | 165 | static void jffs2_erase_succeeded(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb) |
@@ -165,10 +168,11 @@ static void jffs2_erase_succeeded(struct jffs2_sb_info *c, struct jffs2_eraseblo | |||
165 | mutex_lock(&c->erase_free_sem); | 168 | mutex_lock(&c->erase_free_sem); |
166 | spin_lock(&c->erase_completion_lock); | 169 | spin_lock(&c->erase_completion_lock); |
167 | list_move_tail(&jeb->list, &c->erase_complete_list); | 170 | list_move_tail(&jeb->list, &c->erase_complete_list); |
171 | /* Wake the GC thread to mark them clean */ | ||
172 | jffs2_garbage_collect_trigger(c); | ||
168 | spin_unlock(&c->erase_completion_lock); | 173 | spin_unlock(&c->erase_completion_lock); |
169 | mutex_unlock(&c->erase_free_sem); | 174 | mutex_unlock(&c->erase_free_sem); |
170 | /* Ensure that kupdated calls us again to mark them clean */ | 175 | wake_up(&c->erase_wait); |
171 | jffs2_erase_pending_trigger(c); | ||
172 | } | 176 | } |
173 | 177 | ||
174 | static void jffs2_erase_failed(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, uint32_t bad_offset) | 178 | static void jffs2_erase_failed(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb, uint32_t bad_offset) |
@@ -487,9 +491,9 @@ filebad: | |||
487 | 491 | ||
488 | refile: | 492 | refile: |
489 | /* Stick it back on the list from whence it came and come back later */ | 493 | /* Stick it back on the list from whence it came and come back later */ |
490 | jffs2_erase_pending_trigger(c); | ||
491 | mutex_lock(&c->erase_free_sem); | 494 | mutex_lock(&c->erase_free_sem); |
492 | spin_lock(&c->erase_completion_lock); | 495 | spin_lock(&c->erase_completion_lock); |
496 | jffs2_garbage_collect_trigger(c); | ||
493 | list_move(&jeb->list, &c->erase_complete_list); | 497 | list_move(&jeb->list, &c->erase_complete_list); |
494 | spin_unlock(&c->erase_completion_lock); | 498 | spin_unlock(&c->erase_completion_lock); |
495 | mutex_unlock(&c->erase_free_sem); | 499 | mutex_unlock(&c->erase_free_sem); |
diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c index 3451a81b2142..86e0821fc989 100644 --- a/fs/jffs2/fs.c +++ b/fs/jffs2/fs.c | |||
@@ -313,8 +313,8 @@ struct inode *jffs2_iget(struct super_block *sb, unsigned long ino) | |||
313 | case S_IFBLK: | 313 | case S_IFBLK: |
314 | case S_IFCHR: | 314 | case S_IFCHR: |
315 | /* Read the device numbers from the media */ | 315 | /* Read the device numbers from the media */ |
316 | if (f->metadata->size != sizeof(jdev.old) && | 316 | if (f->metadata->size != sizeof(jdev.old_id) && |
317 | f->metadata->size != sizeof(jdev.new)) { | 317 | f->metadata->size != sizeof(jdev.new_id)) { |
318 | printk(KERN_NOTICE "Device node has strange size %d\n", f->metadata->size); | 318 | printk(KERN_NOTICE "Device node has strange size %d\n", f->metadata->size); |
319 | goto error_io; | 319 | goto error_io; |
320 | } | 320 | } |
@@ -325,10 +325,10 @@ struct inode *jffs2_iget(struct super_block *sb, unsigned long ino) | |||
325 | printk(KERN_NOTICE "Read device numbers for inode %lu failed\n", (unsigned long)inode->i_ino); | 325 | printk(KERN_NOTICE "Read device numbers for inode %lu failed\n", (unsigned long)inode->i_ino); |
326 | goto error; | 326 | goto error; |
327 | } | 327 | } |
328 | if (f->metadata->size == sizeof(jdev.old)) | 328 | if (f->metadata->size == sizeof(jdev.old_id)) |
329 | rdev = old_decode_dev(je16_to_cpu(jdev.old)); | 329 | rdev = old_decode_dev(je16_to_cpu(jdev.old_id)); |
330 | else | 330 | else |
331 | rdev = new_decode_dev(je32_to_cpu(jdev.new)); | 331 | rdev = new_decode_dev(je32_to_cpu(jdev.new_id)); |
332 | 332 | ||
333 | case S_IFSOCK: | 333 | case S_IFSOCK: |
334 | case S_IFIFO: | 334 | case S_IFIFO: |
diff --git a/fs/jffs2/gc.c b/fs/jffs2/gc.c index 3b6f2fa12cff..f5e96bd656e8 100644 --- a/fs/jffs2/gc.c +++ b/fs/jffs2/gc.c | |||
@@ -214,6 +214,19 @@ int jffs2_garbage_collect_pass(struct jffs2_sb_info *c) | |||
214 | return ret; | 214 | return ret; |
215 | } | 215 | } |
216 | 216 | ||
217 | /* If there are any blocks which need erasing, erase them now */ | ||
218 | if (!list_empty(&c->erase_complete_list) || | ||
219 | !list_empty(&c->erase_pending_list)) { | ||
220 | spin_unlock(&c->erase_completion_lock); | ||
221 | D1(printk(KERN_DEBUG "jffs2_garbage_collect_pass() erasing pending blocks\n")); | ||
222 | if (jffs2_erase_pending_blocks(c, 1)) { | ||
223 | mutex_unlock(&c->alloc_sem); | ||
224 | return 0; | ||
225 | } | ||
226 | D1(printk(KERN_DEBUG "No progress from erasing blocks; doing GC anyway\n")); | ||
227 | spin_lock(&c->erase_completion_lock); | ||
228 | } | ||
229 | |||
217 | /* First, work out which block we're garbage-collecting */ | 230 | /* First, work out which block we're garbage-collecting */ |
218 | jeb = c->gcblock; | 231 | jeb = c->gcblock; |
219 | 232 | ||
@@ -222,7 +235,7 @@ int jffs2_garbage_collect_pass(struct jffs2_sb_info *c) | |||
222 | 235 | ||
223 | if (!jeb) { | 236 | if (!jeb) { |
224 | /* Couldn't find a free block. But maybe we can just erase one and make 'progress'? */ | 237 | /* Couldn't find a free block. But maybe we can just erase one and make 'progress'? */ |
225 | if (!list_empty(&c->erase_pending_list)) { | 238 | if (c->nr_erasing_blocks) { |
226 | spin_unlock(&c->erase_completion_lock); | 239 | spin_unlock(&c->erase_completion_lock); |
227 | mutex_unlock(&c->alloc_sem); | 240 | mutex_unlock(&c->alloc_sem); |
228 | return -EAGAIN; | 241 | return -EAGAIN; |
@@ -435,7 +448,7 @@ int jffs2_garbage_collect_pass(struct jffs2_sb_info *c) | |||
435 | list_add_tail(&c->gcblock->list, &c->erase_pending_list); | 448 | list_add_tail(&c->gcblock->list, &c->erase_pending_list); |
436 | c->gcblock = NULL; | 449 | c->gcblock = NULL; |
437 | c->nr_erasing_blocks++; | 450 | c->nr_erasing_blocks++; |
438 | jffs2_erase_pending_trigger(c); | 451 | jffs2_garbage_collect_trigger(c); |
439 | } | 452 | } |
440 | spin_unlock(&c->erase_completion_lock); | 453 | spin_unlock(&c->erase_completion_lock); |
441 | 454 | ||
diff --git a/fs/jffs2/nodelist.h b/fs/jffs2/nodelist.h index 507ed6ec1847..a881a42f19e3 100644 --- a/fs/jffs2/nodelist.h +++ b/fs/jffs2/nodelist.h | |||
@@ -312,11 +312,11 @@ static inline int jffs2_blocks_use_vmalloc(struct jffs2_sb_info *c) | |||
312 | static inline int jffs2_encode_dev(union jffs2_device_node *jdev, dev_t rdev) | 312 | static inline int jffs2_encode_dev(union jffs2_device_node *jdev, dev_t rdev) |
313 | { | 313 | { |
314 | if (old_valid_dev(rdev)) { | 314 | if (old_valid_dev(rdev)) { |
315 | jdev->old = cpu_to_je16(old_encode_dev(rdev)); | 315 | jdev->old_id = cpu_to_je16(old_encode_dev(rdev)); |
316 | return sizeof(jdev->old); | 316 | return sizeof(jdev->old_id); |
317 | } else { | 317 | } else { |
318 | jdev->new = cpu_to_je32(new_encode_dev(rdev)); | 318 | jdev->new_id = cpu_to_je32(new_encode_dev(rdev)); |
319 | return sizeof(jdev->new); | 319 | return sizeof(jdev->new_id); |
320 | } | 320 | } |
321 | } | 321 | } |
322 | 322 | ||
@@ -464,7 +464,7 @@ int jffs2_scan_dirty_space(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb | |||
464 | int jffs2_do_mount_fs(struct jffs2_sb_info *c); | 464 | int jffs2_do_mount_fs(struct jffs2_sb_info *c); |
465 | 465 | ||
466 | /* erase.c */ | 466 | /* erase.c */ |
467 | void jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count); | 467 | int jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count); |
468 | void jffs2_free_jeb_node_refs(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb); | 468 | void jffs2_free_jeb_node_refs(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb); |
469 | 469 | ||
470 | #ifdef CONFIG_JFFS2_FS_WRITEBUFFER | 470 | #ifdef CONFIG_JFFS2_FS_WRITEBUFFER |
diff --git a/fs/jffs2/nodemgmt.c b/fs/jffs2/nodemgmt.c index 191359dde4e1..694aa5b03505 100644 --- a/fs/jffs2/nodemgmt.c +++ b/fs/jffs2/nodemgmt.c | |||
@@ -116,9 +116,21 @@ int jffs2_reserve_space(struct jffs2_sb_info *c, uint32_t minsize, | |||
116 | 116 | ||
117 | ret = jffs2_garbage_collect_pass(c); | 117 | ret = jffs2_garbage_collect_pass(c); |
118 | 118 | ||
119 | if (ret == -EAGAIN) | 119 | if (ret == -EAGAIN) { |
120 | jffs2_erase_pending_blocks(c, 1); | 120 | spin_lock(&c->erase_completion_lock); |
121 | else if (ret) | 121 | if (c->nr_erasing_blocks && |
122 | list_empty(&c->erase_pending_list) && | ||
123 | list_empty(&c->erase_complete_list)) { | ||
124 | DECLARE_WAITQUEUE(wait, current); | ||
125 | set_current_state(TASK_UNINTERRUPTIBLE); | ||
126 | add_wait_queue(&c->erase_wait, &wait); | ||
127 | D1(printk(KERN_DEBUG "%s waiting for erase to complete\n", __func__)); | ||
128 | spin_unlock(&c->erase_completion_lock); | ||
129 | |||
130 | schedule(); | ||
131 | } else | ||
132 | spin_unlock(&c->erase_completion_lock); | ||
133 | } else if (ret) | ||
122 | return ret; | 134 | return ret; |
123 | 135 | ||
124 | cond_resched(); | 136 | cond_resched(); |
@@ -217,7 +229,7 @@ static int jffs2_find_nextblock(struct jffs2_sb_info *c) | |||
217 | ejeb = list_entry(c->erasable_list.next, struct jffs2_eraseblock, list); | 229 | ejeb = list_entry(c->erasable_list.next, struct jffs2_eraseblock, list); |
218 | list_move_tail(&ejeb->list, &c->erase_pending_list); | 230 | list_move_tail(&ejeb->list, &c->erase_pending_list); |
219 | c->nr_erasing_blocks++; | 231 | c->nr_erasing_blocks++; |
220 | jffs2_erase_pending_trigger(c); | 232 | jffs2_garbage_collect_trigger(c); |
221 | D1(printk(KERN_DEBUG "jffs2_find_nextblock: Triggering erase of erasable block at 0x%08x\n", | 233 | D1(printk(KERN_DEBUG "jffs2_find_nextblock: Triggering erase of erasable block at 0x%08x\n", |
222 | ejeb->offset)); | 234 | ejeb->offset)); |
223 | } | 235 | } |
@@ -469,7 +481,9 @@ struct jffs2_raw_node_ref *jffs2_add_physical_node_ref(struct jffs2_sb_info *c, | |||
469 | void jffs2_complete_reservation(struct jffs2_sb_info *c) | 481 | void jffs2_complete_reservation(struct jffs2_sb_info *c) |
470 | { | 482 | { |
471 | D1(printk(KERN_DEBUG "jffs2_complete_reservation()\n")); | 483 | D1(printk(KERN_DEBUG "jffs2_complete_reservation()\n")); |
484 | spin_lock(&c->erase_completion_lock); | ||
472 | jffs2_garbage_collect_trigger(c); | 485 | jffs2_garbage_collect_trigger(c); |
486 | spin_unlock(&c->erase_completion_lock); | ||
473 | mutex_unlock(&c->alloc_sem); | 487 | mutex_unlock(&c->alloc_sem); |
474 | } | 488 | } |
475 | 489 | ||
@@ -611,7 +625,7 @@ void jffs2_mark_node_obsolete(struct jffs2_sb_info *c, struct jffs2_raw_node_ref | |||
611 | D1(printk(KERN_DEBUG "...and adding to erase_pending_list\n")); | 625 | D1(printk(KERN_DEBUG "...and adding to erase_pending_list\n")); |
612 | list_add_tail(&jeb->list, &c->erase_pending_list); | 626 | list_add_tail(&jeb->list, &c->erase_pending_list); |
613 | c->nr_erasing_blocks++; | 627 | c->nr_erasing_blocks++; |
614 | jffs2_erase_pending_trigger(c); | 628 | jffs2_garbage_collect_trigger(c); |
615 | } else { | 629 | } else { |
616 | /* Sometimes, however, we leave it elsewhere so it doesn't get | 630 | /* Sometimes, however, we leave it elsewhere so it doesn't get |
617 | immediately reused, and we spread the load a bit. */ | 631 | immediately reused, and we spread the load a bit. */ |
@@ -732,6 +746,10 @@ int jffs2_thread_should_wake(struct jffs2_sb_info *c) | |||
732 | int nr_very_dirty = 0; | 746 | int nr_very_dirty = 0; |
733 | struct jffs2_eraseblock *jeb; | 747 | struct jffs2_eraseblock *jeb; |
734 | 748 | ||
749 | if (!list_empty(&c->erase_complete_list) || | ||
750 | !list_empty(&c->erase_pending_list)) | ||
751 | return 1; | ||
752 | |||
735 | if (c->unchecked_size) { | 753 | if (c->unchecked_size) { |
736 | D1(printk(KERN_DEBUG "jffs2_thread_should_wake(): unchecked_size %d, checked_ino #%d\n", | 754 | D1(printk(KERN_DEBUG "jffs2_thread_should_wake(): unchecked_size %d, checked_ino #%d\n", |
737 | c->unchecked_size, c->checked_ino)); | 755 | c->unchecked_size, c->checked_ino)); |
diff --git a/fs/jffs2/os-linux.h b/fs/jffs2/os-linux.h index a7f03b7ebcb3..035a767f958b 100644 --- a/fs/jffs2/os-linux.h +++ b/fs/jffs2/os-linux.h | |||
@@ -140,8 +140,7 @@ void jffs2_nor_wbuf_flash_cleanup(struct jffs2_sb_info *c); | |||
140 | 140 | ||
141 | #endif /* WRITEBUFFER */ | 141 | #endif /* WRITEBUFFER */ |
142 | 142 | ||
143 | /* erase.c */ | 143 | static inline void jffs2_dirty_trigger(struct jffs2_sb_info *c) |
144 | static inline void jffs2_erase_pending_trigger(struct jffs2_sb_info *c) | ||
145 | { | 144 | { |
146 | OFNI_BS_2SFFJ(c)->s_dirt = 1; | 145 | OFNI_BS_2SFFJ(c)->s_dirt = 1; |
147 | } | 146 | } |
diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c index 696686cc206e..46f870d1cc36 100644 --- a/fs/jffs2/scan.c +++ b/fs/jffs2/scan.c | |||
@@ -260,7 +260,9 @@ int jffs2_scan_medium(struct jffs2_sb_info *c) | |||
260 | ret = -EIO; | 260 | ret = -EIO; |
261 | goto out; | 261 | goto out; |
262 | } | 262 | } |
263 | jffs2_erase_pending_trigger(c); | 263 | spin_lock(&c->erase_completion_lock); |
264 | jffs2_garbage_collect_trigger(c); | ||
265 | spin_unlock(&c->erase_completion_lock); | ||
264 | } | 266 | } |
265 | ret = 0; | 267 | ret = 0; |
266 | out: | 268 | out: |
diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c index 9a80e8e595d0..511e2d609d12 100644 --- a/fs/jffs2/super.c +++ b/fs/jffs2/super.c | |||
@@ -63,8 +63,6 @@ static void jffs2_write_super(struct super_block *sb) | |||
63 | 63 | ||
64 | if (!(sb->s_flags & MS_RDONLY)) { | 64 | if (!(sb->s_flags & MS_RDONLY)) { |
65 | D1(printk(KERN_DEBUG "jffs2_write_super()\n")); | 65 | D1(printk(KERN_DEBUG "jffs2_write_super()\n")); |
66 | jffs2_garbage_collect_trigger(c); | ||
67 | jffs2_erase_pending_blocks(c, 0); | ||
68 | jffs2_flush_wbuf_gc(c, 0); | 66 | jffs2_flush_wbuf_gc(c, 0); |
69 | } | 67 | } |
70 | 68 | ||
diff --git a/fs/jffs2/wbuf.c b/fs/jffs2/wbuf.c index 5ef7bac265e5..07ee1546b2fa 100644 --- a/fs/jffs2/wbuf.c +++ b/fs/jffs2/wbuf.c | |||
@@ -84,7 +84,7 @@ static void jffs2_wbuf_dirties_inode(struct jffs2_sb_info *c, uint32_t ino) | |||
84 | struct jffs2_inodirty *new; | 84 | struct jffs2_inodirty *new; |
85 | 85 | ||
86 | /* Mark the superblock dirty so that kupdated will flush... */ | 86 | /* Mark the superblock dirty so that kupdated will flush... */ |
87 | jffs2_erase_pending_trigger(c); | 87 | jffs2_dirty_trigger(c); |
88 | 88 | ||
89 | if (jffs2_wbuf_pending_for_ino(c, ino)) | 89 | if (jffs2_wbuf_pending_for_ino(c, ino)) |
90 | return; | 90 | return; |
@@ -121,7 +121,7 @@ static inline void jffs2_refile_wbuf_blocks(struct jffs2_sb_info *c) | |||
121 | D1(printk(KERN_DEBUG "...and adding to erase_pending_list\n")); | 121 | D1(printk(KERN_DEBUG "...and adding to erase_pending_list\n")); |
122 | list_add_tail(&jeb->list, &c->erase_pending_list); | 122 | list_add_tail(&jeb->list, &c->erase_pending_list); |
123 | c->nr_erasing_blocks++; | 123 | c->nr_erasing_blocks++; |
124 | jffs2_erase_pending_trigger(c); | 124 | jffs2_garbage_collect_trigger(c); |
125 | } else { | 125 | } else { |
126 | /* Sometimes, however, we leave it elsewhere so it doesn't get | 126 | /* Sometimes, however, we leave it elsewhere so it doesn't get |
127 | immediately reused, and we spread the load a bit. */ | 127 | immediately reused, and we spread the load a bit. */ |
@@ -152,7 +152,7 @@ static void jffs2_block_refile(struct jffs2_sb_info *c, struct jffs2_eraseblock | |||
152 | D1(printk("Refiling block at %08x to erase_pending_list\n", jeb->offset)); | 152 | D1(printk("Refiling block at %08x to erase_pending_list\n", jeb->offset)); |
153 | list_add(&jeb->list, &c->erase_pending_list); | 153 | list_add(&jeb->list, &c->erase_pending_list); |
154 | c->nr_erasing_blocks++; | 154 | c->nr_erasing_blocks++; |
155 | jffs2_erase_pending_trigger(c); | 155 | jffs2_garbage_collect_trigger(c); |
156 | } | 156 | } |
157 | 157 | ||
158 | if (!jffs2_prealloc_raw_node_refs(c, jeb, 1)) { | 158 | if (!jffs2_prealloc_raw_node_refs(c, jeb, 1)) { |
@@ -543,7 +543,7 @@ static void jffs2_wbuf_recover(struct jffs2_sb_info *c) | |||
543 | D1(printk(KERN_DEBUG "Failing block at %08x is now empty. Moving to erase_pending_list\n", jeb->offset)); | 543 | D1(printk(KERN_DEBUG "Failing block at %08x is now empty. Moving to erase_pending_list\n", jeb->offset)); |
544 | list_move(&jeb->list, &c->erase_pending_list); | 544 | list_move(&jeb->list, &c->erase_pending_list); |
545 | c->nr_erasing_blocks++; | 545 | c->nr_erasing_blocks++; |
546 | jffs2_erase_pending_trigger(c); | 546 | jffs2_garbage_collect_trigger(c); |
547 | } | 547 | } |
548 | 548 | ||
549 | jffs2_dbg_acct_sanity_check_nolock(c, jeb); | 549 | jffs2_dbg_acct_sanity_check_nolock(c, jeb); |