]> git.sesse.net Git - bcachefs-tools-debian/commitdiff
Update bcachefs sources to f385d13bf8 fixup! bcachefs: Fix bch2_extent_can_insert...
authorKent Overstreet <kent.overstreet@gmail.com>
Thu, 2 Jul 2020 17:29:45 +0000 (13:29 -0400)
committerKent Overstreet <kent.overstreet@gmail.com>
Thu, 2 Jul 2020 17:29:45 +0000 (13:29 -0400)
.bcachefs_revision
libbcachefs/btree_update_leaf.c
libbcachefs/fs-io.c

index 0caa82612c3a0e5f8c35f6b460455771bb903290..ac1155759596214e697adca7dc0f9f8b8aaa8922 100644 (file)
@@ -1 +1 @@
-9f34144308fcabb5dcf718406a8c90795e6fd481
+f385d13bf8510277eedcc24de4a6a3c3bf8f334b
index 6e9688d0bb77324d10e6834fb4c42a0aebc8738e..57c0311b184f616ed490af6447cfe38f3ccc2c5a 100644 (file)
@@ -265,11 +265,10 @@ static enum btree_insert_ret
 btree_key_can_insert(struct btree_trans *trans,
                     struct btree_iter *iter,
                     struct bkey_i *insert,
-                    unsigned *u64s)
+                    unsigned u64s)
 {
        struct bch_fs *c = trans->c;
        struct btree *b = iter_l(iter)->b;
-       static enum btree_insert_ret ret;
 
        if (unlikely(btree_node_fake(b)))
                return BTREE_INSERT_BTREE_NODE_FULL;
@@ -281,13 +280,7 @@ btree_key_can_insert(struct btree_trans *trans,
        if (unlikely(btree_node_old_extent_overwrite(b)))
                return BTREE_INSERT_BTREE_NODE_FULL;
 
-       ret = !btree_iter_is_extents(iter)
-               ? BTREE_INSERT_OK
-               : bch2_extent_can_insert(trans, iter, insert);
-       if (ret)
-               return ret;
-
-       if (*u64s > bch_btree_keys_u64s_remaining(c, b))
+       if (unlikely(u64s > bch_btree_keys_u64s_remaining(c, b)))
                return BTREE_INSERT_BTREE_NODE_FULL;
 
        return BTREE_INSERT_OK;
@@ -297,7 +290,7 @@ static enum btree_insert_ret
 btree_key_can_insert_cached(struct btree_trans *trans,
                            struct btree_iter *iter,
                            struct bkey_i *insert,
-                           unsigned *u64s)
+                           unsigned u64s)
 {
        struct bkey_cached *ck = (void *) iter->l[0].b;
        unsigned new_u64s;
@@ -305,10 +298,10 @@ btree_key_can_insert_cached(struct btree_trans *trans,
 
        BUG_ON(iter->level);
 
-       if (*u64s <= ck->u64s)
+       if (u64s <= ck->u64s)
                return BTREE_INSERT_OK;
 
-       new_u64s        = roundup_pow_of_two(*u64s);
+       new_u64s        = roundup_pow_of_two(u64s);
        new_k           = krealloc(ck->k, new_u64s * sizeof(u64), GFP_NOFS);
        if (!new_k)
                return -ENOMEM;
@@ -414,8 +407,8 @@ bch2_trans_commit_write_locked(struct btree_trans *trans,
 
                u64s += i->k->k.u64s;
                ret = btree_iter_type(i->iter) != BTREE_ITER_CACHED
-                       ? btree_key_can_insert(trans, i->iter, i->k, &u64s)
-                       : btree_key_can_insert_cached(trans, i->iter, i->k, &u64s);
+                       ? btree_key_can_insert(trans, i->iter, i->k, u64s)
+                       : btree_key_can_insert_cached(trans, i->iter, i->k, u64s);
                if (ret) {
                        *stopped_at = i;
                        return ret;
@@ -733,6 +726,11 @@ static int extent_update_to_keys(struct btree_trans *trans,
                                 struct bkey_i *insert)
 {
        struct btree_iter *iter;
+       int ret;
+
+       ret = bch2_extent_can_insert(trans, orig_iter, insert);
+       if (ret)
+               return ret;
 
        if (bkey_deleted(&insert->k))
                return 0;
index 162aa55d5b202793f22d302ea46a1c1b9ba17430..ec78e7b5237542335a711fab889d05d70d175f60 100644 (file)
@@ -1817,22 +1817,12 @@ static long bch2_dio_write_loop(struct dio_write *dio)
                goto loop;
 
        while (1) {
-               size_t extra = dio->iter.count -
-                       min(BIO_MAX_PAGES * PAGE_SIZE, dio->iter.count);
-
                if (kthread)
                        use_mm(dio->mm);
                BUG_ON(current->faults_disabled_mapping);
                current->faults_disabled_mapping = mapping;
 
-               /*
-                * Don't issue more than 2MB at once, the bcachefs io path in
-                * io.c can't bounce more than that:
-                */
-
-               dio->iter.count -= extra;
                ret = bio_iov_iter_get_pages(bio, &dio->iter);
-               dio->iter.count += extra;
 
                current->faults_disabled_mapping = NULL;
                if (kthread)