Author: fsu
Date: Tue Apr 30 09:10:45 2019
New Revision: 346955
URL: https://svnweb.freebsd.org/changeset/base/346955

Log:
  MFC r346267, 346269:
  ext2fs: Initial version of DTrace support.
  
  Reviewed by:    pfg, gnn
  
  Differential Revision:    https://reviews.freebsd.org/D19848

Modified:
  stable/12/sys/fs/ext2fs/ext2_alloc.c
  stable/12/sys/fs/ext2fs/ext2_csum.c
  stable/12/sys/fs/ext2fs/ext2_extattr.c
  stable/12/sys/fs/ext2fs/ext2_extents.c
  stable/12/sys/fs/ext2fs/ext2_extents.h
  stable/12/sys/fs/ext2fs/ext2_extern.h
  stable/12/sys/fs/ext2fs/ext2_hash.c
  stable/12/sys/fs/ext2fs/ext2_htree.c
  stable/12/sys/fs/ext2fs/ext2_inode.c
  stable/12/sys/fs/ext2fs/ext2_inode_cnv.c
  stable/12/sys/fs/ext2fs/ext2_lookup.c
  stable/12/sys/fs/ext2fs/ext2_subr.c
  stable/12/sys/fs/ext2fs/ext2_vfsops.c
  stable/12/sys/fs/ext2fs/ext2_vnops.c
  stable/12/sys/fs/ext2fs/fs.h

Modified: stable/12/sys/fs/ext2fs/ext2_alloc.c
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_alloc.c        Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_alloc.c        Tue Apr 30 09:10:45 2019        
(r346955)
@@ -42,6 +42,7 @@
 #include <sys/systm.h>
 #include <sys/conf.h>
 #include <sys/vnode.h>
+#include <sys/sdt.h>
 #include <sys/stat.h>
 #include <sys/mount.h>
 #include <sys/sysctl.h>
@@ -55,6 +56,23 @@
 #include <fs/ext2fs/ext2fs.h>
 #include <fs/ext2fs/ext2_extern.h>
 
+SDT_PROVIDER_DEFINE(ext2fs);
+/*
+ * ext2fs trace probe:
+ * arg0: verbosity. Higher numbers give more verbose messages
+ * arg1: Textual message
+ */
+SDT_PROBE_DEFINE2(ext2fs, , alloc, trace, "int", "char*");
+SDT_PROBE_DEFINE3(ext2fs, , alloc, ext2_reallocblks_realloc,
+    "ino_t", "e2fs_lbn_t", "e2fs_lbn_t");
+SDT_PROBE_DEFINE1(ext2fs, , alloc, ext2_reallocblks_bap, "uint32_t");
+SDT_PROBE_DEFINE1(ext2fs, , alloc, ext2_reallocblks_blkno, "e2fs_daddr_t");
+SDT_PROBE_DEFINE2(ext2fs, , alloc, ext2_b_bitmap_validate_error, "char*", 
"int");
+SDT_PROBE_DEFINE3(ext2fs, , alloc, ext2_nodealloccg_bmap_corrupted,
+    "int", "daddr_t", "char*");
+SDT_PROBE_DEFINE2(ext2fs, , alloc, ext2_blkfree_bad_block, "ino_t", 
"e4fs_daddr_t");
+SDT_PROBE_DEFINE2(ext2fs, , alloc, ext2_vfree_doublefree, "char*", "ino_t");
+
 static daddr_t ext2_alloccg(struct inode *, int, daddr_t, int);
 static daddr_t ext2_clusteralloc(struct inode *, int, daddr_t, int);
 static u_long  ext2_dirpref(struct inode *);
@@ -128,8 +146,7 @@ ext2_alloc(struct inode *ip, daddr_t lbn, e4fs_daddr_t
        }
 nospace:
        EXT2_UNLOCK(ump);
-       ext2_fserr(fs, cred->cr_uid, "filesystem full");
-       uprintf("\n%s: write failed, filesystem is full\n", fs->e2fs_fsmnt);
+       SDT_PROBE2(ext2fs, , alloc, trace, 1, "cannot allocate data block");
        return (ENOSPC);
 }
 
@@ -147,8 +164,10 @@ ext2_alloc_meta(struct inode *ip)
        EXT2_LOCK(ip->i_ump);
        blk = ext2_hashalloc(ip, ino_to_cg(fs, ip->i_number), 0, fs->e2fs_bsize,
            ext2_alloccg);
-       if (0 == blk)
+       if (0 == blk) {
                EXT2_UNLOCK(ip->i_ump);
+               SDT_PROBE2(ext2fs, , alloc, trace, 1, "cannot allocate meta 
block");
+       }
 
        return (blk);
 }
@@ -289,10 +308,8 @@ ext2_reallocblks(struct vop_reallocblks_args *ap)
         * block pointers in the inode and indirect blocks associated
         * with the file.
         */
-#ifdef DEBUG
-       printf("realloc: ino %ju, lbns %jd-%jd\n\told:",
-           (uintmax_t)ip->i_number, (intmax_t)start_lbn, (intmax_t)end_lbn);
-#endif /* DEBUG */
+       SDT_PROBE3(ext2fs, , alloc, ext2_reallocblks_realloc,
+           ip->i_number, start_lbn, end_lbn);
        blkno = newblk;
        for (bap = &sbap[soff], i = 0; i < len; i++, blkno += fs->e2fs_fpb) {
                if (i == ssize) {
@@ -303,9 +320,7 @@ ext2_reallocblks(struct vop_reallocblks_args *ap)
                if (buflist->bs_children[i]->b_blkno != fsbtodb(fs, *bap))
                        panic("ext2_reallocblks: alloc mismatch");
 #endif
-#ifdef DEBUG
-               printf(" %d,", *bap);
-#endif /* DEBUG */
+               SDT_PROBE1(ext2fs, , alloc, ext2_reallocblks_bap, *bap);
                *bap++ = blkno;
        }
        /*
@@ -341,20 +356,13 @@ ext2_reallocblks(struct vop_reallocblks_args *ap)
        /*
         * Last, free the old blocks and assign the new blocks to the buffers.
         */
-#ifdef DEBUG
-       printf("\n\tnew:");
-#endif /* DEBUG */
        for (blkno = newblk, i = 0; i < len; i++, blkno += fs->e2fs_fpb) {
                ext2_blkfree(ip, dbtofsb(fs, buflist->bs_children[i]->b_blkno),
                    fs->e2fs_bsize);
                buflist->bs_children[i]->b_blkno = fsbtodb(fs, blkno);
-#ifdef DEBUG
-               printf(" %d,", blkno);
-#endif /* DEBUG */
+               SDT_PROBE1(ext2fs, , alloc, ext2_reallocblks_blkno, blkno);
        }
-#ifdef DEBUG
-       printf("\n");
-#endif /* DEBUG */
+
        return (0);
 
 fail:
@@ -481,8 +489,7 @@ ext2_valloc(struct vnode *pvp, int mode, struct ucred 
 
 noinodes:
        EXT2_UNLOCK(ump);
-       ext2_fserr(fs, cred->cr_uid, "out of inodes");
-       uprintf("\n%s: create/symlink failed, no inodes free\n", 
fs->e2fs_fsmnt);
+       SDT_PROBE2(ext2fs, , alloc, trace, 1, "out of inodes");
        return (ENOSPC);
 }
 
@@ -959,21 +966,24 @@ ext2_b_bitmap_validate(struct m_ext2fs *fs, struct buf
        /* Check block bitmap block number */
        offset = e2fs_gd_get_b_bitmap(gd) - group_first_block;
        if (offset >= max_bit || !isset(bp->b_data, offset)) {
-               printf("ext2fs: bad block bitmap, group %d\n", cg);
+               SDT_PROBE2(ext2fs, , alloc, ext2_b_bitmap_validate_error,
+                   "bad block bitmap, group", cg);
                return (EINVAL);
        }
 
        /* Check inode bitmap block number */
        offset = e2fs_gd_get_i_bitmap(gd) - group_first_block;
        if (offset >= max_bit || !isset(bp->b_data, offset)) {
-               printf("ext2fs: bad inode bitmap, group %d\n", cg);
+               SDT_PROBE2(ext2fs, , alloc, ext2_b_bitmap_validate_error,
+                   "bad inode bitmap", cg);
                return (EINVAL);
        }
 
        /* Check inode table */
        offset = e2fs_gd_get_i_tables(gd) - group_first_block;
        if (offset >= max_bit || offset + fs->e2fs_itpg >= max_bit) {
-               printf("ext2fs: bad inode table, group %d\n", cg);
+               SDT_PROBE2(ext2fs, , alloc, ext2_b_bitmap_validate_error,
+                   "bad inode table, group", cg);
                return (EINVAL);
        }
 
@@ -1350,9 +1360,8 @@ ext2_nodealloccg(struct inode *ip, int cg, daddr_t ipr
                start = 0;
                loc = memcchr(&ibp[start], 0xff, len);
                if (loc == NULL) {
-                       printf("ext2fs: inode bitmap corrupted: "
-                           "cg = %d, ipref = %lld, fs = %s - run fsck\n",
-                           cg, (long long)ipref, fs->e2fs_fsmnt);
+                       SDT_PROBE3(ext2fs, , alloc, 
ext2_nodealloccg_bmap_corrupted,
+                           cg, ipref, fs->e2fs_fsmnt);
                        brelse(bp);
                        EXT2_LOCK(ump);
                        return (0);
@@ -1401,9 +1410,7 @@ ext2_blkfree(struct inode *ip, e4fs_daddr_t bno, long 
        ump = ip->i_ump;
        cg = dtog(fs, bno);
        if (bno >= fs->e2fs_bcount) {
-               printf("bad block %lld, ino %ju\n", (long long)bno,
-                   (uintmax_t)ip->i_number);
-               ext2_fserr(fs, ip->i_uid, "bad block");
+               SDT_PROBE2(ext2fs, , alloc, ext2_blkfree_bad_block, 
ip->i_number, bno);
                return;
        }
        error = bread(ip->i_devvp,
@@ -1416,9 +1423,8 @@ ext2_blkfree(struct inode *ip, e4fs_daddr_t bno, long 
        bbp = (char *)bp->b_data;
        bno = dtogd(fs, bno);
        if (isclr(bbp, bno)) {
-               printf("block = %lld, fs = %s\n",
+               panic("ext2_blkfree: freeing free block %lld, fs=%s",
                    (long long)bno, fs->e2fs_fsmnt);
-               panic("ext2_blkfree: freeing free block");
        }
        clrbit(bbp, bno);
        EXT2_LOCK(ump);
@@ -1464,8 +1470,8 @@ ext2_vfree(struct vnode *pvp, ino_t ino, int mode)
        ibp = (char *)bp->b_data;
        ino = (ino - 1) % fs->e2fs->e2fs_ipg;
        if (isclr(ibp, ino)) {
-               printf("ino = %ju, fs = %s\n",
-                   ino, fs->e2fs_fsmnt);
+               SDT_PROBE2(ext2fs, , alloc, ext2_vfree_doublefree,
+                   fs->e2fs_fsmnt, ino);
                if (fs->e2fs_ronly == 0)
                        panic("ext2_vfree: freeing free inode");
        }
@@ -1513,26 +1519,12 @@ ext2_mapsearch(struct m_ext2fs *fs, char *bbp, daddr_t
                start = 0;
                loc = memcchr(&bbp[start], 0xff, len);
                if (loc == NULL) {
-                       printf("start = %d, len = %d, fs = %s\n",
+                       panic("ext2_mapsearch: map corrupted: start=%d, len=%d, 
fs=%s",
                            start, len, fs->e2fs_fsmnt);
-                       panic("ext2_mapsearch: map corrupted");
                        /* NOTREACHED */
                }
        }
        return ((loc - bbp) * NBBY + ffs(~*loc) - 1);
-}
-
-/*
- * Fserr prints the name of a filesystem with an error diagnostic.
- *
- * The form of the error message is:
- *     fs: error message
- */
-void
-ext2_fserr(struct m_ext2fs *fs, uid_t uid, char *cp)
-{
-
-       log(LOG_ERR, "uid %u on %s: %s\n", uid, fs->e2fs_fsmnt, cp);
 }
 
 int

Modified: stable/12/sys/fs/ext2fs/ext2_csum.c
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_csum.c Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_csum.c Tue Apr 30 09:10:45 2019        
(r346955)
@@ -31,6 +31,7 @@
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/types.h>
+#include <sys/sdt.h>
 #include <sys/stat.h>
 #include <sys/kernel.h>
 #include <sys/malloc.h>
@@ -50,6 +51,14 @@
 #include <fs/ext2fs/ext2_extattr.h>
 #include <fs/ext2fs/ext2_extern.h>
 
+SDT_PROVIDER_DECLARE(ext2fs);
+/*
+ * ext2fs trace probe:
+ * arg0: verbosity. Higher numbers give more verbose messages
+ * arg1: Textual message
+ */
+SDT_PROBE_DEFINE2(ext2fs, , trace, csum, "int", "char*");
+
 #define EXT2_BG_INODE_BITMAP_CSUM_HI_END       \
        (offsetof(struct ext2_gd, ext4bgd_i_bmap_csum_hi) + \
         sizeof(uint16_t))
@@ -134,8 +143,7 @@ ext2_extattr_blk_csum_verify(struct inode *ip, struct 
 
        if (EXT2_HAS_RO_COMPAT_FEATURE(ip->i_e2fs, 
EXT2F_ROCOMPAT_METADATA_CKSUM) &&
            (header->h_checksum != ext2_extattr_blk_csum(ip, ip->i_facl, 
header))) {
-               printf("WARNING: bad extattr csum detected, ip=%lu - run 
fsck\n",
-                   (unsigned long)ip->i_number);
+               SDT_PROBE2(ext2fs, , trace, csum, 1, "bad extattr csum 
detected");
                return (EIO);
        }
 
@@ -351,8 +359,7 @@ ext2_dir_blk_csum_verify(struct inode *ip, struct buf 
                error = ext2_dx_csum_verify(ip, ep);
 
        if (error)
-               printf("WARNING: bad directory csum detected, ip=%lu"
-                   " - run fsck\n", (unsigned long)ip->i_number);
+               SDT_PROBE2(ext2fs, , trace, csum, 1, "bad directory csum 
detected");
 
        return (error);
 }
@@ -445,8 +452,7 @@ ext2_extent_blk_csum_verify(struct inode *ip, void *da
        calculated = ext2_extent_blk_csum(ip, ehp);
 
        if (provided != calculated) {
-               printf("WARNING: bad extent csum detected, ip=%lu - run fsck\n",
-                   (unsigned long)ip->i_number);
+               SDT_PROBE2(ext2fs, , trace, csum, 1, "bad extent csum 
detected");
                return (EIO);
        }
 
@@ -491,8 +497,7 @@ ext2_gd_i_bitmap_csum_verify(struct m_ext2fs *fs, int 
                calculated &= 0xFFFF;
 
        if (provided != calculated) {
-               printf("WARNING: bad inode bitmap csum detected, "
-                   "cg=%d - run fsck\n", cg);
+               SDT_PROBE2(ext2fs, , trace, csum, 1, "bad inode bitmap csum 
detected");
                return (EIO);
        }
 
@@ -532,8 +537,7 @@ ext2_gd_b_bitmap_csum_verify(struct m_ext2fs *fs, int 
                calculated &= 0xFFFF;
 
        if (provided != calculated) {
-               printf("WARNING: bad block bitmap csum detected, "
-                   "cg=%d - run fsck\n", cg);
+               SDT_PROBE2(ext2fs, , trace, csum, 1, "bad block bitmap csum 
detected");
                return (EIO);
        }
 
@@ -629,7 +633,7 @@ ext2_ei_csum_verify(struct inode *ip, struct ext2fs_di
                if (!memcmp(ei, &ei_zero, sizeof(struct ext2fs_dinode)))
                        return (0);
 
-               printf("WARNING: Bad inode %ju csum - run fsck\n", 
ip->i_number);
+               SDT_PROBE2(ext2fs, , trace, csum, 1, "bad inode csum");
 
                return (EIO);
        }

Modified: stable/12/sys/fs/ext2fs/ext2_extattr.c
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_extattr.c      Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_extattr.c      Tue Apr 30 09:10:45 2019        
(r346955)
@@ -39,6 +39,7 @@
 #include <sys/endian.h>
 #include <sys/conf.h>
 #include <sys/extattr.h>
+#include <sys/sdt.h>
 
 #include <fs/ext2fs/fs.h>
 #include <fs/ext2fs/ext2fs.h>
@@ -48,6 +49,14 @@
 #include <fs/ext2fs/ext2_extattr.h>
 #include <fs/ext2fs/ext2_extern.h>
 
+SDT_PROVIDER_DECLARE(ext2fs);
+/*
+ * ext2fs trace probe:
+ * arg0: verbosity. Higher numbers give more verbose messages
+ * arg1: Textual message
+ */
+SDT_PROBE_DEFINE2(ext2fs, , trace, extattr, "int", "char*");
+
 static int
 ext2_extattr_attrnamespace_to_bsd(int attrnamespace)
 {
@@ -89,9 +98,8 @@ ext2_extattr_name_to_bsd(int attrnamespace, const char
         * XXX: Not all linux namespaces are mapped to bsd for now,
         * return NULL, which will be converted to ENOTSUP on upper layer.
         */
-#ifdef EXT2FS_DEBUG
-       printf("can not convert ext2fs name to bsd: namespace=%d\n", 
attrnamespace);
-#endif
+       SDT_PROBE2(ext2fs, , trace, extattr, 1,
+           "can not convert ext2fs name to bsd namespace");
 
        return (NULL);
 }

Modified: stable/12/sys/fs/ext2fs/ext2_extents.c
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_extents.c      Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_extents.c      Tue Apr 30 09:10:45 2019        
(r346955)
@@ -37,6 +37,7 @@
 #include <sys/bio.h>
 #include <sys/buf.h>
 #include <sys/conf.h>
+#include <sys/sdt.h>
 #include <sys/stat.h>
 
 #include <fs/ext2fs/ext2_mount.h>
@@ -46,9 +47,17 @@
 #include <fs/ext2fs/ext2_extents.h>
 #include <fs/ext2fs/ext2_extern.h>
 
+SDT_PROVIDER_DECLARE(ext2fs);
+/*
+ * ext2fs trace probe:
+ * arg0: verbosity. Higher numbers give more verbose messages
+ * arg1: Textual message
+ */
+SDT_PROBE_DEFINE2(ext2fs, , trace, extents, "int", "char*");
+
 static MALLOC_DEFINE(M_EXT2EXTENTS, "ext2_extents", "EXT2 extents");
 
-#ifdef EXT2FS_DEBUG
+#ifdef EXT2FS_PRINT_EXTENTS
 static void
 ext4_ext_print_extent(struct ext4_extent *ep)
 {
@@ -230,22 +239,22 @@ ext4_ext_check_header(struct inode *ip, struct ext4_ex
        fs = ip->i_e2fs;
 
        if (eh->eh_magic != EXT4_EXT_MAGIC) {
-               error_msg = "invalid magic";
+               error_msg = "header: invalid magic";
                goto corrupted;
        }
        if (eh->eh_max == 0) {
-               error_msg = "invalid eh_max";
+               error_msg = "header: invalid eh_max";
                goto corrupted;
        }
        if (eh->eh_ecount > eh->eh_max) {
-               error_msg = "invalid eh_entries";
+               error_msg = "header: invalid eh_entries";
                goto corrupted;
        }
 
        return (0);
 
 corrupted:
-       ext2_fserr(fs, ip->i_uid, error_msg);
+       SDT_PROBE2(ext2fs, , trace, extents, 1, error_msg);
        return (EIO);
 }
 
@@ -412,7 +421,7 @@ ext4_ext_find_extent(struct inode *ip, daddr_t block,
 
                ppos++;
                if (ppos > depth) {
-                       ext2_fserr(fs, ip->i_uid,
+                       SDT_PROBE2(ext2fs, , trace, extents, 1,
                            "ppos > depth => extent corrupted");
                        error = EIO;
                        brelse(bp);
@@ -643,13 +652,13 @@ ext4_ext_insert_index(struct inode *ip, struct ext4_ex
        fs = ip->i_e2fs;
 
        if (lblk == path->ep_index->ei_blk) {
-               ext2_fserr(fs, ip->i_uid,
+               SDT_PROBE2(ext2fs, , trace, extents, 1,
                    "lblk == index blk => extent corrupted");
                return (EIO);
        }
 
        if (path->ep_header->eh_ecount >= path->ep_header->eh_max) {
-               ext2_fserr(fs, ip->i_uid,
+               SDT_PROBE2(ext2fs, , trace, extents, 1,
                    "ecout > maxcount => extent corrupted");
                return (EIO);
        }
@@ -667,7 +676,7 @@ ext4_ext_insert_index(struct inode *ip, struct ext4_ex
                memmove(idx + 1, idx, len * sizeof(struct ext4_extent_index));
 
        if (idx > EXT_MAX_INDEX(path->ep_header)) {
-               ext2_fserr(fs, ip->i_uid,
+               SDT_PROBE2(ext2fs, , trace, extents, 1,
                    "index is out of range => extent corrupted");
                return (EIO);
        }
@@ -736,7 +745,7 @@ ext4_ext_split(struct inode *ip, struct ext4_extent_pa
         * We will split at current extent for now.
         */
        if (path[depth].ep_ext > EXT_MAX_EXTENT(path[depth].ep_header)) {
-               ext2_fserr(fs, ip->i_uid,
+               SDT_PROBE2(ext2fs, , trace, extents, 1,
                    "extent is out of range => extent corrupted");
                return (EIO);
        }
@@ -773,7 +782,7 @@ ext4_ext_split(struct inode *ip, struct ext4_extent_pa
        ex = EXT_FIRST_EXTENT(neh);
 
        if (path[depth].ep_header->eh_ecount != path[depth].ep_header->eh_max) {
-               ext2_fserr(fs, ip->i_uid,
+               SDT_PROBE2(ext2fs, , trace, extents, 1,
                    "extents count out of range => extent corrupted");
                error = EIO;
                goto cleanup;
@@ -1362,7 +1371,7 @@ ext4_ext_rm_leaf(struct inode *ip, struct ext4_extent_
 
        eh = path[depth].ep_header;
        if (!eh) {
-               ext2_fserr(ip->i_e2fs, ip->i_uid,
+               SDT_PROBE2(ext2fs, , trace, extents, 1,
                    "bad header => extent corrupted");
                return (EIO);
        }
@@ -1449,7 +1458,8 @@ ext4_read_extent_tree_block(struct inode *ip, e4fs_dad
 
        eh = ext4_ext_block_header(bp->b_data);
        if (eh->eh_depth != depth) {
-               ext2_fserr(fs, ip->i_uid, "unexpected eh_depth");
+               SDT_PROBE2(ext2fs, , trace, extents, 1,
+                   "unexpected eh_depth");
                goto err;
        }
 

Modified: stable/12/sys/fs/ext2fs/ext2_extents.h
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_extents.h      Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_extents.h      Tue Apr 30 09:10:45 2019        
(r346955)
@@ -129,7 +129,7 @@ int ext4_ext_remove_space(struct inode *ip, off_t leng
 int ext4_ext_get_blocks(struct inode *ip, int64_t iblock,
     unsigned long max_blocks, struct ucred *cred, struct buf **bpp,
     int *allocate, daddr_t *);
-#ifdef EXT2FS_DEBUG
+#ifdef EXT2FS_PRINT_EXTENTS
 void ext4_ext_print_extent_tree_status(struct inode *ip);
 #endif
 

Modified: stable/12/sys/fs/ext2fs/ext2_extern.h
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_extern.h       Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_extern.h       Tue Apr 30 09:10:45 2019        
(r346955)
@@ -66,7 +66,6 @@ int   ext2_bmaparray(struct vnode *, daddr_t, daddr_t *,
 int    ext4_bmapext(struct vnode *, int32_t, int64_t *, int *, int *);
 void   ext2_clusteracct(struct m_ext2fs *, char *, int, e4fs_daddr_t, int);
 void   ext2_dirbad(struct inode *ip, doff_t offset, char *how);
-void   ext2_fserr(struct m_ext2fs *, uid_t, char *);
 int    ext2_ei2i(struct ext2fs_dinode *, struct inode *);
 int    ext2_getlbns(struct vnode *, daddr_t, struct indir *, int *);
 int    ext2_i2ei(struct inode *, struct ext2fs_dinode *);
@@ -80,7 +79,7 @@ int   ext2_vfree(struct vnode *, ino_t, int);
 int    ext2_vinit(struct mount *, struct vop_vector *, struct vnode **vpp);
 int    ext2_lookup(struct vop_cachedlookup_args *);
 int    ext2_readdir(struct vop_readdir_args *);
-#ifdef EXT2FS_DEBUG
+#ifdef EXT2FS_PRINT_EXTENTS
 void   ext2_print_inode(struct inode *);
 #endif
 int    ext2_direnter(struct inode *, 

Modified: stable/12/sys/fs/ext2fs/ext2_hash.c
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_hash.c Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_hash.c Tue Apr 30 09:10:45 2019        
(r346955)
@@ -57,6 +57,7 @@
 #include <sys/systm.h>
 #include <sys/conf.h>
 #include <sys/vnode.h>
+#include <sys/sdt.h>
 #include <sys/stat.h>
 #include <sys/mount.h>
 
@@ -67,6 +68,14 @@
 #include <fs/ext2fs/ext2_mount.h>
 #include <fs/ext2fs/ext2_extern.h>
 
+SDT_PROVIDER_DECLARE(ext2fs);
+/*
+ * ext2fs trace probe:
+ * arg0: verbosity. Higher numbers give more verbose messages
+ * arg1: Textual message
+ */
+SDT_PROBE_DEFINE2(ext2fs, , trace, hash, "int", "char*");
+
 /* F, G, and H are MD4 functions */
 #define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
 #define G(x, y, z) (((x) & (y)) | ((x) & (z)) | ((y) & (z)))
@@ -300,6 +309,7 @@ ext2_htree_hash(const char *name, int len,
                minor = hash[2];
                break;
        default:
+               SDT_PROBE2(ext2fs, , trace, hash, 1, "unexpected hash version");
                goto error;
        }
 

Modified: stable/12/sys/fs/ext2fs/ext2_htree.c
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_htree.c        Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_htree.c        Tue Apr 30 09:10:45 2019        
(r346955)
@@ -40,6 +40,7 @@
 #include <sys/vnode.h>
 #include <sys/malloc.h>
 #include <sys/dirent.h>
+#include <sys/sdt.h>
 #include <sys/sysctl.h>
 
 #include <ufs/ufs/dir.h>
@@ -54,6 +55,14 @@
 #include <fs/ext2fs/ext2_dir.h>
 #include <fs/ext2fs/htree.h>
 
+SDT_PROVIDER_DECLARE(ext2fs);
+/*
+ * ext2fs trace probe:
+ * arg0: verbosity. Higher numbers give more verbose messages
+ * arg1: Textual message
+ */
+SDT_PROBE_DEFINE2(ext2fs, , trace, htree, "int", "char*");
+
 static void    ext2_append_entry(char *block, uint32_t blksize,
                    struct ext2fs_direct_2 *last_entry,
                    struct ext2fs_direct_2 *new_entry, int csum_size);
@@ -816,7 +825,8 @@ ext2_htree_add_entry(struct vnode *dvp, struct ext2fs_
 
                        if (ext2_htree_get_count(root_entires) ==
                            ext2_htree_get_limit(root_entires)) {
-                               /* Directory index is full */
+                               SDT_PROBE2(ext2fs, , trace, htree, 1,
+                                   "directory index is full");
                                error = EIO;
                                goto finish;
                        }

Modified: stable/12/sys/fs/ext2fs/ext2_inode.c
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_inode.c        Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_inode.c        Tue Apr 30 09:10:45 2019        
(r346955)
@@ -46,6 +46,7 @@
 #include <sys/vnode.h>
 #include <sys/malloc.h>
 #include <sys/rwlock.h>
+#include <sys/sdt.h>
 
 #include <vm/vm.h>
 #include <vm/vm_extern.h>

Modified: stable/12/sys/fs/ext2fs/ext2_inode_cnv.c
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_inode_cnv.c    Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_inode_cnv.c    Tue Apr 30 09:10:45 2019        
(r346955)
@@ -31,6 +31,7 @@
 #include <sys/systm.h>
 #include <sys/endian.h>
 #include <sys/lock.h>
+#include <sys/sdt.h>
 #include <sys/stat.h>
 #include <sys/vnode.h>
 
@@ -40,10 +41,18 @@
 #include <fs/ext2fs/ext2_dinode.h>
 #include <fs/ext2fs/ext2_extern.h>
 
+SDT_PROVIDER_DECLARE(ext2fs);
+/*
+ * ext2fs trace probe:
+ * arg0: verbosity. Higher numbers give more verbose messages
+ * arg1: Textual message
+ */
+SDT_PROBE_DEFINE2(ext2fs, , trace, inode_cnv, "int", "char*");
+
 #define XTIME_TO_NSEC(x)       ((x & EXT3_NSEC_MASK) >> 2)
 #define NSEC_TO_XTIME(t)       (le32toh(t << 2) & EXT3_NSEC_MASK)
 
-#ifdef EXT2FS_DEBUG
+#ifdef EXT2FS_PRINT_EXTENTS
 void
 ext2_print_inode(struct inode *in)
 {
@@ -83,7 +92,7 @@ ext2_print_inode(struct inode *in)
                printf("\n");
        }
 }
-#endif /* EXT2FS_DEBUG */
+#endif /* EXT2FS_PRINT_EXTENTS */
 
 /*
  *     raw ext2 inode to inode
@@ -96,12 +105,12 @@ ext2_ei2i(struct ext2fs_dinode *ei, struct inode *ip)
        if ((ip->i_number < EXT2_FIRST_INO(fs) && ip->i_number != EXT2_ROOTINO) 
||
            (ip->i_number < EXT2_ROOTINO) ||
            (ip->i_number > fs->e2fs->e2fs_icount)) {
-               printf("ext2fs: bad inode number %ju\n", ip->i_number);
+               SDT_PROBE2(ext2fs, , trace, inode_cnv, 1, "bad inode number");
                return (EINVAL);
        }
 
        if (ip->i_number == EXT2_ROOTINO && ei->e2di_nlink == 0) {
-               printf("ext2fs: root inode unallocated\n");
+               SDT_PROBE2(ext2fs, , trace, inode_cnv, 1, "root inode 
unallocated");
                return (EINVAL);
        }
        ip->i_nlink = ei->e2di_nlink;
@@ -110,8 +119,8 @@ ext2_ei2i(struct ext2fs_dinode *ei, struct inode *ip)
        if (EXT2_INODE_SIZE(fs) > E2FS_REV0_INODE_SIZE) {
                if (E2FS_REV0_INODE_SIZE + ei->e2di_extra_isize >
                    EXT2_INODE_SIZE(fs) || (ei->e2di_extra_isize & 3)) {
-                       printf("ext2fs: bad extra inode size %u, inode 
size=%u\n",
-                           ei->e2di_extra_isize, EXT2_INODE_SIZE(fs));
+                       SDT_PROBE2(ext2fs, , trace, inode_cnv, 1,
+                           "bad extra inode size");
                        return (EINVAL);
                }
        }
@@ -199,7 +208,7 @@ ext2_i2ei(struct inode *ip, struct ext2fs_dinode *ei)
        ei->e2di_flags |= (ip->i_flag & IN_E4EXTENTS) ? EXT4_EXTENTS : 0;
        if (ip->i_blocks > ~0U &&
            !EXT2_HAS_RO_COMPAT_FEATURE(fs, EXT2F_ROCOMPAT_HUGE_FILE)) {
-               ext2_fserr(fs, ip->i_uid, "i_blocks value is out of range");
+               SDT_PROBE2(ext2fs, , trace, inode_cnv, 1, "i_blocks value is 
out of range");
                return (EIO);
        }
        if (ip->i_blocks <= 0xffffffffffffULL) {

Modified: stable/12/sys/fs/ext2fs/ext2_lookup.c
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_lookup.c       Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_lookup.c       Tue Apr 30 09:10:45 2019        
(r346955)
@@ -53,6 +53,7 @@
 #include <sys/vnode.h>
 #include <sys/malloc.h>
 #include <sys/dirent.h>
+#include <sys/sdt.h>
 #include <sys/sysctl.h>
 
 #include <ufs/ufs/dir.h>
@@ -66,6 +67,18 @@
 #include <fs/ext2fs/ext2_extern.h>
 #include <fs/ext2fs/fs.h>
 
+SDT_PROVIDER_DECLARE(ext2fs);
+/*
+ * ext2fs trace probe:
+ * arg0: verbosity. Higher numbers give more verbose messages
+ * arg1: Textual message
+ */
+SDT_PROBE_DEFINE2(ext2fs, , lookup, trace, "int", "char*");
+SDT_PROBE_DEFINE4(ext2fs, , trace, ext2_dirbad_error,
+    "char*", "ino_t", "doff_t", "char*");
+SDT_PROBE_DEFINE5(ext2fs, , trace, ext2_dirbadentry_error,
+    "char*", "int", "uint32_t", "uint16_t", "uint8_t");
+
 #ifdef INVARIANTS
 static int dirchk = 1;
 #else
@@ -810,10 +823,8 @@ ext2_dirbad(struct inode *ip, doff_t offset, char *how
                    mp->mnt_stat.f_mntonname, (uintmax_t)ip->i_number,
                    (long)offset, how);
        else
-               (void)printf("%s: bad dir ino %ju at offset %ld: %s\n",
-                   mp->mnt_stat.f_mntonname, (uintmax_t)ip->i_number,
-                   (long)offset, how);
-
+               SDT_PROBE4(ext2fs, , trace, ext2_dirbad_error,
+                   mp->mnt_stat.f_mntonname, ip->i_number, offset, how);
 }
 
 /*
@@ -849,10 +860,9 @@ ext2_dirbadentry(struct vnode *dp, struct ext2fs_direc
        */
 
        if (error_msg != NULL) {
-               printf("bad directory entry: %s\n", error_msg);
-               printf("offset=%d, inode=%lu, rec_len=%u, name_len=%u\n",
-                       entryoffsetinblock, (unsigned long)de->e2d_ino,
-                       de->e2d_reclen, de->e2d_namlen);
+               SDT_PROBE5(ext2fs, , trace, ext2_dirbadentry_error,
+                   error_msg, entryoffsetinblock,
+                   de->e2d_ino, de->e2d_reclen, de->e2d_namlen);
        }
        return error_msg == NULL ? 0 : 1;
 }
@@ -1276,7 +1286,8 @@ ext2_checkpath(struct inode *source, struct inode *tar
 
 out:
        if (error == ENOTDIR)
-               printf("checkpath: .. not a directory\n");
+               SDT_PROBE2(ext2fs, , lookup, trace, 1,
+                   "checkpath: .. not a directory");
        if (vp != NULL)
                vput(vp);
        return (error);

Modified: stable/12/sys/fs/ext2fs/ext2_subr.c
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_subr.c Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_subr.c Tue Apr 30 09:10:45 2019        
(r346955)
@@ -41,6 +41,7 @@
 #include <sys/param.h>
 
 #include <sys/proc.h>
+#include <sys/sdt.h>
 #include <sys/systm.h>
 #include <sys/bio.h>
 #include <sys/buf.h>

Modified: stable/12/sys/fs/ext2fs/ext2_vfsops.c
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_vfsops.c       Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_vfsops.c       Tue Apr 30 09:10:45 2019        
(r346955)
@@ -52,6 +52,7 @@
 #include <sys/endian.h>
 #include <sys/fcntl.h>
 #include <sys/malloc.h>
+#include <sys/sdt.h>
 #include <sys/stat.h>
 #include <sys/mutex.h>
 
@@ -67,7 +68,17 @@
 #include <fs/ext2fs/ext2_extern.h>
 #include <fs/ext2fs/ext2_extents.h>
 
+SDT_PROVIDER_DECLARE(ext2fs);
+/*
+ * ext2fs trace probe:
+ * arg0: verbosity. Higher numbers give more verbose messages
+ * arg1: Textual message
+ */
+SDT_PROBE_DEFINE2(ext2fs, , vfsops, trace, "int", "char*");
+SDT_PROBE_DEFINE2(ext2fs, , vfsops, ext2_cg_validate_error, "char*", "int");
+SDT_PROBE_DEFINE1(ext2fs, , vfsops, ext2_compute_sb_data_error, "char*");
 
+
 static int     ext2_flushfiles(struct mount *mp, int flags, struct thread *td);
 static int     ext2_mountfs(struct vnode *, struct mount *);
 static int     ext2_reload(struct mount *mp, struct thread *td);
@@ -381,48 +392,54 @@ ext2_cg_validate(struct m_ext2fs *fs)
 
                b_bitmap = e2fs_gd_get_b_bitmap(gd);
                if (b_bitmap == 0) {
-                       printf("ext2fs: cg %u: block bitmap is zero\n", i);
+                       SDT_PROBE2(ext2fs, , vfsops, ext2_cg_validate_error,
+                           "block bitmap is zero", i);
                        return (EINVAL);
 
                }
                if (b_bitmap <= last_cg_block) {
-                       printf("ext2fs: cg %u: block bitmap overlaps gds\n", i);
+                       SDT_PROBE2(ext2fs, , vfsops, ext2_cg_validate_error,
+                           "block bitmap overlaps gds", i);
                        return (EINVAL);
                }
                if (b_bitmap < first_block || b_bitmap > last_block) {
-                       printf("ext2fs: cg %u: block bitmap not in group, 
blk=%ju\n",
-                           i, b_bitmap);
+                       SDT_PROBE2(ext2fs, , vfsops, ext2_cg_validate_error,
+                           "block bitmap not in group", i);
                        return (EINVAL);
                }
 
                i_bitmap = e2fs_gd_get_i_bitmap(gd);
                if (i_bitmap == 0) {
-                       printf("ext2fs: cg %u: inode bitmap is zero\n", i);
+                       SDT_PROBE2(ext2fs, , vfsops, ext2_cg_validate_error,
+                           "inode bitmap is zero", i);
                        return (EINVAL);
                }
                if (i_bitmap <= last_cg_block) {
-                       printf("ext2fs: cg %u: inode bitmap overlaps gds\n", i);
+                       SDT_PROBE2(ext2fs, , vfsops, ext2_cg_validate_error,
+                           "inode bitmap overlaps gds", i);
                        return (EINVAL);
                }
                if (i_bitmap < first_block || i_bitmap > last_block) {
-                       printf("ext2fs: cg %u: inode bitmap not in group 
blk=%ju\n",
-                           i, i_bitmap);
+                       SDT_PROBE2(ext2fs, , vfsops, ext2_cg_validate_error,
+                           "inode bitmap not in group blk", i);
                        return (EINVAL);
                }
 
                i_tables = e2fs_gd_get_i_tables(gd);
                if (i_tables == 0) {
-                       printf("ext2fs: cg %u: inode table is zero\n", i);
+                       SDT_PROBE2(ext2fs, , vfsops, ext2_cg_validate_error,
+                           "inode table is zero", i);
                        return (EINVAL);
                }
                if (i_tables <= last_cg_block) {
-                       printf("ext2fs: cg %u: inode talbes overlaps gds\n", i);
+                       SDT_PROBE2(ext2fs, , vfsops, ext2_cg_validate_error,
+                           "inode talbes overlaps gds", i);
                        return (EINVAL);
                }
                if (i_tables < first_block ||
                    i_tables + fs->e2fs_itpg - 1 > last_block) {
-                       printf("ext2fs: cg %u: inode tables not in group 
blk=%ju\n",
-                           i, i_tables);
+                       SDT_PROBE2(ext2fs, , vfsops, ext2_cg_validate_error,
+                           "inode tables not in group blk", i);
                        return (EINVAL);
                }
 
@@ -450,7 +467,8 @@ ext2_compute_sb_data(struct vnode *devvp, struct ext2f
        /* Check checksum features */
        if (EXT2_HAS_RO_COMPAT_FEATURE(fs, EXT2F_ROCOMPAT_GDT_CSUM) &&
            EXT2_HAS_RO_COMPAT_FEATURE(fs, EXT2F_ROCOMPAT_METADATA_CKSUM)) {
-               printf("ext2fs: incorrect checksum features combination\n");
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "incorrect checksum features combination");
                return (EINVAL);
        }
 
@@ -467,7 +485,8 @@ ext2_compute_sb_data(struct vnode *devvp, struct ext2f
 
        /* Check for block size = 1K|2K|4K */
        if (es->e2fs_log_bsize > 2) {
-               printf("ext2fs: bad block size: %d\n", es->e2fs_log_bsize);
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "bad block size");
                return (EINVAL);
        }
 
@@ -479,15 +498,15 @@ ext2_compute_sb_data(struct vnode *devvp, struct ext2f
        /* Check for fragment size */
        if (es->e2fs_log_fsize >
            (EXT2_MAX_FRAG_LOG_SIZE - EXT2_MIN_BLOCK_LOG_SIZE)) {
-               printf("ext2fs: invalid log cluster size: %u\n",
-                   es->e2fs_log_fsize);
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "invalid log cluster size");
                return (EINVAL);
        }
 
        fs->e2fs_fsize = EXT2_MIN_FRAG_SIZE << es->e2fs_log_fsize;
        if (fs->e2fs_fsize != fs->e2fs_bsize) {
-               printf("ext2fs: fragment size (%u) != block size %u\n",
-                   fs->e2fs_fsize, fs->e2fs_bsize);
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "fragment size != block size");
                return (EINVAL);
        }
 
@@ -495,8 +514,8 @@ ext2_compute_sb_data(struct vnode *devvp, struct ext2f
 
        /* Check reserved gdt blocks for future filesystem expansion */
        if (es->e2fs_reserved_ngdb > (fs->e2fs_bsize / 4)) {
-               printf("ext2fs: number of reserved GDT blocks too large: %u\n",
-                   es->e2fs_reserved_ngdb);
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "number of reserved GDT blocks too large");
                return (EINVAL);
        }
 
@@ -509,8 +528,8 @@ ext2_compute_sb_data(struct vnode *devvp, struct ext2f
                 * Check first ino.
                 */
                if (es->e2fs_first_ino < EXT2_FIRSTINO) {
-                       printf("ext2fs: invalid first ino: %u\n",
-                           es->e2fs_first_ino);
+                       SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                           "invalid first ino");
                        return (EINVAL);
                }
 
@@ -520,8 +539,8 @@ ext2_compute_sb_data(struct vnode *devvp, struct ext2f
                if (EXT2_INODE_SIZE(fs) < E2FS_REV0_INODE_SIZE ||
                    EXT2_INODE_SIZE(fs) > fs->e2fs_bsize ||
                    (fs->e2fs_isize & (fs->e2fs_isize - 1)) != 0) {
-                       printf("ext2fs: invalid inode size %u\n",
-                           fs->e2fs_isize);
+                       SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                           "invalid inode size");
                        return (EINVAL);
                }
        }
@@ -529,33 +548,36 @@ ext2_compute_sb_data(struct vnode *devvp, struct ext2f
        /* Check group descriptors */
        if (EXT2_HAS_INCOMPAT_FEATURE(fs, EXT2F_INCOMPAT_64BIT) &&
            es->e3fs_desc_size != E2FS_64BIT_GD_SIZE) {
-                       printf("ext2fs: unsupported 64bit descriptor size %u\n",
-                           es->e3fs_desc_size);
-                       return (EINVAL);
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "unsupported 64bit descriptor size");
+               return (EINVAL);
        }
 
        fs->e2fs_bpg = es->e2fs_bpg;
        fs->e2fs_fpg = es->e2fs_fpg;
        if (fs->e2fs_bpg == 0 || fs->e2fs_fpg == 0) {
-               printf("ext2fs: zero blocks/fragments per group\n");
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "zero blocks/fragments per group");
                return (EINVAL);
        }
        if (fs->e2fs_bpg != fs->e2fs_bsize * 8) {
-               printf("ext2fs: non-standard group size unsupported %d\n",
-                   fs->e2fs_bpg);
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "non-standard group size unsupported");
                return (EINVAL);
        }
 
        fs->e2fs_ipb = fs->e2fs_bsize / EXT2_INODE_SIZE(fs);
        if (fs->e2fs_ipb == 0 ||
            fs->e2fs_ipb > fs->e2fs_bsize / E2FS_REV0_INODE_SIZE) {
-               printf("ext2fs: bad inodes per block size\n");
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "bad inodes per block size");
                return (EINVAL);
        }
 
        fs->e2fs_ipg = es->e2fs_ipg;
        if (fs->e2fs_ipg < fs->e2fs_ipb || fs->e2fs_ipg >  fs->e2fs_bsize * 8) {
-               printf("ext2fs: invalid inodes per group: %u\n", fs->e2fs_ipb);
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "invalid inodes per group");
                return (EINVAL);
        }
 
@@ -571,25 +593,29 @@ ext2_compute_sb_data(struct vnode *devvp, struct ext2f
        }
        if (fs->e2fs_rbcount > fs->e2fs_bcount ||
            fs->e2fs_fbcount > fs->e2fs_bcount) {
-               printf("ext2fs: invalid block count\n");
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "invalid block count");
                return (EINVAL);
        }
        if (es->e2fs_first_dblock >= fs->e2fs_bcount) {
-               printf("ext2fs: first data block out of range\n");
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "first data block out of range");
                return (EINVAL);
        }
 
        fs->e2fs_gcount = howmany(fs->e2fs_bcount - es->e2fs_first_dblock,
            EXT2_BLOCKS_PER_GROUP(fs));
        if (fs->e2fs_gcount > ((uint64_t)1 << 32) - EXT2_DESCS_PER_BLOCK(fs)) {
-               printf("ext2fs: groups count too large: %u\n", fs->e2fs_gcount);
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "groups count too large");
                return (EINVAL);
        }
 
        /* Check for extra isize in big inodes. */
        if (EXT2_HAS_RO_COMPAT_FEATURE(fs, EXT2F_ROCOMPAT_EXTRA_ISIZE) &&
            EXT2_INODE_SIZE(fs) < sizeof(struct ext2fs_dinode)) {
-               printf("ext2fs: no space for extra inode timestamps\n");
+               SDT_PROBE1(ext2fs, , vfsops, ext2_compute_sb_data_error,
+                   "no space for extra inode timestamps");
                return (EINVAL);
        }
 
@@ -1095,8 +1121,7 @@ ext2_sync(struct mount *mp, int waitfor)
        td = curthread;
        fs = ump->um_e2fs;
        if (fs->e2fs_fmod != 0 && fs->e2fs_ronly != 0) {                /* XXX 
*/
-               printf("fs = %s\n", fs->e2fs_fsmnt);
-               panic("ext2_sync: rofs mod");
+               panic("ext2_sync: rofs mod fs=%s", fs->e2fs_fsmnt);
        }
 
        /*
@@ -1242,7 +1267,7 @@ ext2_vget(struct mount *mp, ino_t ino, int flags, stru
                for (i = used_blocks; i < EXT2_NDIR_BLOCKS; i++)
                        ip->i_db[i] = 0;
        }
-#ifdef EXT2FS_DEBUG
+#ifdef EXT2FS_PRINT_EXTENTS
        ext2_print_inode(ip);
        ext4_ext_print_extent_tree_status(ip);
 #endif

Modified: stable/12/sys/fs/ext2fs/ext2_vnops.c
==============================================================================
--- stable/12/sys/fs/ext2fs/ext2_vnops.c        Tue Apr 30 08:17:11 2019        
(r346954)
+++ stable/12/sys/fs/ext2fs/ext2_vnops.c        Tue Apr 30 09:10:45 2019        
(r346955)
@@ -51,6 +51,7 @@
 #include <sys/kernel.h>
 #include <sys/fcntl.h>
 #include <sys/filio.h>
+#include <sys/sdt.h>
 #include <sys/stat.h>
 #include <sys/bio.h>
 #include <sys/buf.h>
@@ -92,6 +93,14 @@
 #include <fs/ext2fs/ext2_extattr.h>
 #include <fs/ext2fs/ext2_extents.h>
 

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to