summaryrefslogtreecommitdiff
path: root/libbcachefs/alloc.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2017-05-12 18:45:15 -0800
committerKent Overstreet <kent.overstreet@gmail.com>2017-05-12 23:14:24 -0800
commit565b4a74d6c25c78b0d2b82d9529595fc6269308 (patch)
tree3e4440a60c5f8519352ce5b6c587a7d1a79c4655 /libbcachefs/alloc.c
parenta588eb0d9e30dffa4b319a4715c1454ee1d911f1 (diff)
Update bcachefs sources to 14e9ac5016 bcachefs: btree_iter fastpath
Diffstat (limited to 'libbcachefs/alloc.c')
-rw-r--r--libbcachefs/alloc.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libbcachefs/alloc.c b/libbcachefs/alloc.c
index a12c5d3e..36dc947c 100644
--- a/libbcachefs/alloc.c
+++ b/libbcachefs/alloc.c
@@ -361,7 +361,7 @@ static int __bch2_alloc_write_key(struct bch_fs *c, struct bch_dev *ca,
struct bucket *g, struct btree_iter *iter,
u64 *journal_seq)
{
- struct bucket_mark m = READ_ONCE(g->mark);
+ struct bucket_mark m;
__BKEY_PADDED(k, DIV_ROUND_UP(sizeof(struct bch_alloc), 8)) alloc_key;
struct bkey_i_alloc *a;
u8 *d;
@@ -374,6 +374,8 @@ static int __bch2_alloc_write_key(struct bch_fs *c, struct bch_dev *ca,
if (ret)
break;
+ /* read mark under btree node lock: */
+ m = READ_ONCE(g->mark);
a = bkey_alloc_init(&alloc_key.k);
a->k.p = iter->pos;
a->v.fields = 0;
@@ -407,8 +409,6 @@ int bch2_alloc_replay_key(struct bch_fs *c, struct bpos pos)
struct btree_iter iter;
int ret;
- lockdep_assert_held(&c->state_lock);
-
if (pos.inode >= c->sb.nr_devices || !c->devs[pos.inode])
return 0;