Now that the read path uses proper error codes, we can get rid of the
weird rbio->hole signalling to the move path that the read didn't
happen.

Signed-off-by: Kent Overstreet <[email protected]>
---
 fs/bcachefs/errcode.h | 2 ++
 fs/bcachefs/io_read.c | 9 ++++-----
 fs/bcachefs/io_read.h | 1 -
 fs/bcachefs/move.c    | 4 ++--
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/fs/bcachefs/errcode.h b/fs/bcachefs/errcode.h
index 5050d978624b..afa16d58041e 100644
--- a/fs/bcachefs/errcode.h
+++ b/fs/bcachefs/errcode.h
@@ -295,6 +295,8 @@
        x(BCH_ERR_data_read,            data_read_ptr_stale_race)               
\
        x(BCH_ERR_data_read_retry,      data_read_ptr_stale_retry)              
\
        x(BCH_ERR_data_read,            data_read_no_encryption_key)            
\
+       x(BCH_ERR_data_read,            data_read_buffer_too_small)             
\
+       x(BCH_ERR_data_read,            data_read_key_overwritten)              
\
        x(BCH_ERR_btree_node_read_err,  btree_node_read_err_fixable)            
\
        x(BCH_ERR_btree_node_read_err,  btree_node_read_err_want_retry)         
\
        x(BCH_ERR_btree_node_read_err,  btree_node_read_err_must_retry)         
\
diff --git a/fs/bcachefs/io_read.c b/fs/bcachefs/io_read.c
index 03baab542abb..8f514d7e4021 100644
--- a/fs/bcachefs/io_read.c
+++ b/fs/bcachefs/io_read.c
@@ -437,7 +437,7 @@ static noinline void bch2_read_retry_nodecode(struct bch_fs 
*c, struct bch_read_
 
        if (!bkey_and_val_eq(k, bkey_i_to_s_c(u->k.k))) {
                /* extent we wanted to read no longer exists: */
-               rbio->hole = true;
+               rbio->ret = -BCH_ERR_data_read_key_overwritten;
                goto err;
        }
 
@@ -992,10 +992,10 @@ int __bch2_read_extent(struct btree_trans *trans, struct 
bch_read_bio *orig,
                 */
                struct data_update *u = container_of(orig, struct data_update, 
rbio);
                if (pick.crc.compressed_size > u->op.wbio.bio.bi_iter.bi_size) {
-                       BUG();
                        if (ca)
                                percpu_ref_put(&ca->io_ref);
-                       goto hole;
+                       rbio->ret = -BCH_ERR_data_read_buffer_too_small;
+                       goto out_read_done;
                }
 
                iter.bi_size    = pick.crc.compressed_size << 9;
@@ -1075,7 +1075,6 @@ int __bch2_read_extent(struct btree_trans *trans, struct 
bch_read_bio *orig,
        rbio->flags             = flags;
        rbio->have_ioref        = ca != NULL;
        rbio->narrow_crcs       = narrow_crcs;
-       rbio->hole              = 0;
        rbio->ret               = 0;
        rbio->context           = 0;
        rbio->pick              = pick;
@@ -1207,7 +1206,7 @@ int __bch2_read_extent(struct btree_trans *trans, struct 
bch_read_bio *orig,
         * to read no longer exists we have to signal that:
         */
        if (flags & BCH_READ_data_update)
-               orig->hole = true;
+               orig->ret = -BCH_ERR_data_read_key_overwritten;
 
        zero_fill_bio_iter(&orig->bio, iter);
 out_read_done:
diff --git a/fs/bcachefs/io_read.h b/fs/bcachefs/io_read.h
index dd6694c2cf3f..b29fedd85a9c 100644
--- a/fs/bcachefs/io_read.h
+++ b/fs/bcachefs/io_read.h
@@ -40,7 +40,6 @@ struct bch_read_bio {
                                split:1,
                                have_ioref:1,
                                narrow_crcs:1,
-                               hole:1,
                                saw_error:1,
                                context:2;
        };
diff --git a/fs/bcachefs/move.c b/fs/bcachefs/move.c
index 0787d04a5fc3..8cfd842a86cf 100644
--- a/fs/bcachefs/move.c
+++ b/fs/bcachefs/move.c
@@ -125,8 +125,8 @@ static void move_write(struct moving_io *io)
                                     &ctxt->stats->sectors_error_corrected);
        }
 
-       if (unlikely(io->write.rbio.bio.bi_status ||
-                    io->write.rbio.hole ||
+       if (unlikely(io->write.rbio.ret ||
+                    io->write.rbio.bio.bi_status ||
                     io->write.data_opts.scrub)) {
                move_free(io);
                return;
-- 
2.47.2


Reply via email to