NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/60746: kernel diagnostic assertion "ino >= LFS_IFILE_INUM" failed: file "../../../../ufs/lfs/lfs_vfsops.c", line 1800
The following reply was made to PR kern/60746; it has been noted by GNATS.
From: Konrad Schroder <perseant%hhhh.org@localhost>
To: Shinichi Doyashiki <clare%csel.org@localhost>, gnats-bugs%netbsd.org@localhost
Cc:
Subject: Re: kern/60746: kernel diagnostic assertion "ino >= LFS_IFILE_INUM"
failed: file "../../../../ufs/lfs/lfs_vfsops.c", line 1800
Date: Sat, 19 Sep 2026 19:01:58 -0700
This is a multi-part message in MIME format.
--------------rbtwDHr4befo22IMnqXtP99X
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
On 9/19/2026 3:26 PM, Shinichi Doyashiki wrote:
>> after the patch applied, I got following result.
>>
>> [ 152.8764894] panic: kernel diagnostic assertion "ino >= LFS_IFILE_INUM" failed: file "../../../../ufs/lfs/lfs_kclean.c", line 674
Okay, something else is wrong. We should never see an FINFO for a
non-positive inode number. I'm very curious what it is writing. Could
you please try the following/attached patch instead, and when it panics,
send both the panic message and the output of "dumplfs -s <segment
number> /dev/rdk4" for the segment it reports?
Index: sys/ufs/lfs/lfs_kclean.c
===================================================================
RCS file: /cvsroot/src/sys/ufs/lfs/lfs_kclean.c,v
retrieving revision 1.4
diff -u -r1.4 lfs_kclean.c
--- sys/ufs/lfs/lfs_kclean.c  5 Jan 2026 05:02:47 -0000  1.4
+++ sys/ufs/lfs/lfs_kclean.c  20 Sep 2026 01:36:47 -0000
@@ -616,9 +616,21 @@
    for (i = num; i-- > 0; ) {
        dip = DINO_IN_BLOCK(fs, dbp->b_data, i);
        ino = lfs_dino_getinumber(fs, dip);
+Â Â Â Â Â Â Â Â KASSERTMSG((ino >= LFS_IFILE_INUM),
+Â Â Â Â Â Â Â Â Â Â Â Â "nonpositive inum: %lld at offset 0x%lx (seg
%ld)\n",
+Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â (long long)ino,
+Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â (unsigned long)offset,
+Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â (long)lfs_dtosn(fs, offset));
        if (ino == LFS_IFILE_INUM) {
            /* Check address against superblock */
            true_addr = lfs_sb_getidaddr(fs);
+Â Â Â Â Â Â Â Â } else if (ino >= LFS_MAXINO(fs)) {
+Â Â Â Â Â Â Â Â Â Â Â Â /*
+Â Â Â Â Â Â Â Â Â Â Â Â * An inode greater than we have must be from a
+Â Â Â Â Â Â Â Â Â Â Â Â * previous allocation that was not rolled forward.
+Â Â Â Â Â Â Â Â Â Â Â Â * For our purposes, it does not exist.
+Â Â Â Â Â Â Â Â Â Â Â Â */
+Â Â Â Â Â Â Â Â Â Â Â Â continue;
        } else {
            /* Not ifile. Check address against ifile. */
            LFS_IENTRY(ifp, fs, ino, ibp);
@@ -655,6 +674,22 @@
    /* Get the inode and check its version. */
    ino = lfs_fi_getino(fs, fip);
    gen = lfs_fi_getversion(fs, fip);
+
+Â Â Â Â KASSERTMSG((ino >= LFS_IFILE_INUM),
+Â Â Â Â Â Â Â Â "FINFO with nonpositive inum: %lld at offset 0x%lx (seg
%ld)\n",
+Â Â Â Â Â Â Â Â Â Â Â Â (long long)ino,
+Â Â Â Â Â Â Â Â Â Â Â Â (unsigned long)*offsetp,
+Â Â Â Â Â Â Â Â Â Â Â Â (long)lfs_dtosn(fs, *offsetp));
+Â Â Â Â KASSERTMSG((lfs_fi_getnblocks(fs, fip) > 0),
+Â Â Â Â Â Â Â Â "FINFO with nonpositive count: %d at offset 0x%lx (seg
%ld)\n",
+Â Â Â Â Â Â Â Â Â Â Â Â (int)lfs_fi_getnblocks(fs, fip),
+Â Â Â Â Â Â Â Â Â Â Â Â (unsigned long)*offsetp,
+Â Â Â Â Â Â Â Â Â Â Â Â (long)lfs_dtosn(fs, *offsetp));
+
+Â Â Â Â /* We can safely ignore this; see comment in ino_func_checkempty. */
+Â Â Â Â if (ino >= LFS_MAXINO(fs))
+Â Â Â Â Â Â Â Â return 0;
+
    error = VFS_VGET(fs->lfs_ivnode->v_mount, ino,
LK_EXCLUSIVE|LK_NOWAIT, &vp);
    /*
Thanks,
--
Konrad Schroder
perseant%hhhh.org@localhost
--------------rbtwDHr4befo22IMnqXtP99X
Content-Type: text/plain; charset=UTF-8; name="60746b.diff"
Content-Disposition: attachment; filename="60746b.diff"
Content-Transfer-Encoding: base64
SW5kZXg6IHN5cy91ZnMvbGZzL2xmc19rY2xlYW4uYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3Zzcm9vdC9zcmMvc3lzL3Vmcy9sZnMvbGZzX2tjbGVhbi5jLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjQKZGlmZiAtdSAtcjEuNCBsZnNfa2NsZWFuLmMKLS0tIHN5cy91ZnMvbGZz
L2xmc19rY2xlYW4uYwk1IEphbiAyMDI2IDA1OjAyOjQ3IC0wMDAwCTEuNAorKysgc3lzL3Vm
cy9sZnMvbGZzX2tjbGVhbi5jCTIwIFNlcCAyMDI2IDAxOjM2OjQ3IC0wMDAwCkBAIC02MTYs
OSArNjE2LDIxIEBACiAJZm9yIChpID0gbnVtOyBpLS0gPiAwOyApIHsKIAkJZGlwID0gRElO
T19JTl9CTE9DSyhmcywgZGJwLT5iX2RhdGEsIGkpOwogCQlpbm8gPSBsZnNfZGlub19nZXRp
bnVtYmVyKGZzLCBkaXApOworCQlLQVNTRVJUTVNHKChpbm8gPj0gTEZTX0lGSUxFX0lOVU0p
LAorCQkJIm5vbnBvc2l0aXZlIGludW06ICVsbGQgYXQgb2Zmc2V0IDB4JWx4IChzZWcgJWxk
KVxuIiwKKwkJCQkobG9uZyBsb25nKWlubywKKwkJCQkodW5zaWduZWQgbG9uZylvZmZzZXQs
CisJCQkJKGxvbmcpbGZzX2R0b3NuKGZzLCBvZmZzZXQpKTsKCQlpZiAoaW5vID09IExGU19J
RklMRV9JTlVNKSB7CiAJCQkvKiBDaGVjayBhZGRyZXNzIGFnYWluc3Qgc3VwZXJibG9jayAq
LwogCQkJdHJ1ZV9hZGRyID0gbGZzX3NiX2dldGlkYWRkcihmcyk7CisJCX0gZWxzZSBpZiAo
aW5vID49IExGU19NQVhJTk8oZnMpKSB7CisJCQkvKgorCQkJICogQW4gaW5vZGUgZ3JlYXRl
ciB0aGFuIHdlIGhhdmUgbXVzdCBiZSBmcm9tIGEKKwkJCSAqIHByZXZpb3VzIGFsbG9jYXRp
b24gdGhhdCB3YXMgbm90IHJvbGxlZCBmb3J3YXJkLgorCQkJICogRm9yIG91ciBwdXJwb3Nl
cywgaXQgZG9lcyBub3QgZXhpc3QuCisJCQkgKi8KKwkJCWNvbnRpbnVlOwogCQl9IGVsc2Ug
ewogCQkJLyogTm90IGlmaWxlLiAgQ2hlY2sgYWRkcmVzcyBhZ2FpbnN0IGlmaWxlLiAqLwog
CQkJTEZTX0lFTlRSWShpZnAsIGZzLCBpbm8sIGlicCk7CkBAIC02NTUsNiArNjc0LDIyIEBA
CiAJLyogR2V0IHRoZSBpbm9kZSBhbmQgY2hlY2sgaXRzIHZlcnNpb24uICovCiAJaW5vID0g
bGZzX2ZpX2dldGlubyhmcywgZmlwKTsKIAlnZW4gPSBsZnNfZmlfZ2V0dmVyc2lvbihmcywg
ZmlwKTsKKworCUtBU1NFUlRNU0coKGlubyA+PSBMRlNfSUZJTEVfSU5VTSksCisJCSJGSU5G
TyB3aXRoIG5vbnBvc2l0aXZlIGludW06ICVsbGQgYXQgb2Zmc2V0IDB4JWx4IChzZWcgJWxk
KVxuIiwKKwkJCShsb25nIGxvbmcpaW5vLAorCQkJKHVuc2lnbmVkIGxvbmcpKm9mZnNldHAs
CisJCQkobG9uZylsZnNfZHRvc24oZnMsICpvZmZzZXRwKSk7CisJS0FTU0VSVE1TRygobGZz
X2ZpX2dldG5ibG9ja3MoZnMsIGZpcCkgPiAwKSwKKwkJIkZJTkZPIHdpdGggbm9ucG9zaXRp
dmUgY291bnQ6ICVkIGF0IG9mZnNldCAweCVseCAoc2VnICVsZClcbiIsCisJCQkoaW50KWxm
c19maV9nZXRuYmxvY2tzKGZzLCBmaXApLAorCQkJKHVuc2lnbmVkIGxvbmcpKm9mZnNldHAs
CisJCQkobG9uZylsZnNfZHRvc24oZnMsICpvZmZzZXRwKSk7CisKKwkvKiBXZSBjYW4gc2Fm
ZWx5IGlnbm9yZSB0aGlzOyBzZWUgY29tbWVudCBpbiBpbm9fZnVuY19jaGVja2VtcHR5LiAq
LworCWlmIChpbm8gPj0gTEZTX01BWElOTyhmcykpCisJCXJldHVybiAwOworCiAJZXJyb3Ig
PSBWRlNfVkdFVChmcy0+bGZzX2l2bm9kZS0+dl9tb3VudCwgaW5vLCBMS19FWENMVVNJVkV8
TEtfTk9XQUlULCAmdnApOwogCiAJLyoK
--------------rbtwDHr4befo22IMnqXtP99X--
Home |
Main Index |
Thread Index |
Old Index