Page MenuHomeFreeBSD

D49651.id.diff
No OneTemporary

D49651.id.diff

diff --git a/sys/compat/freebsd32/freebsd32.h b/sys/compat/freebsd32/freebsd32.h
--- a/sys/compat/freebsd32/freebsd32.h
+++ b/sys/compat/freebsd32/freebsd32.h
@@ -214,7 +214,7 @@
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
--- a/sys/compat/freebsd32/freebsd32_misc.c
+++ b/sys/compat/freebsd32/freebsd32_misc.c
@@ -2309,8 +2309,8 @@
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
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -1618,6 +1618,7 @@
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
--- a/sys/kern/vfs_default.c
+++ b/sys/kern/vfs_default.c
@@ -1513,6 +1513,7 @@
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 @@
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
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -1202,6 +1202,7 @@
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
--- a/sys/sys/stat.h
+++ b/sys/sys/stat.h
@@ -159,7 +159,7 @@
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 @@
#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
--- a/sys/sys/vnode.h
+++ b/sys/sys/vnode.h
@@ -283,7 +283,7 @@
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 @@
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; \
})

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 11, 4:34 PM (3 h, 36 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29528698
Default Alt Text
D49651.id.diff (3 KB)

Event Timeline