diff options
Diffstat (limited to 'fs/jffs2/nodelist.c')
-rw-r--r-- | fs/jffs2/nodelist.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/fs/jffs2/nodelist.c b/fs/jffs2/nodelist.c index 7997f526c94b..0cf5e6f11989 100644 --- a/fs/jffs2/nodelist.c +++ b/fs/jffs2/nodelist.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * | 7 | * |
8 | * For licensing information, see the file 'LICENCE' in this directory. | 8 | * For licensing information, see the file 'LICENCE' in this directory. |
9 | * | 9 | * |
10 | * $Id: nodelist.c,v 1.102 2005/07/28 12:45:10 dedekind Exp $ | 10 | * $Id: nodelist.c,v 1.103 2005/07/31 08:20:44 dedekind Exp $ |
11 | * | 11 | * |
12 | */ | 12 | */ |
13 | 13 | ||
@@ -51,6 +51,30 @@ void jffs2_add_fd_to_list(struct jffs2_sb_info *c, struct jffs2_full_dirent *new | |||
51 | *prev = new; | 51 | *prev = new; |
52 | } | 52 | } |
53 | 53 | ||
54 | void jffs2_truncate_fragtree(struct jffs2_sb_info *c, struct rb_root *list, uint32_t size) | ||
55 | { | ||
56 | struct jffs2_node_frag *frag = jffs2_lookup_node_frag(list, size); | ||
57 | |||
58 | JFFS2_DBG_FRAGTREE("truncating fragtree to 0x%08x bytes\n", size); | ||
59 | |||
60 | /* We know frag->ofs <= size. That's what lookup does for us */ | ||
61 | if (frag && frag->ofs != size) { | ||
62 | if (frag->ofs+frag->size >= size) { | ||
63 | JFFS2_DBG_FRAGTREE2("truncating frag 0x%08x-0x%08x\n", frag->ofs, frag->ofs+frag->size); | ||
64 | frag->size = size - frag->ofs; | ||
65 | } | ||
66 | frag = frag_next(frag); | ||
67 | } | ||
68 | while (frag && frag->ofs >= size) { | ||
69 | struct jffs2_node_frag *next = frag_next(frag); | ||
70 | |||
71 | JFFS2_DBG_FRAGTREE("removing frag 0x%08x-0x%08x\n", frag->ofs, frag->ofs+frag->size); | ||
72 | frag_erase(frag, list); | ||
73 | jffs2_obsolete_node_frag(c, frag); | ||
74 | frag = next; | ||
75 | } | ||
76 | } | ||
77 | |||
54 | void jffs2_obsolete_node_frag(struct jffs2_sb_info *c, struct jffs2_node_frag *this) | 78 | void jffs2_obsolete_node_frag(struct jffs2_sb_info *c, struct jffs2_node_frag *this) |
55 | { | 79 | { |
56 | if (this->node) { | 80 | if (this->node) { |