From owner-svn-src-head@freebsd.org Sat Sep 19 20:06:13 2020 Return-Path: Delivered-To: svn-src-head@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BFB373EE01A; Sat, 19 Sep 2020 20:06:13 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Bv1tF4dCCz4R5p; Sat, 19 Sep 2020 20:06:13 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7DA53115EF; Sat, 19 Sep 2020 20:06:13 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 08JK6DjQ054364; Sat, 19 Sep 2020 20:06:13 GMT (envelope-from mckusick@FreeBSD.org) Received: (from mckusick@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 08JK6CHu054359; Sat, 19 Sep 2020 20:06:12 GMT (envelope-from mckusick@FreeBSD.org) Message-Id: <202009192006.08JK6CHu054359@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mckusick set sender to mckusick@FreeBSD.org using -f From: Kirk McKusick Date: Sat, 19 Sep 2020 20:06:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r365912 - in head: sbin/fsdb tools/diag/prtblknos X-SVN-Group: head X-SVN-Commit-Author: mckusick X-SVN-Commit-Paths: in head: sbin/fsdb tools/diag/prtblknos X-SVN-Commit-Revision: 365912 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Sep 2020 20:06:13 -0000 Author: mckusick Date: Sat Sep 19 20:06:12 2020 New Revision: 365912 URL: https://svnweb.freebsd.org/changeset/base/365912 Log: The fsdb(8) utility uses the fsck_ffs(8) disk I/O interfaces, so switch from using libufs's bread() to using fsck_ffs's getdatablk() when importing tools/diag/prtblnos's prtblknos(). Sponsored by: Netflix Modified: head/sbin/fsdb/fsdb.c head/sbin/fsdb/fsdbutil.c head/tools/diag/prtblknos/Makefile head/tools/diag/prtblknos/main.c head/tools/diag/prtblknos/prtblknos.c Modified: head/sbin/fsdb/fsdb.c ============================================================================== --- head/sbin/fsdb/fsdb.c Sat Sep 19 19:48:15 2020 (r365911) +++ head/sbin/fsdb/fsdb.c Sat Sep 19 20:06:12 2020 (r365912) @@ -109,6 +109,8 @@ main(int argc, char *argv[]) sblock_init(); if (!setup(fsys)) errx(1, "cannot set up file system `%s'", fsys); + if (fswritefd < 0) + nflag++; printf("%s file system `%s'\nLast Mounted on %s\n", nflag? "Examining": "Editing", fsys, sblock.fs_fsmnt); rval = cmdloop(); Modified: head/sbin/fsdb/fsdbutil.c ============================================================================== --- head/sbin/fsdb/fsdbutil.c Sat Sep 19 19:48:15 2020 (r365911) +++ head/sbin/fsdb/fsdbutil.c Sat Sep 19 20:06:12 2020 (r365912) @@ -53,7 +53,7 @@ static const char rcsid[] = #include "fsdb.h" #include "fsck.h" -void prtblknos(struct uufsd *disk, union dinode *dp); +void prtblknos(struct fs *fs, union dinode *dp); char ** crack(char *line, int *argc) @@ -236,7 +236,7 @@ printactive(int doblocks) case IFSOCK: case IFIFO: if (doblocks) - prtblknos(&disk, curinode); + prtblknos(&sblock, curinode); else printstat("current inode", curinum, curinode); break; Modified: head/tools/diag/prtblknos/Makefile ============================================================================== --- head/tools/diag/prtblknos/Makefile Sat Sep 19 19:48:15 2020 (r365911) +++ head/tools/diag/prtblknos/Makefile Sat Sep 19 20:06:12 2020 (r365912) @@ -11,6 +11,8 @@ LIBADD+=ufs WARNS?= 3 +CFLAGS+=-DPRTBLKNOS + test: ${PROG} ./${PROG} > a Modified: head/tools/diag/prtblknos/main.c ============================================================================== --- head/tools/diag/prtblknos/main.c Sat Sep 19 19:48:15 2020 (r365911) +++ head/tools/diag/prtblknos/main.c Sat Sep 19 20:06:12 2020 (r365912) @@ -39,14 +39,15 @@ union dinode { struct ufs2_dinode *dp2; }; -void prtblknos(struct uufsd *disk, union dinode *dp); +void prtblknos(struct fs *fs, union dinode *dp); +struct uufsd disk; + int main(argc, argv) int argc; char *argv[]; { - struct uufsd disk; union dinodep dp; struct fs *fs; struct stat sb; @@ -102,7 +103,7 @@ main(argc, argv) warn("Read of inode %jd on %s failed: %s", (intmax_t)inonum, fsname, disk.d_error); - prtblknos(&disk, (union dinode *)dp.dp1); + prtblknos(fs, (union dinode *)dp.dp1); } exit(0); } Modified: head/tools/diag/prtblknos/prtblknos.c ============================================================================== --- head/tools/diag/prtblknos/prtblknos.c Sat Sep 19 19:48:15 2020 (r365911) +++ head/tools/diag/prtblknos/prtblknos.c Sat Sep 19 20:06:12 2020 (r365912) @@ -31,32 +31,37 @@ #include #include +#include #include +#ifdef PRTBLKNOS union dinode { struct ufs1_dinode dp1; struct ufs2_dinode dp2; }; +extern struct uufsd disk; +#else /* used by fsdb */ +#include +static struct bufarea *bp; +#endif -void prtblknos(struct uufsd *disk, union dinode *dp); +void prtblknos(struct fs *fs, union dinode *dp); static const char *distance(struct fs *, ufs2_daddr_t, ufs2_daddr_t); static void printblk(struct fs *, ufs_lbn_t, ufs2_daddr_t, int, ufs_lbn_t); -static void indirprt(struct uufsd *, int, ufs_lbn_t, ufs_lbn_t, ufs2_daddr_t, +static void indirprt(struct fs *, int, ufs_lbn_t, ufs_lbn_t, ufs2_daddr_t, ufs_lbn_t); void -prtblknos(disk, dp) - struct uufsd *disk; +prtblknos(fs, dp) + struct fs *fs; union dinode *dp; { int i, mode, frags; ufs_lbn_t lbn, lastlbn, len, blksperindir; ufs2_daddr_t blkno; - struct fs *fs; off_t size; - fs = (struct fs *)&disk->d_sb; if (fs->fs_magic == FS_UFS1_MAGIC) { size = dp->dp1.di_size; mode = dp->dp1.di_mode; @@ -138,7 +143,7 @@ prtblknos(disk, dp) blkno = dp->dp1.di_ib[i]; else blkno = dp->dp2.di_ib[i]; - indirprt(disk, i, blksperindir, lbn, blkno, lastlbn); + indirprt(fs, i, blksperindir, lbn, blkno, lastlbn); blksperindir *= NINDIR(fs); lbn += blksperindir; len -= blksperindir; @@ -149,8 +154,8 @@ prtblknos(disk, dp) } static void -indirprt(disk, level, blksperindir, lbn, blkno, lastlbn) - struct uufsd *disk; +indirprt(fs, level, blksperindir, lbn, blkno, lastlbn) + struct fs *fs; int level; ufs_lbn_t blksperindir; ufs_lbn_t lbn; @@ -158,10 +163,8 @@ indirprt(disk, level, blksperindir, lbn, blkno, lastlb ufs_lbn_t lastlbn; { char indir[MAXBSIZE]; - struct fs *fs; ufs_lbn_t i, last; - fs = (struct fs *)&disk->d_sb; if (blkno == 0) { printblk(fs, lbn, blkno, blksperindir * NINDIR(fs) * fs->fs_frag, lastlbn); @@ -169,7 +172,14 @@ indirprt(disk, level, blksperindir, lbn, blkno, lastlb } printblk(fs, lbn, blkno, fs->fs_frag, -level); /* read in the indirect block. */ - if (bread(disk, fsbtodb(fs, blkno), indir, fs->fs_bsize) == -1) { +#ifdef PRTBLKNOS + if (bread(&disk, fsbtodb(fs, blkno), indir, fs->fs_bsize) == -1) { +#else /* used by fsdb */ + bp = getdatablk(blkno, fs->fs_bsize, BT_LEVEL1 + level); + if (bp->b_errs == 0) { + memcpy(indir, bp->b_un.b_buf, fs->fs_bsize); + } else { +#endif warn("Read of indirect block %jd failed", (intmax_t)blkno); /* List the unreadable part as a hole */ printblk(fs, lbn, 0, @@ -193,7 +203,7 @@ indirprt(disk, level, blksperindir, lbn, blkno, lastlb blkno = ((ufs1_daddr_t *)indir)[i]; else blkno = ((ufs2_daddr_t *)indir)[i]; - indirprt(disk, level - 1, blksperindir / NINDIR(fs), + indirprt(fs, level - 1, blksperindir / NINDIR(fs), lbn + blksperindir * i, blkno, lastlbn); } }