freebsd-skq/sys
Kirk McKusick 7aca6291e3 Add support to UFS2 to provide storage for extended attributes.
As this code is not actually used by any of the existing
interfaces, it seems unlikely to break anything (famous
last words).

The internal kernel interface to manipulate these attributes
is invoked using two new IO_ flags: IO_NORMAL and IO_EXT.
These flags may be specified in the ioflags word of VOP_READ,
VOP_WRITE, and VOP_TRUNCATE. Specifying IO_NORMAL means that
you want to do I/O to the normal data part of the file and
IO_EXT means that you want to do I/O to the extended attributes
part of the file. IO_NORMAL and IO_EXT are mutually exclusive
for VOP_READ and VOP_WRITE, but may be specified individually
or together in the case of VOP_TRUNCATE. For example, when
removing a file, VOP_TRUNCATE is called with both IO_NORMAL
and IO_EXT set. For backward compatibility, if neither IO_NORMAL
nor IO_EXT is set, then IO_NORMAL is assumed.

Note that the BA_ and IO_ flags have been `merged' so that they
may both be used in the same flags word. This merger is possible
by assigning the IO_ flags to the low sixteen bits and the BA_
flags the high sixteen bits. This works because the high sixteen
bits of the IO_ word is reserved for read-ahead and help with
write clustering so will never be used for flags. This merge
lets us get away from code of the form:

        if (ioflags & IO_SYNC)
                flags |= BA_SYNC;

For the future, I have considered adding a new field to the
vattr structure, va_extsize. This addition could then be
exported through the stat structure to allow applications to
find out the size of the extended attribute storage and also
would provide a more standard interface for truncating them
(via VOP_SETATTR rather than VOP_TRUNCATE).

I am also contemplating adding a pathconf parameter (for
concreteness, lets call it _PC_MAX_EXTSIZE) which would
let an application determine the maximum size of the extended
atribute storage.

Sponsored by:	DARPA & NAI Labs.
2002-07-19 07:29:39 +00:00
..
alpha o Introduce an argument, VM_ALLOC_WIRED, that requests vm_page_alloc() 2002-07-18 04:08:10 +00:00
amd64 Beautify. This has the side effect of improving portability and 2002-07-18 15:56:46 +00:00
arm Remove label_t and physadr, which seem to have never been used in 2002-07-10 15:47:59 +00:00
boot Remove boot2 temporarily. 2002-07-18 14:50:41 +00:00
cam Correct spelling of 'supplied'. 2002-06-19 20:44:48 +00:00
coda More s/file system/filesystem/g 2002-05-16 21:28:32 +00:00
compat Move the switch statement labels for the explicit 64-bit 2002-07-09 19:25:43 +00:00
conf s/install -c/${INSTALL} ${COPY}/ 2002-07-18 12:02:20 +00:00
contrib Resolve conflicts arising from the ACPI CA 20020611 import. 2002-07-09 17:54:02 +00:00
crypto Fix some really pedantic GCC warnings. 2002-07-15 13:45:15 +00:00
ddb Part 1 of KSE-III 2002-06-29 17:26:22 +00:00
dev Eliminate the need for pccard_common.c by moving the function inline 2002-07-17 05:20:43 +00:00
fs Introduce the DEVFS "rule" subsystem. DEVFS rules permit the 2002-07-17 01:46:48 +00:00
geom Don't use the static thread.. it is going away. 2002-06-29 07:47:20 +00:00
gnu Use hashdestroy() now that it exists. 2002-06-30 03:01:44 +00:00
i4b Remote pci.h/NPCI usage from i4b code. 2002-06-13 06:04:28 +00:00
i386 Beautify. This has the side effect of improving portability and 2002-07-18 15:56:46 +00:00
ia64 Fix a transcription typo. s/ACPI_PTR/ACPI_POINTER/ 2002-07-17 23:49:55 +00:00
isa Clock frequencies reported by sysctl should be unsigned values. Discovered 2002-06-22 16:30:18 +00:00
isofs/cd9660 Quick fix for non-unique inode numbers for hard links. We use the 2002-05-22 08:50:18 +00:00
kern Add support to UFS2 to provide storage for extended attributes. 2002-07-19 07:29:39 +00:00
libkern Convert GNU variadic macros to the ISO 9X variety. 2002-07-15 13:34:50 +00:00
modules Add IPv6 support. 2002-07-15 19:40:23 +00:00
net Add some additional 802.11 media definitions. 2002-07-14 21:58:19 +00:00
netatalk Back out my lats commit of locking down a socket, it conflicts with hsu's work. 2002-05-31 11:52:35 +00:00
netatm - Remove UM_* user land memory macros since they are no longer used. 2002-06-24 22:31:17 +00:00
netgraph NUL terminate the ACNAME passed to userland. 2002-06-22 21:00:53 +00:00
netinet Introduce two new sysctl's: 2002-07-18 19:06:12 +00:00
netinet6 fixed to make mbuf chain. 2002-07-18 04:18:56 +00:00
netipx Back out my lats commit of locking down a socket, it conflicts with hsu's work. 2002-05-31 11:52:35 +00:00
netkey - fixed the order of searching SA table for packets. 2002-07-10 16:39:38 +00:00
netnatm Back out my lats commit of locking down a socket, it conflicts with hsu's work. 2002-05-31 11:52:35 +00:00
netncp Back out my lats commit of locking down a socket, it conflicts with hsu's work. 2002-05-31 11:52:35 +00:00
netns Fix bug which has been there since rev 1.1 where && was used instead of &. 2002-06-09 03:57:34 +00:00
netsmb Back out my lats commit of locking down a socket, it conflicts with hsu's work. 2002-05-31 11:52:35 +00:00
nfs
nfsclient Fix a bug nfs_write() related to ^C'ing during a file write on an 2002-07-16 19:43:59 +00:00
nfsserver 'recm' was not being unconditionally cleared for each loop, leading to 2002-07-17 01:07:08 +00:00
pc98 Use pmap_kenter() rather than vtopte() and bashing the page tables 2002-07-18 00:42:53 +00:00
pccard Integrate the hw.pcic.pd6722_vsense tunable from the nomads list. 2002-07-18 08:13:45 +00:00
pci - Use more correct values to initialize the AGP controller during setup. 2002-07-17 02:52:01 +00:00
posix4 Part 1 of KSE-III 2002-06-29 17:26:22 +00:00
powerpc Remove the statically allocated array that holds OpenFirmware memory mappings 2002-07-18 12:43:08 +00:00
rpc
security/lomac Get rid of warnings, there's no need to do preprocessor concatination of 2002-06-01 18:45:33 +00:00
sparc64 Various comment and minor style fixes. No actual content changes. 2002-07-16 18:20:17 +00:00
sys Add support to UFS2 to provide storage for extended attributes. 2002-07-19 07:29:39 +00:00
tools - Use 'options DEBUG_VFS_LOCKS' instead of the DEBUG_ALL_VFS_LOCKS 2002-07-07 06:39:36 +00:00
ufs Add support to UFS2 to provide storage for extended attributes. 2002-07-19 07:29:39 +00:00
vm o Duplicate an odd side-effect of vm_page_wire() in vm_page_allocate() 2002-07-19 03:33:04 +00:00
Makefile Milestone #1 in cross-arch make releases. 2002-04-26 17:55:27 +00:00