mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-02-23 00:00:02 +03:00
Update bcachefs sources to d0625a4418 bcachefs: Fix creation of lost+found
This commit is contained in:
parent
7f3557f57e
commit
cec69929f0
@ -1 +1 @@
|
|||||||
7e03c1ab0ef2e3148ba70656eab67471c85a0419
|
d0625a441839f54b9600783c3a6b90db6f197cad
|
||||||
|
@ -1040,10 +1040,11 @@ next:
|
|||||||
old_nodes[i] = new_nodes[i];
|
old_nodes[i] = new_nodes[i];
|
||||||
} else {
|
} else {
|
||||||
old_nodes[i] = NULL;
|
old_nodes[i] = NULL;
|
||||||
if (new_nodes[i])
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < nr_new_nodes; i++)
|
||||||
six_unlock_intent(&new_nodes[i]->lock);
|
six_unlock_intent(&new_nodes[i]->lock);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bch2_btree_update_done(as);
|
bch2_btree_update_done(as);
|
||||||
bch2_keylist_free(&keylist, NULL);
|
bch2_keylist_free(&keylist, NULL);
|
||||||
|
@ -833,8 +833,6 @@ void bch2_btree_iter_node_replace(struct btree_iter *iter, struct btree *b)
|
|||||||
|
|
||||||
btree_iter_node_set(linked, b);
|
btree_iter_node_set(linked, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
six_unlock_intent(&b->lock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void bch2_btree_iter_node_drop(struct btree_iter *iter, struct btree *b)
|
void bch2_btree_iter_node_drop(struct btree_iter *iter, struct btree *b)
|
||||||
|
@ -1446,8 +1446,20 @@ static void btree_split(struct btree_update *as, struct btree *b,
|
|||||||
bch2_btree_iter_node_replace(iter, n2);
|
bch2_btree_iter_node_replace(iter, n2);
|
||||||
bch2_btree_iter_node_replace(iter, n1);
|
bch2_btree_iter_node_replace(iter, n1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The old node must be freed (in memory) _before_ unlocking the new
|
||||||
|
* nodes - else another thread could re-acquire a read lock on the old
|
||||||
|
* node after another thread has locked and updated the new node, thus
|
||||||
|
* seeing stale data:
|
||||||
|
*/
|
||||||
bch2_btree_node_free_inmem(c, b, iter);
|
bch2_btree_node_free_inmem(c, b, iter);
|
||||||
|
|
||||||
|
if (n3)
|
||||||
|
six_unlock_intent(&n3->lock);
|
||||||
|
if (n2)
|
||||||
|
six_unlock_intent(&n2->lock);
|
||||||
|
six_unlock_intent(&n1->lock);
|
||||||
|
|
||||||
bch2_btree_trans_verify_locks(iter->trans);
|
bch2_btree_trans_verify_locks(iter->trans);
|
||||||
|
|
||||||
bch2_time_stats_update(&c->times[BCH_TIME_btree_node_split],
|
bch2_time_stats_update(&c->times[BCH_TIME_btree_node_split],
|
||||||
@ -1761,6 +1773,8 @@ retry:
|
|||||||
bch2_btree_node_free_inmem(c, b, iter);
|
bch2_btree_node_free_inmem(c, b, iter);
|
||||||
bch2_btree_node_free_inmem(c, m, iter);
|
bch2_btree_node_free_inmem(c, m, iter);
|
||||||
|
|
||||||
|
six_unlock_intent(&n->lock);
|
||||||
|
|
||||||
bch2_btree_update_done(as);
|
bch2_btree_update_done(as);
|
||||||
|
|
||||||
if (!(flags & BTREE_INSERT_GC_LOCK_HELD))
|
if (!(flags & BTREE_INSERT_GC_LOCK_HELD))
|
||||||
@ -1855,6 +1869,7 @@ static int __btree_node_rewrite(struct bch_fs *c, struct btree_iter *iter,
|
|||||||
bch2_btree_iter_node_drop(iter, b);
|
bch2_btree_iter_node_drop(iter, b);
|
||||||
bch2_btree_iter_node_replace(iter, n);
|
bch2_btree_iter_node_replace(iter, n);
|
||||||
bch2_btree_node_free_inmem(c, b, iter);
|
bch2_btree_node_free_inmem(c, b, iter);
|
||||||
|
six_unlock_intent(&n->lock);
|
||||||
|
|
||||||
bch2_btree_update_done(as);
|
bch2_btree_update_done(as);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1011,7 +1011,7 @@ int bch2_fs_initialize(struct bch_fs *c)
|
|||||||
bch2_create_trans(&trans, BCACHEFS_ROOT_INO,
|
bch2_create_trans(&trans, BCACHEFS_ROOT_INO,
|
||||||
&root_inode, &lostfound_inode,
|
&root_inode, &lostfound_inode,
|
||||||
&lostfound,
|
&lostfound,
|
||||||
0, 0, 0755, 0,
|
0, 0, S_IFDIR|0755, 0,
|
||||||
NULL, NULL));
|
NULL, NULL));
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err;
|
goto err;
|
||||||
|
Loading…
Reference in New Issue
Block a user