From nobody Thu Apr 03 15:00:40 2025 X-Original-To: dev-commits-src-main@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 4ZT4fx03TQz5s1dR; Thu, 03 Apr 2025 15:00:41 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZT4fw6fdSz456F; Thu, 03 Apr 2025 15:00:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743692440; 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=mSUAr7CRW5IO9rBujabZzSCAdplF5JYFWzl7a52+89M=; b=DnV1trvrdNMuF9UTSE7nMtjo50ckEFRdxjWUooiXWkF3CrMcws+uTb7eYuPeqSOVJzQ1gt d+0JD1HqzgvSOEYlg/8E1XxgUnBLmMt8sxOjlRGGEDmvlVhqamJ28566sc5Amfyh8q75rF td9lRL/Mw9DyLNijjSXPsqNeRmN5sUPQ8Isn83MlodYOlOFWnWGsnjHii6m+yGEIOx9sgH 4CHcGMVV6d3CpUfAZq1+480/pW1grWDOjsJvC1hJe0K9i4uw2xyK2YWES+ZU9KfOoC4437 Zibn2y+XST3PCzLEqa26l2yNyFDOOa+UrfAu0OiY39U2gvnavJvGIgE2t7i1cw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1743692440; a=rsa-sha256; cv=none; b=TBxqH3o0koTIzYd2bGzR0CYfwElTLkxMgxtLxveiznwaOQ0MjTP40hy6AoOGMm+krQ3bra QnSoIeo9JvS4Rgr5YlEUCR74LGmWsw1Pv/WZgzLQ1/toA/cuorQ972BB6FQ6W7jqIMkXuk +bUWuvVcHcQ8KetYB7eOUviZjMhiT/wSoBcdofJkd5o1LAqYCOfMoiqQcFJxYuF05OKG3X gBa0K5IXs506yryoTFlhMY9jPidvQcLOoWbujtHC6rTLf9l6723ynGYDkKS6jIL6ANRx4E K5Kj6QXmcAoOBM2eVARRh6VnZJl7dkphh8iQtZOg/LdEyz3sLmQj4ShNhQXoVw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1743692440; 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=mSUAr7CRW5IO9rBujabZzSCAdplF5JYFWzl7a52+89M=; b=U+swh1gVX3ibbXffn3Vg7uEN8bDkX0ep0DushVCKrel+y3/jNXLdXsby6ja5OohB19hfLl 0uWSjh/094z4ITNmOx+M4KiCj8ZtpZFeKEumegeRUYSyLHAHAQCXgtCEeGOcZTByojevbA pqd1qvhHZ47WV10lYqQMHpNRAP9xw80VezwVvnfellhs24VWIyKoIoXLSGL+TdDvtnfvgU JETyxYmnSUGrx/bVDJAJBWbccCBNWHwyrYjs48Lpu0QOj93arRt+garLLOoMgLkwuFn47K Do5GiShdq96RRDI894cmVXGFTVjyzHYieqOTzlvTD9tsVrR2koS9Svnw6EGTQQ== 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 4ZT4fw6CK4z15Zj; Thu, 03 Apr 2025 15:00:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 533F0e4l032184; Thu, 3 Apr 2025 15:00:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 533F0eYL032181; Thu, 3 Apr 2025 15:00:40 GMT (envelope-from git) Date: Thu, 3 Apr 2025 15:00:40 GMT Message-Id: <202504031500.533F0eYL032181@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 86db734ae292 - main - stat(2): add st_bsdflags field List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 86db734ae292fee58532f09b17b50438f6889cc8 Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=86db734ae292fee58532f09b17b50438f6889cc8 commit 86db734ae292fee58532f09b17b50438f6889cc8 Author: Konstantin Belousov AuthorDate: 2025-04-02 20:43:53 +0000 Commit: Konstantin Belousov CommitDate: 2025-04-03 14:45:05 +0000 stat(2): add st_bsdflags field Reviewed by: markj, rmacklem Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D49651 --- sys/compat/freebsd32/freebsd32.h | 2 +- sys/compat/freebsd32/freebsd32_misc.c | 2 +- sys/kern/kern_descrip.c | 1 + sys/kern/vfs_default.c | 2 ++ sys/kern/vfs_subr.c | 1 + sys/sys/stat.h | 5 ++++- sys/sys/vnode.h | 4 ++-- 7 files changed, 12 insertions(+), 5 deletions(-) diff --git a/sys/compat/freebsd32/freebsd32.h b/sys/compat/freebsd32/freebsd32.h index 3b45d291c70a..9d7a99535288 100644 --- a/sys/compat/freebsd32/freebsd32.h +++ b/sys/compat/freebsd32/freebsd32.h @@ -214,7 +214,7 @@ struct stat32 { ino_t st_ino; nlink_t st_nlink; mode_t st_mode; - uint16_t st_padding0; + uint16_t st_bsdflags; uid_t st_uid; gid_t st_gid; uint32_t st_padding1; diff --git a/sys/compat/freebsd32/freebsd32_misc.c b/sys/compat/freebsd32/freebsd32_misc.c index e10f5782c10f..3efc93969419 100644 --- a/sys/compat/freebsd32/freebsd32_misc.c +++ b/sys/compat/freebsd32/freebsd32_misc.c @@ -2309,8 +2309,8 @@ copy_stat(struct stat *in, struct stat32 *out) CP(*in, *out, st_flags); CP(*in, *out, st_gen); CP(*in, *out, st_filerev); + CP(*in, *out, st_bsdflags); TS_CP(*in, *out, st_birthtim); - out->st_padding0 = 0; out->st_padding1 = 0; #ifdef __STAT32_TIME_T_EXT out->st_atim_ext = 0; diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c index 9d81c30df328..f007b22f90ec 100644 --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -1618,6 +1618,7 @@ kern_fstat(struct thread *td, int fd, struct stat *sbp) AUDIT_ARG_FILE(td->td_proc, fp); sbp->st_filerev = 0; + sbp->st_bsdflags = 0; error = fo_stat(fp, sbp, td->td_ucred); fdrop(fp, td); #ifdef __STAT_TIME_T_EXT diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index 9f150570945b..c76fc9f9dc59 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -1513,6 +1513,7 @@ vop_stdstat(struct vop_stat_args *a) vap->va_gen = 0; vap->va_rdev = NODEV; vap->va_filerev = 0; + vap->va_bsdflags = 0; error = VOP_GETATTR(vp, vap, a->a_active_cred); if (error) @@ -1590,6 +1591,7 @@ vop_stdstat(struct vop_stat_args *a) sb->st_blocks = vap->va_bytes / S_BLKSIZE; sb->st_gen = vap->va_gen; sb->st_filerev = vap->va_filerev; + sb->st_bsdflags = vap->va_bsdflags; out: return (vop_stat_helper_post(a, error)); } diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index c8ccbc18a7fe..fb624f751402 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -1202,6 +1202,7 @@ vattr_null(struct vattr *vap) vap->va_gen = VNOVAL; vap->va_vaflags = 0; vap->va_filerev = VNOVAL; + vap->va_bsdflags = 0; } /* diff --git a/sys/sys/stat.h b/sys/sys/stat.h index 15b7ec99bdd9..6aa536732efd 100644 --- a/sys/sys/stat.h +++ b/sys/sys/stat.h @@ -159,7 +159,7 @@ struct stat { ino_t st_ino; /* inode's number */ nlink_t st_nlink; /* number of hard links */ mode_t st_mode; /* inode protection mode */ - __int16_t st_padding0; + __int16_t st_bsdflags; /* misc system flags */ uid_t st_uid; /* user ID of the file's owner */ gid_t st_gid; /* group ID of the file's group */ __int32_t st_padding1; @@ -340,6 +340,9 @@ struct nstat { #define SF_NOUNLINK 0x00100000 /* file may not be removed or renamed */ #define SF_SNAPSHOT 0x00200000 /* snapshot inode */ +/* st_bsdflags */ +#define SFBSD_NAMEDATTR 0x0001 /* file is named attribute or dir */ + #ifdef _KERNEL /* * Shorthand abbreviations of above. diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 8b4ac2031cf2..a2706e6e6b88 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -283,7 +283,7 @@ _Static_assert(sizeof(struct vnode) <= 448, "vnode size crosses 448 bytes"); struct vattr { __enum_uint8(vtype) va_type; /* vnode type (for create) */ u_short va_mode; /* files access mode and type */ - u_short va_padding0; + uint16_t va_bsdflags; /* same as st_bsdflags from stat(2) */ uid_t va_uid; /* owner user id */ gid_t va_gid; /* owner group id */ nlink_t va_nlink; /* number of references to file */ @@ -988,10 +988,10 @@ void vop_rename_fail(struct vop_rename_args *ap); AUDIT_ARG_VNODE1(ap->a_vp); \ _error = mac_vnode_check_stat(_ap->a_active_cred, _ap->a_file_cred, _ap->a_vp);\ if (__predict_true(_error == 0)) { \ - ap->a_sb->st_padding0 = 0; \ ap->a_sb->st_padding1 = 0; \ bzero(_ap->a_sb->st_spare, sizeof(_ap->a_sb->st_spare)); \ ap->a_sb->st_filerev = 0; \ + ap->a_sb->st_bsdflags = 0; \ } \ _error; \ })