From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [bcachefs:master 986/1155] fs/bcachefs/data/read.c:1327 __bch2_read_extent() error: we previously assumed 'ca' could be null (see line 1307)
Date: Sun, 19 Jul 2026 02:27:08 +0800 [thread overview]
Message-ID: <202607190209.2KOYmnuT-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: Kent Overstreet <kent.overstreet@linux.dev>
TO: Kent Overstreet <kent.overstreet@linux.dev>
tree: https://evilpiepirate.org/git/bcachefs.git master
head: ca944a61e079450f82be88c91e349638c75cf4b6
commit: 312c51e00acfd6ab012061bbb080ff0b524d7b29 [986/1155] bcachefs: read_extent_rbio_alloc()
:::::: branch date: 9 weeks ago
:::::: commit date: 8 months ago
config: x86_64-randconfig-161 (https://download.01.org/0day-ci/archive/20260719/202607190209.2KOYmnuT-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
smatch: v0.5.0-9185-gbcc58b9c
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202607190209.2KOYmnuT-lkp@intel.com/
smatch warnings:
fs/bcachefs/data/read.c:1327 __bch2_read_extent() error: we previously assumed 'ca' could be null (see line 1307)
vim +/ca +1327 fs/bcachefs/data/read.c
312c51e00acfd6 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1165
312c51e00acfd6 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1166 int __bch2_read_extent(struct btree_trans *trans,
312c51e00acfd6 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1167 struct bch_read_bio *orig,
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1168 struct bvec_iter iter, struct bpos read_pos,
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1169 enum btree_id data_btree, struct bkey_s_c k,
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1170 unsigned offset_into_extent,
ca24130ee412d9 fs/bcachefs/io_read.c Kent Overstreet 2024-12-28 1171 struct bch_io_failures *failed, unsigned flags, int dev)
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1172 {
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1173 struct bch_fs *c = trans->c;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1174 struct extent_ptr_decoded pick;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1175 struct bch_read_bio *rbio = NULL;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1176 bool bounce = false, read_full = false, narrow_crcs = false;
3fb8bacb14b6fb fs/bcachefs/io_read.c Kent Overstreet 2025-03-12 1177 struct data_update *u = rbio_data_update(orig);
943f0cfb1559ac fs/bcachefs/io_read.c Kent Overstreet 2025-03-07 1178 int ret = 0;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1179
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1180 if (bkey_extent_is_inline_data(k.k)) {
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1181 unsigned bytes = min_t(unsigned, iter.bi_size,
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1182 bkey_inline_data_bytes(k.k));
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1183
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1184 swap(iter.bi_size, bytes);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1185 memcpy_to_bio(&orig->bio, iter, bkey_inline_data_p(k));
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1186 swap(iter.bi_size, bytes);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1187 bio_advance_iter(&orig->bio, &iter, bytes);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1188 zero_fill_bio_iter(&orig->bio, iter);
1949a429883eb0 fs/bcachefs/data/read.c Kent Overstreet 2025-11-22 1189 this_cpu_add(c->counters.now[BCH_COUNTER_io_read_inline],
157ea5834133c0 fs/bcachefs/io_read.c Kent Overstreet 2025-02-03 1190 bvec_iter_sectors(iter));
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1191 goto out_read_done;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1192 }
cb8336ca42e493 fs/bcachefs/io_read.c Kent Overstreet 2025-03-11 1193
cb8336ca42e493 fs/bcachefs/io_read.c Kent Overstreet 2025-03-11 1194 if ((bch2_bkey_extent_flags(k) & BIT_ULL(BCH_EXTENT_FLAG_poisoned)) &&
7e1ba7e98886e3 fs/bcachefs/io_read.c Kent Overstreet 2025-09-02 1195 !orig->data_update) {
7e1ba7e98886e3 fs/bcachefs/io_read.c Kent Overstreet 2025-09-02 1196 ret = bch_err_throw(c, extent_poisoned);
7e1ba7e98886e3 fs/bcachefs/io_read.c Kent Overstreet 2025-09-02 1197 goto err;
7e1ba7e98886e3 fs/bcachefs/io_read.c Kent Overstreet 2025-09-02 1198 }
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1199 retry_pick:
943f0cfb1559ac fs/bcachefs/io_read.c Kent Overstreet 2025-03-07 1200 ret = bch2_bkey_pick_read_device(c, k, failed, &pick, dev);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1201
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1202 /* hole or reservation - just zero fill: */
943f0cfb1559ac fs/bcachefs/io_read.c Kent Overstreet 2025-03-07 1203 if (!ret)
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1204 goto hole;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1205
943f0cfb1559ac fs/bcachefs/io_read.c Kent Overstreet 2025-03-07 1206 if (unlikely(ret < 0)) {
760be1ad5e71b3 fs/bcachefs/io_read.c Kent Overstreet 2025-03-10 1207 if (ret == -BCH_ERR_data_read_csum_err) {
760be1ad5e71b3 fs/bcachefs/io_read.c Kent Overstreet 2025-03-10 1208 int ret2 = maybe_poison_extent(trans, orig, data_btree, k);
760be1ad5e71b3 fs/bcachefs/io_read.c Kent Overstreet 2025-03-10 1209 if (ret2) {
760be1ad5e71b3 fs/bcachefs/io_read.c Kent Overstreet 2025-03-10 1210 ret = ret2;
760be1ad5e71b3 fs/bcachefs/io_read.c Kent Overstreet 2025-03-10 1211 goto err;
760be1ad5e71b3 fs/bcachefs/io_read.c Kent Overstreet 2025-03-10 1212 }
760be1ad5e71b3 fs/bcachefs/io_read.c Kent Overstreet 2025-03-10 1213
760be1ad5e71b3 fs/bcachefs/io_read.c Kent Overstreet 2025-03-10 1214 trace_and_count(c, io_read_fail_and_poison, &orig->bio);
760be1ad5e71b3 fs/bcachefs/io_read.c Kent Overstreet 2025-03-10 1215 }
760be1ad5e71b3 fs/bcachefs/io_read.c Kent Overstreet 2025-03-10 1216
54f229a0df604d fs/bcachefs/data/read.c Kent Overstreet 2025-10-16 1217 if (!(flags & BCH_READ_in_retry)) {
ec1f2d2073b058 fs/bcachefs/io_read.c Kent Overstreet 2025-07-14 1218 CLASS(printbuf, buf)();
f7727a6767277a fs/bcachefs/io_read.c Kent Overstreet 2024-09-28 1219 bch2_read_err_msg_trans(trans, &buf, orig, read_pos);
943f0cfb1559ac fs/bcachefs/io_read.c Kent Overstreet 2025-03-07 1220 prt_printf(&buf, "%s\n ", bch2_err_str(ret));
bf611567b791f3 fs/bcachefs/io_read.c Kent Overstreet 2024-09-06 1221 bch2_bkey_val_to_text(&buf, c, k);
f7727a6767277a fs/bcachefs/io_read.c Kent Overstreet 2024-09-28 1222 bch_err_ratelimited(c, "%s", buf.buf);
54f229a0df604d fs/bcachefs/data/read.c Kent Overstreet 2025-10-16 1223 }
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1224 goto err;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1225 }
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1226
312c51e00acfd6 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1227 if (bch2_csum_type_is_encryption(pick.crc.csum_type) &&
312c51e00acfd6 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1228 unlikely(!c->chacha20_key_set)) {
54f229a0df604d fs/bcachefs/data/read.c Kent Overstreet 2025-10-16 1229 if (!(flags & BCH_READ_in_retry)) {
ec1f2d2073b058 fs/bcachefs/io_read.c Kent Overstreet 2025-07-14 1230 CLASS(printbuf, buf)();
f7727a6767277a fs/bcachefs/io_read.c Kent Overstreet 2024-09-28 1231 bch2_read_err_msg_trans(trans, &buf, orig, read_pos);
f7727a6767277a fs/bcachefs/io_read.c Kent Overstreet 2024-09-28 1232 prt_printf(&buf, "attempting to read encrypted data without encryption key\n ");
dba8243f3b466d fs/bcachefs/io_read.c Kent Overstreet 2024-11-25 1233 bch2_bkey_val_to_text(&buf, c, k);
dba8243f3b466d fs/bcachefs/io_read.c Kent Overstreet 2024-11-25 1234
f7727a6767277a fs/bcachefs/io_read.c Kent Overstreet 2024-09-28 1235 bch_err_ratelimited(c, "%s", buf.buf);
54f229a0df604d fs/bcachefs/data/read.c Kent Overstreet 2025-10-16 1236 }
09b9c72bd4b77a fs/bcachefs/io_read.c Kent Overstreet 2025-05-28 1237 ret = bch_err_throw(c, data_read_no_encryption_key);
dba8243f3b466d fs/bcachefs/io_read.c Kent Overstreet 2024-11-25 1238 goto err;
dba8243f3b466d fs/bcachefs/io_read.c Kent Overstreet 2024-11-25 1239 }
dba8243f3b466d fs/bcachefs/io_read.c Kent Overstreet 2024-11-25 1240
cca2c0d224c17c fs/bcachefs/io_read.c Kent Overstreet 2025-04-18 1241 struct bch_dev *ca = bch2_dev_get_ioref(c, pick.ptr.dev, READ,
cca2c0d224c17c fs/bcachefs/io_read.c Kent Overstreet 2025-04-18 1242 BCH_DEV_READ_REF_io_read);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1243
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1244 /*
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1245 * Stale dirty pointers are treated as IO errors, but @failed isn't
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1246 * allocated unless we're in the retry path - so if we're not in the
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1247 * retry path, don't check here, it'll be caught in bch2_read_endio()
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1248 * and we'll end up in the retry path:
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1249 */
312c51e00acfd6 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1250 if (unlikely(flags & BCH_READ_in_retry) &&
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1251 !pick.ptr.cached &&
465bf6f42aac14 fs/bcachefs/io_read.c Kent Overstreet 2024-05-03 1252 ca &&
3858aa4268b2f7 fs/bcachefs/io_read.c Kent Overstreet 2024-04-30 1253 unlikely(dev_ptr_stale(ca, &pick.ptr))) {
db39a35dde9dcf fs/bcachefs/io_read.c Kent Overstreet 2024-05-01 1254 read_from_stale_dirty_pointer(trans, ca, k, pick.ptr);
2a82b05ef052c3 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1255 bch2_mark_io_failure(failed, &pick, bch_err_throw(c, data_read_ptr_stale_dirty));
44c1946444a82a fs/bcachefs/data/read.c Kent Overstreet 2025-11-05 1256 propagate_io_error_to_data_update(c, rbio, &pick);
cca2c0d224c17c fs/bcachefs/io_read.c Kent Overstreet 2025-04-18 1257 enumerated_ref_put(&ca->io_ref[READ], BCH_DEV_READ_REF_io_read);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1258 goto retry_pick;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1259 }
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1260
3fb8bacb14b6fb fs/bcachefs/io_read.c Kent Overstreet 2025-03-12 1261 if (likely(!u)) {
9157b3ddfb151d fs/bcachefs/io_read.c Kent Overstreet 2025-01-17 1262 if (!(flags & BCH_READ_last_fragment) ||
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1263 bio_flagged(&orig->bio, BIO_CHAIN))
9157b3ddfb151d fs/bcachefs/io_read.c Kent Overstreet 2025-01-17 1264 flags |= BCH_READ_must_clone;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1265
1e9af0dcebc6b2 fs/bcachefs/data/read.c Kent Overstreet 2025-10-30 1266 narrow_crcs = !(flags & BCH_READ_in_retry) && can_narrow_crc(pick.crc);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1267
9157b3ddfb151d fs/bcachefs/io_read.c Kent Overstreet 2025-01-17 1268 if (narrow_crcs && (flags & BCH_READ_user_mapped))
9157b3ddfb151d fs/bcachefs/io_read.c Kent Overstreet 2025-01-17 1269 flags |= BCH_READ_must_bounce;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1270
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1271 EBUG_ON(offset_into_extent + bvec_iter_sectors(iter) > k.k->size);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1272
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1273 if (crc_is_compressed(pick.crc) ||
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1274 (pick.crc.csum_type != BCH_CSUM_none &&
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1275 (bvec_iter_sectors(iter) != pick.crc.uncompressed_size ||
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1276 (bch2_csum_type_is_encryption(pick.crc.csum_type) &&
9157b3ddfb151d fs/bcachefs/io_read.c Kent Overstreet 2025-01-17 1277 (flags & BCH_READ_user_mapped)) ||
9157b3ddfb151d fs/bcachefs/io_read.c Kent Overstreet 2025-01-17 1278 (flags & BCH_READ_must_bounce)))) {
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1279 read_full = true;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1280 bounce = true;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1281 }
dff6de9518848b fs/bcachefs/io_read.c Kent Overstreet 2024-12-30 1282 } else {
dff6de9518848b fs/bcachefs/io_read.c Kent Overstreet 2024-12-30 1283 /*
dff6de9518848b fs/bcachefs/io_read.c Kent Overstreet 2024-12-30 1284 * can happen if we retry, and the extent we were going to read
dff6de9518848b fs/bcachefs/io_read.c Kent Overstreet 2024-12-30 1285 * has been merged in the meantime:
dff6de9518848b fs/bcachefs/io_read.c Kent Overstreet 2024-12-30 1286 */
dff6de9518848b fs/bcachefs/io_read.c Kent Overstreet 2024-12-30 1287 if (pick.crc.compressed_size > u->op.wbio.bio.bi_iter.bi_size) {
dff6de9518848b fs/bcachefs/io_read.c Kent Overstreet 2024-12-30 1288 if (ca)
cca2c0d224c17c fs/bcachefs/io_read.c Kent Overstreet 2025-04-18 1289 enumerated_ref_put(&ca->io_ref[READ],
cca2c0d224c17c fs/bcachefs/io_read.c Kent Overstreet 2025-04-18 1290 BCH_DEV_READ_REF_io_read);
09b9c72bd4b77a fs/bcachefs/io_read.c Kent Overstreet 2025-05-28 1291 rbio->ret = bch_err_throw(c, data_read_buffer_too_small);
881b598ef144a1 fs/bcachefs/io_read.c Kent Overstreet 2025-03-08 1292 goto out_read_done;
dff6de9518848b fs/bcachefs/io_read.c Kent Overstreet 2024-12-30 1293 }
dff6de9518848b fs/bcachefs/io_read.c Kent Overstreet 2024-12-30 1294
dff6de9518848b fs/bcachefs/io_read.c Kent Overstreet 2024-12-30 1295 iter.bi_size = pick.crc.compressed_size << 9;
3fb8bacb14b6fb fs/bcachefs/io_read.c Kent Overstreet 2025-03-12 1296 read_full = true;
dff6de9518848b fs/bcachefs/io_read.c Kent Overstreet 2024-12-30 1297 }
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1298
312c51e00acfd6 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1299 rbio = read_extent_rbio_alloc(trans, orig, iter, read_pos, data_btree, k,
312c51e00acfd6 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1300 pick, ca, offset_into_extent, failed, flags,
312c51e00acfd6 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1301 bounce, read_full, narrow_crcs);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1302
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1303 /*
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1304 * If it's being moved internally, we don't want to flag it as a cache
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1305 * hit:
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1306 */
3fb8bacb14b6fb fs/bcachefs/io_read.c Kent Overstreet 2025-03-12 @1307 if (ca && pick.ptr.cached && !u)
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1308 bch2_bucket_io_time_reset(trans, pick.ptr.dev,
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1309 PTR_BUCKET_NR(ca, &pick.ptr), READ);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1310
dbac8feb23382a fs/bcachefs/io_read.c Kent Overstreet 2025-03-11 1311 /*
dbac8feb23382a fs/bcachefs/io_read.c Kent Overstreet 2025-03-11 1312 * Unlock the iterator while the btree node's lock is still in
dbac8feb23382a fs/bcachefs/io_read.c Kent Overstreet 2025-03-11 1313 * cache, before doing the IO:
dbac8feb23382a fs/bcachefs/io_read.c Kent Overstreet 2025-03-11 1314 */
9157b3ddfb151d fs/bcachefs/io_read.c Kent Overstreet 2025-01-17 1315 if (!(flags & BCH_READ_in_retry))
dbac8feb23382a fs/bcachefs/io_read.c Kent Overstreet 2025-03-11 1316 bch2_trans_unlock(trans);
dbac8feb23382a fs/bcachefs/io_read.c Kent Overstreet 2025-03-11 1317 else
dbac8feb23382a fs/bcachefs/io_read.c Kent Overstreet 2025-03-11 1318 bch2_trans_unlock_long(trans);
dbac8feb23382a fs/bcachefs/io_read.c Kent Overstreet 2025-03-11 1319
be31e412ac01f4 fs/bcachefs/io_read.c Kent Overstreet 2025-03-08 1320 if (likely(!rbio->pick.do_ec_reconstruct)) {
f7727a6767277a fs/bcachefs/io_read.c Kent Overstreet 2024-09-28 1321 if (unlikely(!rbio->have_ioref)) {
3d8e248b2e15f0 fs/bcachefs/data/read.c Kent Overstreet 2025-10-06 1322 ret = bch_err_throw(c, data_read_retry_device_offline);
a87e7d26cb7538 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1323 bch2_rbio_error(rbio, ret);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1324 goto out;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1325 }
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1326
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 @1327 this_cpu_add(ca->io_done->sectors[READ][BCH_DATA_user],
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1328 bio_sectors(&rbio->bio));
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1329 bio_set_dev(&rbio->bio, ca->disk_sb.bdev);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1330
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1331 if (unlikely(c->opts.no_data_io)) {
9157b3ddfb151d fs/bcachefs/io_read.c Kent Overstreet 2025-01-17 1332 if (likely(!(flags & BCH_READ_in_retry)))
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1333 bio_endio(&rbio->bio);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1334 } else {
9157b3ddfb151d fs/bcachefs/io_read.c Kent Overstreet 2025-01-17 1335 if (likely(!(flags & BCH_READ_in_retry)))
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1336 submit_bio(&rbio->bio);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1337 else
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1338 submit_bio_wait(&rbio->bio);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1339 }
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1340
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1341 /*
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1342 * We just submitted IO which may block, we expect relock fail
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1343 * events and shouldn't count them:
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1344 */
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1345 trans->notrace_relock_fail = true;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1346 } else {
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1347 /* Attempting reconstruct read: */
2aee59eb212266 fs/bcachefs/io_read.c Kent Overstreet 2024-09-07 1348 if (bch2_ec_read_extent(trans, rbio, k)) {
3d8e248b2e15f0 fs/bcachefs/data/read.c Kent Overstreet 2025-10-06 1349 ret = bch_err_throw(c, data_read_retry_ec_reconstruct_err);
a87e7d26cb7538 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1350 bch2_rbio_error(rbio, ret);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1351 goto out;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1352 }
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1353
9157b3ddfb151d fs/bcachefs/io_read.c Kent Overstreet 2025-01-17 1354 if (likely(!(flags & BCH_READ_in_retry)))
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1355 bio_endio(&rbio->bio);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1356 }
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1357 out:
9157b3ddfb151d fs/bcachefs/io_read.c Kent Overstreet 2025-01-17 1358 if (likely(!(flags & BCH_READ_in_retry))) {
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1359 return 0;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1360 } else {
dbac8feb23382a fs/bcachefs/io_read.c Kent Overstreet 2025-03-11 1361 bch2_trans_unlock(trans);
dbac8feb23382a fs/bcachefs/io_read.c Kent Overstreet 2025-03-11 1362
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1363 int ret;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1364
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1365 rbio->context = RBIO_CONTEXT_UNBOUND;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1366 bch2_read_endio(&rbio->bio);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1367
943f0cfb1559ac fs/bcachefs/io_read.c Kent Overstreet 2025-03-07 1368 ret = rbio->ret;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1369 rbio = bch2_rbio_free(rbio);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1370
0806a669f58030 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1371 if (bch2_err_matches(ret, BCH_ERR_data_read_retry_avoid) ||
0806a669f58030 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1372 bch2_err_matches(ret, BCH_ERR_blockdev_io_error)) {
2a82b05ef052c3 fs/bcachefs/data/read.c Kent Overstreet 2025-11-24 1373 bch2_mark_io_failure(failed, &pick, ret);
44c1946444a82a fs/bcachefs/data/read.c Kent Overstreet 2025-11-05 1374 propagate_io_error_to_data_update(c, rbio, &pick);
0bf6463036f1c7 fs/bcachefs/data/read.c Kent Overstreet 2025-10-16 1375 }
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1376
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1377 return ret;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1378 }
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1379
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1380 err:
9157b3ddfb151d fs/bcachefs/io_read.c Kent Overstreet 2025-01-17 1381 if (flags & BCH_READ_in_retry)
943f0cfb1559ac fs/bcachefs/io_read.c Kent Overstreet 2025-03-07 1382 return ret;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1383
943f0cfb1559ac fs/bcachefs/io_read.c Kent Overstreet 2025-03-07 1384 orig->ret = ret;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1385 goto out_read_done;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1386
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1387 hole:
1949a429883eb0 fs/bcachefs/data/read.c Kent Overstreet 2025-11-22 1388 this_cpu_add(c->counters.now[BCH_COUNTER_io_read_hole],
157ea5834133c0 fs/bcachefs/io_read.c Kent Overstreet 2025-02-03 1389 bvec_iter_sectors(iter));
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1390 /*
3fb8bacb14b6fb fs/bcachefs/io_read.c Kent Overstreet 2025-03-12 1391 * won't normally happen in the data update (bch2_move_extent()) path,
3fb8bacb14b6fb fs/bcachefs/io_read.c Kent Overstreet 2025-03-12 1392 * but if we retry and the extent we wanted to read no longer exists we
3fb8bacb14b6fb fs/bcachefs/io_read.c Kent Overstreet 2025-03-12 1393 * have to signal that:
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1394 */
3fb8bacb14b6fb fs/bcachefs/io_read.c Kent Overstreet 2025-03-12 1395 if (u)
09b9c72bd4b77a fs/bcachefs/io_read.c Kent Overstreet 2025-05-28 1396 orig->ret = bch_err_throw(c, data_read_key_overwritten);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1397
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1398 zero_fill_bio_iter(&orig->bio, iter);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1399 out_read_done:
de73677ff8e677 fs/bcachefs/io_read.c Kent Overstreet 2025-03-08 1400 if ((flags & BCH_READ_last_fragment) &&
de73677ff8e677 fs/bcachefs/io_read.c Kent Overstreet 2025-03-08 1401 !(flags & BCH_READ_in_retry))
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1402 bch2_rbio_done(orig);
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1403 return 0;
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1404 }
1809b8cba756d3 fs/bcachefs/io_read.c Kent Overstreet 2023-09-10 1405
:::::: The code at line 1327 was first introduced by commit
:::::: 1809b8cba756d32bd6e976ed4ee64efdf66c6d94 bcachefs: Break up io.c
:::::: TO: Kent Overstreet <kent.overstreet@linux.dev>
:::::: CC: Kent Overstreet <kent.overstreet@linux.dev>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-07-18 18:27 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202607190209.2KOYmnuT-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.