All of lore.kernel.org
 help / color / mirror / Atom feed
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.