|
@@ -132,7 +132,7 @@ void ubifs_delete_orphan(struct ubifs_info *c, ino_t inum)
|
|
|
(unsigned long)inum);
|
|
|
return;
|
|
|
}
|
|
|
- if (o->cnext) {
|
|
|
+ if (o->cmt) {
|
|
|
o->dnext = c->orph_dnext;
|
|
|
c->orph_dnext = o;
|
|
|
spin_unlock(&c->orphan_lock);
|
|
@@ -172,7 +172,9 @@ int ubifs_orphan_start_commit(struct ubifs_info *c)
|
|
|
last = &c->orph_cnext;
|
|
|
list_for_each_entry(orphan, &c->orph_new, new_list) {
|
|
|
ubifs_assert(orphan->new);
|
|
|
+ ubifs_assert(!orphan->cmt);
|
|
|
orphan->new = 0;
|
|
|
+ orphan->cmt = 1;
|
|
|
*last = orphan;
|
|
|
last = &orphan->cnext;
|
|
|
}
|
|
@@ -299,7 +301,9 @@ static int write_orph_node(struct ubifs_info *c, int atomic)
|
|
|
cnext = c->orph_cnext;
|
|
|
for (i = 0; i < cnt; i++) {
|
|
|
orphan = cnext;
|
|
|
+ ubifs_assert(orphan->cmt);
|
|
|
orph->inos[i] = cpu_to_le64(orphan->inum);
|
|
|
+ orphan->cmt = 0;
|
|
|
cnext = orphan->cnext;
|
|
|
orphan->cnext = NULL;
|
|
|
}
|
|
@@ -378,6 +382,7 @@ static int consolidate(struct ubifs_info *c)
|
|
|
list_for_each_entry(orphan, &c->orph_list, list) {
|
|
|
if (orphan->new)
|
|
|
continue;
|
|
|
+ orphan->cmt = 1;
|
|
|
*last = orphan;
|
|
|
last = &orphan->cnext;
|
|
|
cnt += 1;
|