Files
linux/fs
David Woodhouse 014b164e13 [JFFS2] Fix free space leak with in-band cleanmarkers
We were accounting for the cleanmarker by calling jffs2_link_node_ref()
(without locking!), which adjusted both superblock and per-eraseblock
accounting, subtracting the size of the cleanmarker from {jeb,c}->free_size
and adding it to {jeb,c}->used_size.

But only _then_ were we adding the size of the newly-erased block back
to the superblock counts, and we were adding each of jeb->{free,used}_size
to the corresponding superblock counts. Thus, the size of the cleanmarker
was effectively subtracted from the superblock's free_size _twice_.

Fix this, by always adding a full eraseblock size to c->free_size when
we've erased a block. And call jffs2_link_node_ref() under the proper
lock, while we're at it.

Thanks to Alexander Yurchenko and/or Damir Shayhutdinov for (almost)
pinpointing the problem.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2008-04-22 23:54:38 +01:00
..
2008-02-08 09:22:39 -08:00
2008-02-08 09:22:39 -08:00
2008-02-08 09:22:40 -08:00
2008-02-14 21:13:33 -08:00
2008-02-08 09:22:40 -08:00
2008-03-30 14:20:23 -07:00
2008-02-14 21:13:33 -08:00
2008-02-14 21:13:33 -08:00
2008-03-04 14:47:06 -08:00
2008-02-08 09:22:40 -08:00
2007-10-22 08:13:21 -07:00
2008-02-23 17:12:13 -08:00
2008-04-18 08:36:09 +01:00
2008-02-08 09:22:40 -08:00
2008-03-19 06:42:18 -04:00
2008-03-30 14:18:41 -07:00
2008-03-30 14:18:41 -07:00
2007-10-18 14:37:31 -07:00
2008-03-30 14:18:41 -07:00
2008-02-13 16:21:20 -08:00
2008-04-11 08:06:43 -07:00
2008-03-04 16:35:10 -08:00
2008-01-30 13:31:46 +01:00
2008-02-05 09:44:07 -08:00
2008-02-14 21:13:33 -08:00
2008-02-06 10:41:07 -08:00
2008-01-30 13:31:46 +01:00
2008-02-14 21:13:33 -08:00
2008-03-19 06:54:05 -04:00
2008-04-21 22:15:06 +00:00
2008-02-14 21:13:33 -08:00
2008-02-05 09:44:07 -08:00