mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 11:25:21 +01:00
chflags: Add a new UF_NOCACHE flag
This internet draft (which is close to being an RFC) specifies a new NFSv4.2 attribute which tells the NFSv4.2 client to not cache file data. (Similar to O_DIRECT, but triggered by this attribute set on the file on the NFSv4.2 server and not by the application's open(2).) https://datatracker.ietf.org/doc/draft-ietf-nfsv4-uncacheable-files/ This patch adds a new chflags(1) flag called UF_NOCACHE to implement this. Patches for NFS and ZFS will be done separately. This is a redo of the patch, with a requested name change and a #ifdef in strtofflags.c so that it doesn't break some Linux cross build. The name change was requested by fuz@. Reviewed by: kib (earlier version) MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D58181
This commit is contained in:
1 parent
0f59df8386
commit
290e563166
4 files changed
+9
-2
No files matched your search
@@ -80,7 +80,13 @@ static struct {
|
||||
{ "nosparse", 0, UF_SPARSE },
|
||||
{ "nousparse", 0, UF_SPARSE },
|
||||
{ "nosystem", 0, UF_SYSTEM },
|
||||
/* Needed for some Linux cross-build that uses a stale stat.h. */
|
||||
#ifdef UF_NOCACHE
|
||||
{ "nousystem", 0, UF_SYSTEM },
|
||||
{ "noucache", 1, UF_NOCACHE }
|
||||
#else
|
||||
{ "nousystem", 0, UF_SYSTEM }
|
||||
#endif
|
||||
};
|
||||
#define nmappings (sizeof(mapping) / sizeof(mapping[0]))
|
||||
|
||||
|
||||
@@ -2042,7 +2042,7 @@ tmpfs_chflags(struct vnode *vp, u_long flags, struct ucred *cred,
|
||||
if ((flags & ~(SF_APPEND | SF_ARCHIVED | SF_IMMUTABLE | SF_NOUNLINK |
|
||||
UF_APPEND | UF_ARCHIVE | UF_HIDDEN | UF_IMMUTABLE | UF_NODUMP |
|
||||
UF_NOUNLINK | UF_OFFLINE | UF_OPAQUE | UF_READONLY | UF_REPARSE |
|
||||
UF_SPARSE | UF_SYSTEM)) != 0)
|
||||
UF_SPARSE | UF_SYSTEM | UF_NOCACHE)) != 0)
|
||||
return (EOPNOTSUPP);
|
||||
|
||||
/* Disallow this operation if the file system is mounted read-only. */
|
||||
|
||||
@@ -327,6 +327,7 @@ struct nstat {
|
||||
#define UF_REPARSE 0x00000400 /* Windows reparse point file bit */
|
||||
#define UF_ARCHIVE 0x00000800 /* file needs to be archived */
|
||||
#define UF_READONLY 0x00001000 /* Windows readonly file bit */
|
||||
#define UF_NOCACHE 0x00002000 /* don't cache file data (NFSv4) */
|
||||
/* This is the same as the MacOS X definition of UF_HIDDEN. */
|
||||
#define UF_HIDDEN 0x00008000 /* file is hidden */
|
||||
|
||||
|
||||
@@ -667,7 +667,7 @@ ufs_setattr(
|
||||
SF_NOUNLINK | SF_SNAPSHOT | UF_APPEND | UF_ARCHIVE |
|
||||
UF_HIDDEN | UF_IMMUTABLE | UF_NODUMP | UF_NOUNLINK |
|
||||
UF_OFFLINE | UF_OPAQUE | UF_READONLY | UF_REPARSE |
|
||||
UF_SPARSE | UF_SYSTEM)) != 0)
|
||||
UF_SPARSE | UF_SYSTEM | UF_NOCACHE)) != 0)
|
||||
return (EOPNOTSUPP);
|
||||
if (vp->v_mount->mnt_flag & MNT_RDONLY)
|
||||
return (EROFS);
|
||||
|
||||
Reference in new issue
Block a user