aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ubifs/orphan.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ubifs/orphan.c')
-rw-r--r--fs/ubifs/orphan.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/ubifs/orphan.c b/fs/ubifs/orphan.c
index 8534d9c6492f..ba32da3fe08a 100644
--- a/fs/ubifs/orphan.c
+++ b/fs/ubifs/orphan.c
@@ -126,13 +126,14 @@ void ubifs_delete_orphan(struct ubifs_info *c, ino_t inum)
126 else if (inum > o->inum) 126 else if (inum > o->inum)
127 p = p->rb_right; 127 p = p->rb_right;
128 else { 128 else {
129 if (o->dnext) { 129 if (o->del) {
130 spin_unlock(&c->orphan_lock); 130 spin_unlock(&c->orphan_lock);
131 dbg_gen("deleted twice ino %lu", 131 dbg_gen("deleted twice ino %lu",
132 (unsigned long)inum); 132 (unsigned long)inum);
133 return; 133 return;
134 } 134 }
135 if (o->cmt) { 135 if (o->cmt) {
136 o->del = 1;
136 o->dnext = c->orph_dnext; 137 o->dnext = c->orph_dnext;
137 c->orph_dnext = o; 138 c->orph_dnext = o;
138 spin_unlock(&c->orphan_lock); 139 spin_unlock(&c->orphan_lock);
@@ -447,6 +448,7 @@ static void erase_deleted(struct ubifs_info *c)
447 orphan = dnext; 448 orphan = dnext;
448 dnext = orphan->dnext; 449 dnext = orphan->dnext;
449 ubifs_assert(!orphan->new); 450 ubifs_assert(!orphan->new);
451 ubifs_assert(orphan->del);
450 rb_erase(&orphan->rb, &c->orph_tree); 452 rb_erase(&orphan->rb, &c->orph_tree);
451 list_del(&orphan->list); 453 list_del(&orphan->list);
452 c->tot_orphans -= 1; 454 c->tot_orphans -= 1;
@@ -536,6 +538,7 @@ static int insert_dead_orphan(struct ubifs_info *c, ino_t inum)
536 rb_link_node(&orphan->rb, parent, p); 538 rb_link_node(&orphan->rb, parent, p);
537 rb_insert_color(&orphan->rb, &c->orph_tree); 539 rb_insert_color(&orphan->rb, &c->orph_tree);
538 list_add_tail(&orphan->list, &c->orph_list); 540 list_add_tail(&orphan->list, &c->orph_list);
541 orphan->del = 1;
539 orphan->dnext = c->orph_dnext; 542 orphan->dnext = c->orph_dnext;
540 c->orph_dnext = orphan; 543 c->orph_dnext = orphan;
541 dbg_mnt("ino %lu, new %d, tot %d", (unsigned long)inum, 544 dbg_mnt("ino %lu, new %d, tot %d", (unsigned long)inum,