From nobody Mon Jun 13 14:57:19 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5EDD1843373; Mon, 13 Jun 2022 14:57:19 +0000 (UTC) (envelope-from git@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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4LMF672D86z4VQH; Mon, 13 Jun 2022 14:57:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655132239; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NhqjZsVwbdCsq9nlklSDqtgJ15RLQzmCLvFwgFJkHME=; b=Ywvm7vaVEHEgfIsYjLfZNLgsH+jmYYYxgzBx/WrjE5Xf16Q09dwk/jy2SEHzyjco/+UD8C sHSegp7HNBRnjT9gnbVJbNvH9Sm6XDSbD42MLWbzYTrfLeLe1TaQb9reYnAN1+SOA+rXGF PaXMmT7ktaQQASlI1ME5BXOwARO3qRJMPOlnzmzr/ZXilA0bbN84jhitIpBPUII38jVdxO VuYzQOQ+SrTUZyfIM65k/8y8t37TscQipSDt03FEef+aEIHh9/g3AesOa/BH88owhffimb u0ZaPl19r9eqYRGXM9iIQ4rx2qxay1fRoJ19ysLmwmYMYCrb2wfktVPeLxGgQg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2905E17ECE; Mon, 13 Jun 2022 14:57:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 25DEvJVF044470; Mon, 13 Jun 2022 14:57:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 25DEvJDU044469; Mon, 13 Jun 2022 14:57:19 GMT (envelope-from git) Date: Mon, 13 Jun 2022 14:57:19 GMT Message-Id: <202206131457.25DEvJDU044469@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Doug Ambrisko Subject: git: 6468cd8e0ef9 - main - mount: add vnode usage per file system with mount -v List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ambrisko X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6468cd8e0ef9d1d3331e9de26cd2be59bc778494 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655132239; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NhqjZsVwbdCsq9nlklSDqtgJ15RLQzmCLvFwgFJkHME=; b=m1pSWmS8+Yt8RcqacFTilitk3ltiDnj/PFcmN8noPIJ3adR6CAAWHmkjCgISP/WtWFL9n/ qTX795TYN7sWYsgcmrRgPpV6WKEpBkgJcO54nmfS369mlFJ3pzGJOqCpu5k37A+dYAn5yz Qdn3AqajsxyYyqlx6wBg2/KtZgwxcqL2eiMns7L3LHm87Acv89Pj/ni20SrfkAR3Egct2O cKC2l2UxubIy5U1IjAw1WijZtj2j5lFrdT5qeAoiD4/DsB/nOoK/G7ENpaRDBfYG9eWjVb 7bHufoDbCPB8d59HzRoY3L5pucQkjZWVPiLI4BQjH55yhLnEb03E1mpm7gyXEQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1655132239; a=rsa-sha256; cv=none; b=o6BWmA2jDYJnQKXijJTO0+0tw5L6lg0w9Xx1GsqCZYk6lEEfGzv5qvYBuk2HcvMmbItJ7e CQkUAK9uplmDZojjQfip0fn9F+UDdZUN/7LnL6xFekQH93V1WGTvY/N9aPaweKgz1VkEsk u7Goh84QxDRKkryMXYhc2P9uYUyEOVOHv9H5LH3rfYQFO4eMzkyVn3vz5Hdqd3/+zohiee WWS+ENxvjSPrm8KQ+wWcP0beM2pVmH8JyjNDqZtcoOaQIO6rAH0t0HdG9IEE0yEp8KtaM3 9q16toaSh1KujUFj/gU7ZQUtESgjT8uWLxyoCe9lbhbOp3yLAMOv5COBBOYGVA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by ambrisko: URL: https://cgit.FreeBSD.org/src/commit/?id=6468cd8e0ef9d1d3331e9de26cd2be59bc778494 commit 6468cd8e0ef9d1d3331e9de26cd2be59bc778494 Author: Doug Ambrisko AuthorDate: 2022-06-13 14:56:38 +0000 Commit: Doug Ambrisko CommitDate: 2022-06-13 14:56:38 +0000 mount: add vnode usage per file system with mount -v This avoids the need to drop into the ddb to figure out vnode usage per file system. It helps to see if they are or are not being freed. Suggestion to report active vnode count was from kib@ Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D35436 --- sbin/mount/mount.c | 7 +++++++ sys/kern/vfs_mount.c | 12 ++++++++++++ sys/sys/mount.h | 4 +++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/sbin/mount/mount.c b/sbin/mount/mount.c index 79d9d6cb0caf..bd3d0073c474 100644 --- a/sbin/mount/mount.c +++ b/sbin/mount/mount.c @@ -692,6 +692,13 @@ prmount(struct statfs *sfp) xo_emit("{D:, }{Lw:fsid}{:fsid}", fsidbuf); free(fsidbuf); } + if (sfp->f_nvnodelistsize != 0 || sfp->f_avnodecount != 0) { + xo_open_container("vnodes"); + xo_emit("{D:, }{Lwc:vnodes}{Lw:count}{w:count/%ju}{Lw:active}{:active/%ju}", + (uintmax_t)sfp->f_nvnodelistsize, + (uintmax_t)sfp->f_avnodecount); + xo_close_container("vnodes"); + } } xo_emit("{D:)}\n"); } diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c index 71a40fd97a9c..e3818b67e841 100644 --- a/sys/kern/vfs_mount.c +++ b/sys/kern/vfs_mount.c @@ -2610,6 +2610,8 @@ vfs_copyopt(struct vfsoptlist *opts, const char *name, void *dest, int len) int __vfs_statfs(struct mount *mp, struct statfs *sbp) { + struct vnode *vp; + uint32_t count; /* * Filesystems only fill in part of the structure for updates, we @@ -2624,6 +2626,16 @@ __vfs_statfs(struct mount *mp, struct statfs *sbp) sbp->f_version = STATFS_VERSION; sbp->f_namemax = NAME_MAX; sbp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; + sbp->f_nvnodelistsize = mp->mnt_nvnodelistsize; + + count = 0; + MNT_ILOCK(mp); + TAILQ_FOREACH(vp, &mp->mnt_nvnodelist, v_nmntvnodes) { + if (vrefcnt(vp) > 0) /* racy but does not matter */ + count++; + } + MNT_IUNLOCK(mp); + sbp->f_avnodecount = count; return (mp->mnt_op->vfs_statfs(mp, sbp)); } diff --git a/sys/sys/mount.h b/sys/sys/mount.h index 3383bfe8f431..edac64171f9a 100644 --- a/sys/sys/mount.h +++ b/sys/sys/mount.h @@ -91,7 +91,9 @@ struct statfs { uint64_t f_asyncwrites; /* count of async writes since mount */ uint64_t f_syncreads; /* count of sync reads since mount */ uint64_t f_asyncreads; /* count of async reads since mount */ - uint64_t f_spare[10]; /* unused spare */ + uint32_t f_nvnodelistsize; /* # of vnodes */ + uint32_t f_avnodecount; /* # of active vnodes */ + uint64_t f_spare[9]; /* unused spare */ uint32_t f_namemax; /* maximum filename length */ uid_t f_owner; /* user that mounted the filesystem */ fsid_t f_fsid; /* filesystem id */