On 2013-08-21 18:04, Kenneth D. Merry wrote:
Author: ken
Date: Wed Aug 21 23:04:48 2013
New Revision: 254627
URL: http://svnweb.freebsd.org/changeset/base/254627
Log:
Expand the use of stat(2) flags to allow storing some Windows/DOS
and CIFS file attributes as BSD stat(2) flags.
This work is intended to be compatible with ZFS, the Solaris CIFS
server's interaction with ZFS, somewhat compatible with MacOS X,
and of course compatible with Windows.
The Windows attributes that are implemented were chosen based on
the attributes that ZFS already supports.
The summary of the flags is as follows:
[...]
UF_ARCHIVE: Command line name: "uarch", "uarchive"
ZFS_NAME: XAT_ARCHIVE, ZFS_ARCHIVE
Windows name: FILE_ATTRIBUTE_ARCHIVE
The UF_ARCHIVED flag means that the file has changed and
needs to be archived. The meaning is same as
the Windows FILE_ATTRIBUTE_ARCHIVE attribute, and
the ZFS XAT_ARCHIVE and ZFS_ARCHIVE attribute.
msdosfs and ZFS have special handling for this flag.
i.e. they will set it when the file changes.
Is it intended that this flag is automatically added to all new and
existing ZFS files?
# touch test
# ls -alo test
-rw-r--r--- 1 root wheel uarch 0 Aug 28 15:46 test
This breaks 'cp -p' to tmpfs as tmpfs does not allow this flag.
# mkdir /tmp/tmpfs
# mount -t tmpfs tmpfs /tmp/tmpfs
# cp -f test /tmp/tmpfs
cp: test: Operation not supported
[...]
Modified: head/sys/ufs/ufs/ufs_vnops.c
==============================================================================
--- head/sys/ufs/ufs/ufs_vnops.c Wed Aug 21 22:57:29 2013
(r254626)
+++ head/sys/ufs/ufs/ufs_vnops.c Wed Aug 21 23:04:48 2013
(r254627)
@@ -528,9 +528,11 @@ ufs_setattr(ap)
return (EINVAL);
}
if (vap->va_flags != VNOVAL) {
- if ((vap->va_flags & ~(UF_NODUMP | UF_IMMUTABLE | UF_APPEND |
- UF_OPAQUE | UF_NOUNLINK | SF_ARCHIVED | SF_IMMUTABLE |
- SF_APPEND | SF_NOUNLINK | SF_SNAPSHOT)) != 0)
+ if ((vap->va_flags & ~(SF_APPEND | SF_ARCHIVED | SF_IMMUTABLE |
+ 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)
return (EOPNOTSUPP);
if (vp->v_mount->mnt_flag & MNT_RDONLY)
return (EROFS);
Seems a similar change is needed in tmpfs_subr.c:tmpfs_chflags()
(antoine pointed this out)
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"