bcachefs: Convert more -EROFS to private error codes
authorKent Overstreet <kent.overstreet@linux.dev>
Fri, 7 Jul 2023 21:09:26 +0000 (17:09 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:10:06 +0000 (17:10 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/ec.c
fs/bcachefs/errcode.h
fs/bcachefs/journal.c
fs/bcachefs/super.c

index d35a59e2d0e9cf780f8ad52aca05387f62e6a29d..efbb7cf7a5d00365d06ecf9b999bb60addf1026f 100644 (file)
@@ -1024,7 +1024,7 @@ static void zero_out_rest_of_ec_bucket(struct bch_fs *c,
        int ret;
 
        if (!bch2_dev_get_ioref(ca, WRITE)) {
-               s->err = -EROFS;
+               s->err = -BCH_ERR_erofs_no_writes;
                return;
        }
 
@@ -1401,7 +1401,7 @@ __bch2_ec_stripe_head_get(struct btree_trans *trans,
                return ERR_PTR(ret);
 
        if (test_bit(BCH_FS_GOING_RO, &c->flags)) {
-               h = ERR_PTR(-EROFS);
+               h = ERR_PTR(-BCH_ERR_erofs_no_writes);
                goto found;
        }
 
@@ -1774,7 +1774,7 @@ static void __bch2_ec_stop(struct bch_fs *c, struct bch_dev *ca)
                }
                goto unlock;
 found:
-               h->s->err = -EROFS;
+               h->s->err = -BCH_ERR_erofs_no_writes;
                ec_stripe_set_pending(c, h);
 unlock:
                mutex_unlock(&h->lock);
index 1e06d95f34849eb5eccbd1ccfeedb5aee62b02fd..d5277ec7372f8c26ffa1aa2072943952da7dbfde 100644 (file)
        x(EROFS,                        erofs_no_writes)                        \
        x(EROFS,                        erofs_journal_err)                      \
        x(EROFS,                        erofs_sb_err)                           \
+       x(EROFS,                        erofs_unfixed_errors)                   \
+       x(EROFS,                        erofs_norecovery)                       \
+       x(EROFS,                        erofs_nochanges)                        \
        x(EROFS,                        insufficient_devices)                   \
        x(0,                            operation_blocked)                      \
        x(BCH_ERR_operation_blocked,    btree_cache_cannibalize_lock_blocked)   \
index 9c4f61ab33e47d2fb2b44a4ce9f65e2761c95fa8..80a612c0577f25d4228aabc3567d4e7aebe3de61 100644 (file)
@@ -494,7 +494,7 @@ unlock:
        }
 
        return ret == JOURNAL_ERR_insufficient_devices
-               ? -EROFS
+               ? -BCH_ERR_erofs_journal_err
                : -BCH_ERR_journal_res_get_blocked;
 }
 
index 06d461423da5cbcb4c8953279c9f3dafc292e57c..6ab98c2299dda4a27ce1aa0155e72245cfac901e 100644 (file)
@@ -361,20 +361,21 @@ static int __bch2_fs_read_write(struct bch_fs *c, bool early)
 
        if (test_bit(BCH_FS_INITIAL_GC_UNFIXED, &c->flags)) {
                bch_err(c, "cannot go rw, unfixed btree errors");
-               return -EROFS;
+               return -BCH_ERR_erofs_unfixed_errors;
        }
 
        if (test_bit(BCH_FS_RW, &c->flags))
                return 0;
 
+       if (c->opts.norecovery)
+               return -BCH_ERR_erofs_norecovery;
+
        /*
         * nochanges is used for fsck -n mode - we have to allow going rw
         * during recovery for that to work:
         */
-       if (c->opts.norecovery ||
-           (c->opts.nochanges &&
-            (!early || c->opts.read_only)))
-               return -EROFS;
+       if (c->opts.nochanges && (!early || c->opts.read_only))
+               return -BCH_ERR_erofs_nochanges;
 
        bch_info(c, "going read-write");