More s/file system/filesystem/g
This commit is contained in:
parent
2bf6dd18ba
commit
d394511de3
@ -482,7 +482,7 @@ inittodr(base)
|
|||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
|
|
||||||
if (base < 5*SECYR) {
|
if (base < 5*SECYR) {
|
||||||
printf("WARNING: preposterous time in file system");
|
printf("WARNING: preposterous time in filesystem");
|
||||||
/* read the system clock anyway */
|
/* read the system clock anyway */
|
||||||
base = 6*SECYR + 186*SECDAY + SECDAY/2;
|
base = 6*SECYR + 186*SECDAY + SECDAY/2;
|
||||||
badbase = 1;
|
badbase = 1;
|
||||||
@ -509,7 +509,7 @@ inittodr(base)
|
|||||||
if (ct.year < 70 || ct.mon < 1 || ct.mon > 12 || ct.day < 1 ||
|
if (ct.year < 70 || ct.mon < 1 || ct.mon > 12 || ct.day < 1 ||
|
||||||
ct.day > 31 || ct.hour > 23 || ct.min > 59 || ct.sec > 59) {
|
ct.day > 31 || ct.hour > 23 || ct.min > 59 || ct.sec > 59) {
|
||||||
/*
|
/*
|
||||||
* Believe the time in the file system for lack of
|
* Believe the time in the filesystem for lack of
|
||||||
* anything better, resetting the TODR.
|
* anything better, resetting the TODR.
|
||||||
*/
|
*/
|
||||||
s = splclock();
|
s = splclock();
|
||||||
|
@ -186,7 +186,7 @@ block_map(int file_block)
|
|||||||
#define max(a, b) ((a) > (b) ? (a) : (b))
|
#define max(a, b) ((a) > (b) ? (a) : (b))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sanity checks for old file systems.
|
* Sanity checks for old filesystems.
|
||||||
*
|
*
|
||||||
* XXX - goes away some day.
|
* XXX - goes away some day.
|
||||||
*/
|
*/
|
||||||
|
@ -144,7 +144,7 @@ typedef struct _EFI_DISK_IO {
|
|||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Simple file system protocol
|
// Simple filesystem protocol
|
||||||
//
|
//
|
||||||
|
|
||||||
#define SIMPLE_FILE_SYSTEM_PROTOCOL \
|
#define SIMPLE_FILE_SYSTEM_PROTOCOL \
|
||||||
|
@ -183,7 +183,7 @@ typedef struct
|
|||||||
/*
|
/*
|
||||||
** FICL_WANT_FILE
|
** FICL_WANT_FILE
|
||||||
** Includes the FILE and FILE-EXT wordset and associated code. Turn this off if you do not
|
** Includes the FILE and FILE-EXT wordset and associated code. Turn this off if you do not
|
||||||
** have a file system!
|
** have a filesystem!
|
||||||
** Contributed by Larry Hastings
|
** Contributed by Larry Hastings
|
||||||
*/
|
*/
|
||||||
#if !defined (FICL_WANT_FILE)
|
#if !defined (FICL_WANT_FILE)
|
||||||
|
@ -183,7 +183,7 @@ typedef struct
|
|||||||
/*
|
/*
|
||||||
** FICL_WANT_FILE
|
** FICL_WANT_FILE
|
||||||
** Includes the FILE and FILE-EXT wordset and associated code. Turn this off if you do not
|
** Includes the FILE and FILE-EXT wordset and associated code. Turn this off if you do not
|
||||||
** have a file system!
|
** have a filesystem!
|
||||||
** Contributed by Larry Hastings
|
** Contributed by Larry Hastings
|
||||||
*/
|
*/
|
||||||
#if !defined (FICL_WANT_FILE)
|
#if !defined (FICL_WANT_FILE)
|
||||||
|
@ -185,7 +185,7 @@ typedef struct
|
|||||||
/*
|
/*
|
||||||
** FICL_WANT_FILE
|
** FICL_WANT_FILE
|
||||||
** Includes the FILE and FILE-EXT wordset and associated code. Turn this off if you do not
|
** Includes the FILE and FILE-EXT wordset and associated code. Turn this off if you do not
|
||||||
** have a file system!
|
** have a filesystem!
|
||||||
** Contributed by Larry Hastings
|
** Contributed by Larry Hastings
|
||||||
*/
|
*/
|
||||||
#if !defined (FICL_WANT_FILE)
|
#if !defined (FICL_WANT_FILE)
|
||||||
|
@ -396,10 +396,10 @@ main(int (*openfirm)(void *))
|
|||||||
bootdev.d_dev = &ofwdisk;
|
bootdev.d_dev = &ofwdisk;
|
||||||
/*
|
/*
|
||||||
* Sun compatible bootable CD-ROMs have a disk label placed
|
* Sun compatible bootable CD-ROMs have a disk label placed
|
||||||
* before the cd9660 data, with the actual file system being
|
* before the cd9660 data, with the actual filesystem being
|
||||||
* in the first partition, while the other partitions contain
|
* in the first partition, while the other partitions contain
|
||||||
* pseudo disk labels with embedded boot blocks for different
|
* pseudo disk labels with embedded boot blocks for different
|
||||||
* architectures, which may be followed by UFS file systems.
|
* architectures, which may be followed by UFS filesystems.
|
||||||
* The firmware will set the boot path to the partition it
|
* The firmware will set the boot path to the partition it
|
||||||
* boots from ('f' in the sun4u case), but we want the kernel
|
* boots from ('f' in the sun4u case), but we want the kernel
|
||||||
* to be loaded from the cd9660 fs ('a'), so the boot path
|
* to be loaded from the cd9660 fs ('a'), so the boot path
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
|
$FreeBSD$
|
||||||
|
|
||||||
Announcing the Availability of the
|
Announcing the Availability of the
|
||||||
Coda Distributed
|
Coda Distributed
|
||||||
Filesystem
|
Filesystem
|
||||||
for
|
for
|
||||||
BSD Unix Systems
|
BSD Unix Systems
|
||||||
|
|
||||||
Coda is a distributed file system like NFS and AFS. It is
|
Coda is a distributed filesystem like NFS and AFS. It is
|
||||||
freely available, like NFS. But it functions much like AFS in being a
|
freely available, like NFS. But it functions much like AFS in being a
|
||||||
"stateful" file system. Coda and AFS cache files on your local
|
"stateful" filesystem. Coda and AFS cache files on your local
|
||||||
machine to improve performance. But Coda goes a step further than AFS
|
machine to improve performance. But Coda goes a step further than AFS
|
||||||
by letting you access the cached files when there is no available
|
by letting you access the cached files when there is no available
|
||||||
network, viz. disconnected laptops and network outages. In Coda, both
|
network, viz. disconnected laptops and network outages. In Coda, both
|
||||||
@ -25,12 +27,12 @@ progress and does have bugs. It is, though, very usable. Our
|
|||||||
interest is in making Coda available to as many people as possible and
|
interest is in making Coda available to as many people as possible and
|
||||||
to have Coda evolve and flourish.
|
to have Coda evolve and flourish.
|
||||||
|
|
||||||
The bulk of the Coda file system code supports the Coda client
|
The bulk of the Coda filesystem code supports the Coda client
|
||||||
program, the Coda server program and the utilities needed by both.
|
program, the Coda server program and the utilities needed by both.
|
||||||
All these programs are unix programs and can run equally well on any
|
All these programs are unix programs and can run equally well on any
|
||||||
Unix platform. Our main development thrust is improving these
|
Unix platform. Our main development thrust is improving these
|
||||||
programs. There is a small part of Coda that deals with the kernel to
|
programs. There is a small part of Coda that deals with the kernel to
|
||||||
file system interface. This code is OS specific (but should not be
|
filesystem interface. This code is OS specific (but should not be
|
||||||
platform specific).
|
platform specific).
|
||||||
|
|
||||||
Coda is currently available for several OS's and platforms:
|
Coda is currently available for several OS's and platforms:
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon University.
|
* This code was written for the Coda filesystem at Carnegie Mellon University.
|
||||||
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ struct coda_clstat {
|
|||||||
extern struct coda_clstat coda_clstat;
|
extern struct coda_clstat coda_clstat;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CODA structure to hold mount/file system information
|
* CODA structure to hold mount/filesystem information
|
||||||
*/
|
*/
|
||||||
struct coda_mntinfo {
|
struct coda_mntinfo {
|
||||||
struct vnode *mi_rootvp;
|
struct vnode *mi_rootvp;
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon University.
|
* This code was written for the Coda filesystem at Carnegie Mellon University.
|
||||||
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon University.
|
* This code was written for the Coda filesystem at Carnegie Mellon University.
|
||||||
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon University.
|
* This code was written for the Coda filesystem at Carnegie Mellon University.
|
||||||
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ITC Remote file system - vice ioctl interface module
|
* ITC Remote filesystem - vice ioctl interface module
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon
|
* This code was written for the Coda filesystem at Carnegie Mellon
|
||||||
* University. Contributers include David Steere, James Kistler, and
|
* University. Contributers include David Steere, James Kistler, and
|
||||||
* M. Satyanarayanan. */
|
* M. Satyanarayanan. */
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon
|
* This code was written for the Coda filesystem at Carnegie Mellon
|
||||||
* University. Contributers include David Steere, James Kistler, and
|
* University. Contributers include David Steere, James Kistler, and
|
||||||
* M. Satyanarayanan.
|
* M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon
|
* This code was written for the Coda filesystem at Carnegie Mellon
|
||||||
* University. Contributers include David Steere, James Kistler, and
|
* University. Contributers include David Steere, James Kistler, and
|
||||||
* M. Satyanarayanan.
|
* M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
@ -371,7 +371,7 @@ coda_root(vfsp, vpp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get file system statistics.
|
* Get filesystem statistics.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
coda_nb_statfs(vfsp, sbp, td)
|
coda_nb_statfs(vfsp, sbp, td)
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon
|
* This code was written for the Coda filesystem at Carnegie Mellon
|
||||||
* University. Contributers include David Steere, James Kistler, and
|
* University. Contributers include David Steere, James Kistler, and
|
||||||
* M. Satyanarayanan.
|
* M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
@ -950,7 +950,7 @@ coda_inactive(v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Remote file system operations having to do with directory manipulation.
|
* Remote filesystem operations having to do with directory manipulation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1681,7 +1681,7 @@ printf("coda_readdir: Internally Opening %p\n", vp);
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Convert from file system blocks to device blocks
|
* Convert from filesystem blocks to device blocks
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
coda_bmap(v)
|
coda_bmap(v)
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon
|
* This code was written for the Coda filesystem at Carnegie Mellon
|
||||||
* University. Contributers include David Steere, James Kistler, and
|
* University. Contributers include David Steere, James Kistler, and
|
||||||
* M. Satyanarayanan.
|
* M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
|
@ -596,7 +596,7 @@ options NFS_ROOT #NFS usable as root device
|
|||||||
# You can find details in src/sys/ufs/ifs/README .
|
# You can find details in src/sys/ufs/ifs/README .
|
||||||
options IFS
|
options IFS
|
||||||
|
|
||||||
# Soft updates is a technique for improving file system speed and
|
# Soft updates is a technique for improving filesystem speed and
|
||||||
# making abrupt shutdown less risky.
|
# making abrupt shutdown less risky.
|
||||||
#
|
#
|
||||||
options SOFTUPDATES
|
options SOFTUPDATES
|
||||||
|
@ -730,7 +730,7 @@ geom/geom_slice.c optional geom
|
|||||||
geom/geom_subr.c optional geom
|
geom/geom_subr.c optional geom
|
||||||
geom/geom_sunlabel.c optional geom
|
geom/geom_sunlabel.c optional geom
|
||||||
gnu/ext2fs/ext2_alloc.c optional ext2fs \
|
gnu/ext2fs/ext2_alloc.c optional ext2fs \
|
||||||
warning "kernel contains GPL contaminated ext2fs file system"
|
warning "kernel contains GPL contaminated ext2fs filesystem"
|
||||||
gnu/ext2fs/ext2_balloc.c optional ext2fs
|
gnu/ext2fs/ext2_balloc.c optional ext2fs
|
||||||
gnu/ext2fs/ext2_bmap.c optional ext2fs
|
gnu/ext2fs/ext2_bmap.c optional ext2fs
|
||||||
gnu/ext2fs/ext2_ihash.c optional ext2fs
|
gnu/ext2fs/ext2_ihash.c optional ext2fs
|
||||||
|
@ -111,7 +111,7 @@ CAPABILITIES opt_cap.h
|
|||||||
# Do we want the config file compiled into the kernel?
|
# Do we want the config file compiled into the kernel?
|
||||||
INCLUDE_CONFIG_FILE opt_config.h
|
INCLUDE_CONFIG_FILE opt_config.h
|
||||||
|
|
||||||
# Options for static file systems. These should only be used at config
|
# Options for static filesystems. These should only be used at config
|
||||||
# time, since the corresponding lkms cannot work if there are any static
|
# time, since the corresponding lkms cannot work if there are any static
|
||||||
# dependencies. Unusability is enforced by hiding the defines for the
|
# dependencies. Unusability is enforced by hiding the defines for the
|
||||||
# options in a never-included header.
|
# options in a never-included header.
|
||||||
@ -155,8 +155,8 @@ SOFTUPDATES opt_ffs.h
|
|||||||
UFS_ACL opt_ufs.h
|
UFS_ACL opt_ufs.h
|
||||||
|
|
||||||
# Enabling this option turns on support for extended attributes in UFS-based
|
# Enabling this option turns on support for extended attributes in UFS-based
|
||||||
# file systems, which can be used to support high security configurations
|
# filesystems, which can be used to support high security configurations
|
||||||
# as well as new file system features.
|
# as well as new filesystem features.
|
||||||
UFS_EXTATTR opt_ufs.h
|
UFS_EXTATTR opt_ufs.h
|
||||||
UFS_EXTATTR_AUTOSTART opt_ufs.h
|
UFS_EXTATTR_AUTOSTART opt_ufs.h
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ CLK_USE_I8254_CALIBRATION opt_clock.h
|
|||||||
TIMER_FREQ opt_clock.h
|
TIMER_FREQ opt_clock.h
|
||||||
|
|
||||||
# Options for emulators. These should only be used at config time, so
|
# Options for emulators. These should only be used at config time, so
|
||||||
# they are handled like options for static file systems
|
# they are handled like options for static filesystems
|
||||||
# (see src/sys/conf/options).
|
# (see src/sys/conf/options).
|
||||||
COMPAT_LINUX opt_dontuse.h
|
COMPAT_LINUX opt_dontuse.h
|
||||||
COMPAT_OSF1 opt_dontuse.h
|
COMPAT_OSF1 opt_dontuse.h
|
||||||
|
@ -23,7 +23,7 @@ BROKEN_KEYBOARD_RESET opt_reset.h
|
|||||||
KSTACK_PAGES
|
KSTACK_PAGES
|
||||||
|
|
||||||
# Options for emulators. These should only be used at config time, so
|
# Options for emulators. These should only be used at config time, so
|
||||||
# they are handled like options for static file systems
|
# they are handled like options for static filesystems
|
||||||
# (see src/sys/conf/options), except for broken debugging options.
|
# (see src/sys/conf/options), except for broken debugging options.
|
||||||
IBCS2 opt_dontuse.h
|
IBCS2 opt_dontuse.h
|
||||||
COMPAT_LINUX opt_dontuse.h
|
COMPAT_LINUX opt_dontuse.h
|
||||||
|
@ -23,7 +23,7 @@ BROKEN_KEYBOARD_RESET opt_reset.h
|
|||||||
KSTACK_PAGES
|
KSTACK_PAGES
|
||||||
|
|
||||||
# Options for emulators. These should only be used at config time, so
|
# Options for emulators. These should only be used at config time, so
|
||||||
# they are handled like options for static file systems
|
# they are handled like options for static filesystems
|
||||||
# (see src/sys/conf/options), except for broken debugging options.
|
# (see src/sys/conf/options), except for broken debugging options.
|
||||||
IBCS2 opt_dontuse.h
|
IBCS2 opt_dontuse.h
|
||||||
COMPAT_LINUX opt_dontuse.h
|
COMPAT_LINUX opt_dontuse.h
|
||||||
|
@ -679,7 +679,7 @@ struct aac_AifContainers {
|
|||||||
|
|
||||||
union aac_AifJobClient {
|
union aac_AifJobClient {
|
||||||
struct aac_AifContainers container; /* For Container and
|
struct aac_AifContainers container; /* For Container and
|
||||||
* file system progress
|
* filesystem progress
|
||||||
* ops; */
|
* ops; */
|
||||||
int32_t scsi_dh; /* For SCSI progress
|
int32_t scsi_dh; /* For SCSI progress
|
||||||
* ops */
|
* ops */
|
||||||
|
@ -63,7 +63,7 @@ open_drive(struct drive *drive, struct thread *td, int verbose)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Yes, Bruce, I know this is horrible, but we
|
* Yes, Bruce, I know this is horrible, but we
|
||||||
* don't have a root file system when we first
|
* don't have a root filesystem when we first
|
||||||
* try to do this. If you can come up with a
|
* try to do this. If you can come up with a
|
||||||
* better solution, I'd really like it. I'm
|
* better solution, I'd really like it. I'm
|
||||||
* just putting it in now to add ammuntion to
|
* just putting it in now to add ammuntion to
|
||||||
|
@ -66,7 +66,7 @@ enum objflags {
|
|||||||
VF_WLABEL = 0x20, /* label area is writable */
|
VF_WLABEL = 0x20, /* label area is writable */
|
||||||
VF_LABELLING = 0x40, /* unit is currently being labelled */
|
VF_LABELLING = 0x40, /* unit is currently being labelled */
|
||||||
VF_WANTED = 0x80, /* someone is waiting to obtain a lock */
|
VF_WANTED = 0x80, /* someone is waiting to obtain a lock */
|
||||||
VF_RAW = 0x100, /* raw volume (no file system) */
|
VF_RAW = 0x100, /* raw volume (no filesystem) */
|
||||||
VF_LOADED = 0x200, /* module is loaded */
|
VF_LOADED = 0x200, /* module is loaded */
|
||||||
VF_CONFIGURING = 0x400, /* somebody is changing the config */
|
VF_CONFIGURING = 0x400, /* somebody is changing the config */
|
||||||
VF_WILL_CONFIGURE = 0x800, /* somebody wants to change the config */
|
VF_WILL_CONFIGURE = 0x800, /* somebody wants to change the config */
|
||||||
|
@ -833,8 +833,8 @@ build_rq_buffer(struct rqelement *rqe, struct plex *plex)
|
|||||||
bp->b_bcount = rqe->buflen << DEV_BSHIFT; /* number of bytes to transfer */
|
bp->b_bcount = rqe->buflen << DEV_BSHIFT; /* number of bytes to transfer */
|
||||||
bp->b_resid = bp->b_bcount; /* and it's still all waiting */
|
bp->b_resid = bp->b_bcount; /* and it's still all waiting */
|
||||||
bp->b_bufsize = bp->b_bcount; /* and buffer size */
|
bp->b_bufsize = bp->b_bcount; /* and buffer size */
|
||||||
bp->b_rcred = FSCRED; /* we have the file system credentials */
|
bp->b_rcred = FSCRED; /* we have the filesystem credentials */
|
||||||
bp->b_wcred = FSCRED; /* we have the file system credentials */
|
bp->b_wcred = FSCRED; /* we have the filesystem credentials */
|
||||||
|
|
||||||
if (rqe->flags & XFR_MALLOCED) { /* this operation requires a malloced buffer */
|
if (rqe->flags & XFR_MALLOCED) { /* this operation requires a malloced buffer */
|
||||||
bp->b_data = Malloc(bp->b_bcount); /* get a buffer to put it in */
|
bp->b_data = Malloc(bp->b_bcount); /* get a buffer to put it in */
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
/*
|
/*
|
||||||
* Convert a component of a pathname into a pointer to a locked inode.
|
* Convert a component of a pathname into a pointer to a locked inode.
|
||||||
* This is a very central and rather complicated routine.
|
* This is a very central and rather complicated routine.
|
||||||
* If the file system is not maintained in a strict tree hierarchy,
|
* If the filesystem is not maintained in a strict tree hierarchy,
|
||||||
* this can result in a deadlock situation (see comments in code below).
|
* this can result in a deadlock situation (see comments in code below).
|
||||||
*
|
*
|
||||||
* The flag argument is LOOKUP, CREATE, RENAME, or DELETE depending on
|
* The flag argument is LOOKUP, CREATE, RENAME, or DELETE depending on
|
||||||
@ -95,7 +95,7 @@ cd9660_lookup(ap)
|
|||||||
{
|
{
|
||||||
register struct vnode *vdp; /* vnode for directory being searched */
|
register struct vnode *vdp; /* vnode for directory being searched */
|
||||||
register struct iso_node *dp; /* inode for directory being searched */
|
register struct iso_node *dp; /* inode for directory being searched */
|
||||||
register struct iso_mnt *imp; /* file system that directory is in */
|
register struct iso_mnt *imp; /* filesystem that directory is in */
|
||||||
struct buf *bp; /* a buffer of directory entries */
|
struct buf *bp; /* a buffer of directory entries */
|
||||||
struct iso_directory_record *ep = 0;/* the current directory entry */
|
struct iso_directory_record *ep = 0;/* the current directory entry */
|
||||||
int entryoffsetinblock; /* offset of ep in bp's buffer */
|
int entryoffsetinblock; /* offset of ep in bp's buffer */
|
||||||
@ -342,7 +342,7 @@ cd9660_lookup(ap)
|
|||||||
* infrequently since we cannot avoid this race condition without
|
* infrequently since we cannot avoid this race condition without
|
||||||
* implementing a sophisticated deadlock detection algorithm.
|
* implementing a sophisticated deadlock detection algorithm.
|
||||||
* Note also that this simple deadlock detection scheme will not
|
* Note also that this simple deadlock detection scheme will not
|
||||||
* work if the file system has any hard links other than ".."
|
* work if the filesystem has any hard links other than ".."
|
||||||
* that point backwards in the directory structure.
|
* that point backwards in the directory structure.
|
||||||
*/
|
*/
|
||||||
pdp = vdp;
|
pdp = vdp;
|
||||||
|
@ -587,7 +587,7 @@ cd9660_root(mp, vpp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get file system statistics.
|
* Get filesystem statistics.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
cd9660_statfs(mp, sbp, td)
|
cd9660_statfs(mp, sbp, td)
|
||||||
|
@ -137,7 +137,7 @@ cd9660_access(ap)
|
|||||||
/*
|
/*
|
||||||
* Disallow write attempts unless the file is a socket,
|
* Disallow write attempts unless the file is a socket,
|
||||||
* fifo, or a block or character device resident on the
|
* fifo, or a block or character device resident on the
|
||||||
* file system.
|
* filesystem.
|
||||||
*/
|
*/
|
||||||
if (mode & VWRITE) {
|
if (mode & VWRITE) {
|
||||||
switch (vp->v_type) {
|
switch (vp->v_type) {
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
|
$FreeBSD$
|
||||||
|
|
||||||
Announcing the Availability of the
|
Announcing the Availability of the
|
||||||
Coda Distributed
|
Coda Distributed
|
||||||
Filesystem
|
Filesystem
|
||||||
for
|
for
|
||||||
BSD Unix Systems
|
BSD Unix Systems
|
||||||
|
|
||||||
Coda is a distributed file system like NFS and AFS. It is
|
Coda is a distributed filesystem like NFS and AFS. It is
|
||||||
freely available, like NFS. But it functions much like AFS in being a
|
freely available, like NFS. But it functions much like AFS in being a
|
||||||
"stateful" file system. Coda and AFS cache files on your local
|
"stateful" filesystem. Coda and AFS cache files on your local
|
||||||
machine to improve performance. But Coda goes a step further than AFS
|
machine to improve performance. But Coda goes a step further than AFS
|
||||||
by letting you access the cached files when there is no available
|
by letting you access the cached files when there is no available
|
||||||
network, viz. disconnected laptops and network outages. In Coda, both
|
network, viz. disconnected laptops and network outages. In Coda, both
|
||||||
@ -25,12 +27,12 @@ progress and does have bugs. It is, though, very usable. Our
|
|||||||
interest is in making Coda available to as many people as possible and
|
interest is in making Coda available to as many people as possible and
|
||||||
to have Coda evolve and flourish.
|
to have Coda evolve and flourish.
|
||||||
|
|
||||||
The bulk of the Coda file system code supports the Coda client
|
The bulk of the Coda filesystem code supports the Coda client
|
||||||
program, the Coda server program and the utilities needed by both.
|
program, the Coda server program and the utilities needed by both.
|
||||||
All these programs are unix programs and can run equally well on any
|
All these programs are unix programs and can run equally well on any
|
||||||
Unix platform. Our main development thrust is improving these
|
Unix platform. Our main development thrust is improving these
|
||||||
programs. There is a small part of Coda that deals with the kernel to
|
programs. There is a small part of Coda that deals with the kernel to
|
||||||
file system interface. This code is OS specific (but should not be
|
filesystem interface. This code is OS specific (but should not be
|
||||||
platform specific).
|
platform specific).
|
||||||
|
|
||||||
Coda is currently available for several OS's and platforms:
|
Coda is currently available for several OS's and platforms:
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon University.
|
* This code was written for the Coda filesystem at Carnegie Mellon University.
|
||||||
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ struct coda_clstat {
|
|||||||
extern struct coda_clstat coda_clstat;
|
extern struct coda_clstat coda_clstat;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CODA structure to hold mount/file system information
|
* CODA structure to hold mount/filesystem information
|
||||||
*/
|
*/
|
||||||
struct coda_mntinfo {
|
struct coda_mntinfo {
|
||||||
struct vnode *mi_rootvp;
|
struct vnode *mi_rootvp;
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon University.
|
* This code was written for the Coda filesystem at Carnegie Mellon University.
|
||||||
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon University.
|
* This code was written for the Coda filesystem at Carnegie Mellon University.
|
||||||
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon University.
|
* This code was written for the Coda filesystem at Carnegie Mellon University.
|
||||||
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
* Contributers include David Steere, James Kistler, and M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ITC Remote file system - vice ioctl interface module
|
* ITC Remote filesystem - vice ioctl interface module
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon
|
* This code was written for the Coda filesystem at Carnegie Mellon
|
||||||
* University. Contributers include David Steere, James Kistler, and
|
* University. Contributers include David Steere, James Kistler, and
|
||||||
* M. Satyanarayanan. */
|
* M. Satyanarayanan. */
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon
|
* This code was written for the Coda filesystem at Carnegie Mellon
|
||||||
* University. Contributers include David Steere, James Kistler, and
|
* University. Contributers include David Steere, James Kistler, and
|
||||||
* M. Satyanarayanan.
|
* M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon
|
* This code was written for the Coda filesystem at Carnegie Mellon
|
||||||
* University. Contributers include David Steere, James Kistler, and
|
* University. Contributers include David Steere, James Kistler, and
|
||||||
* M. Satyanarayanan.
|
* M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
@ -371,7 +371,7 @@ coda_root(vfsp, vpp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get file system statistics.
|
* Get filesystem statistics.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
coda_nb_statfs(vfsp, sbp, td)
|
coda_nb_statfs(vfsp, sbp, td)
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon
|
* This code was written for the Coda filesystem at Carnegie Mellon
|
||||||
* University. Contributers include David Steere, James Kistler, and
|
* University. Contributers include David Steere, James Kistler, and
|
||||||
* M. Satyanarayanan.
|
* M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
@ -950,7 +950,7 @@ coda_inactive(v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Remote file system operations having to do with directory manipulation.
|
* Remote filesystem operations having to do with directory manipulation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1681,7 +1681,7 @@ printf("coda_readdir: Internally Opening %p\n", vp);
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Convert from file system blocks to device blocks
|
* Convert from filesystem blocks to device blocks
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
coda_bmap(v)
|
coda_bmap(v)
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This code was written for the Coda file system at Carnegie Mellon
|
* This code was written for the Coda filesystem at Carnegie Mellon
|
||||||
* University. Contributers include David Steere, James Kistler, and
|
* University. Contributers include David Steere, James Kistler, and
|
||||||
* M. Satyanarayanan.
|
* M. Satyanarayanan.
|
||||||
*/
|
*/
|
||||||
|
@ -104,7 +104,7 @@ hpfs_mount (
|
|||||||
dprintf(("hpfs_mount():\n"));
|
dprintf(("hpfs_mount():\n"));
|
||||||
/*
|
/*
|
||||||
***
|
***
|
||||||
* Mounting non-root file system or updating a file system
|
* Mounting non-root filesystem or updating a filesystem
|
||||||
***
|
***
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -726,9 +726,9 @@ hpfs_access(ap)
|
|||||||
dprintf(("hpfs_access(0x%x):\n", hp->h_no));
|
dprintf(("hpfs_access(0x%x):\n", hp->h_no));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Disallow write attempts on read-only file systems;
|
* Disallow write attempts on read-only filesystems;
|
||||||
* unless the file is a socket, fifo, or a block or
|
* unless the file is a socket, fifo, or a block or
|
||||||
* character device resident on the file system.
|
* character device resident on the filesystem.
|
||||||
*/
|
*/
|
||||||
if (mode & VWRITE) {
|
if (mode & VWRITE) {
|
||||||
switch ((int)vp->v_type) {
|
switch ((int)vp->v_type) {
|
||||||
|
@ -128,9 +128,9 @@ fatblock(pmp, ofs, bnp, sizep, bop)
|
|||||||
* dep - address of denode representing the file of interest
|
* dep - address of denode representing the file of interest
|
||||||
* findcn - file relative cluster whose filesystem relative cluster number
|
* findcn - file relative cluster whose filesystem relative cluster number
|
||||||
* and/or block number are/is to be found
|
* and/or block number are/is to be found
|
||||||
* bnp - address of where to place the file system relative block number.
|
* bnp - address of where to place the filesystem relative block number.
|
||||||
* If this pointer is null then don't return this quantity.
|
* If this pointer is null then don't return this quantity.
|
||||||
* cnp - address of where to place the file system relative cluster number.
|
* cnp - address of where to place the filesystem relative cluster number.
|
||||||
* If this pointer is null then don't return this quantity.
|
* If this pointer is null then don't return this quantity.
|
||||||
*
|
*
|
||||||
* NOTE: Either bnp or cnp must be non-null.
|
* NOTE: Either bnp or cnp must be non-null.
|
||||||
|
@ -511,7 +511,7 @@ msdosfs_lookup(ap)
|
|||||||
* infrequently since we cannot avoid this race condition without
|
* infrequently since we cannot avoid this race condition without
|
||||||
* implementing a sophisticated deadlock detection algorithm.
|
* implementing a sophisticated deadlock detection algorithm.
|
||||||
* Note also that this simple deadlock detection scheme will not
|
* Note also that this simple deadlock detection scheme will not
|
||||||
* work if the file system has any hard links other than ".."
|
* work if the filesystem has any hard links other than ".."
|
||||||
* that point backwards in the directory structure.
|
* that point backwards in the directory structure.
|
||||||
*/
|
*/
|
||||||
pdp = vdp;
|
pdp = vdp;
|
||||||
|
@ -246,9 +246,9 @@ msdosfs_access(ap)
|
|||||||
file_mode &= pmp->pm_mask;
|
file_mode &= pmp->pm_mask;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Disallow write attempts on read-only file systems;
|
* Disallow write attempts on read-only filesystems;
|
||||||
* unless the file is a socket, fifo, or a block or
|
* unless the file is a socket, fifo, or a block or
|
||||||
* character device resident on the file system.
|
* character device resident on the filesystem.
|
||||||
*/
|
*/
|
||||||
if (mode & VWRITE) {
|
if (mode & VWRITE) {
|
||||||
switch (vp->v_type) {
|
switch (vp->v_type) {
|
||||||
@ -388,7 +388,7 @@ msdosfs_setattr(ap)
|
|||||||
* users to attempt to set SF_SETTABLE bits or anyone to
|
* users to attempt to set SF_SETTABLE bits or anyone to
|
||||||
* set unsupported bits. However, we ignore attempts to
|
* set unsupported bits. However, we ignore attempts to
|
||||||
* set ATTR_ARCHIVE for directories `cp -pr' from a more
|
* set ATTR_ARCHIVE for directories `cp -pr' from a more
|
||||||
* sensible file system attempts it a lot.
|
* sensible filesystem attempts it a lot.
|
||||||
*/
|
*/
|
||||||
if (suser_cred(cred, PRISON_ROOT)) {
|
if (suser_cred(cred, PRISON_ROOT)) {
|
||||||
if (vap->va_flags & SF_SETTABLE)
|
if (vap->va_flags & SF_SETTABLE)
|
||||||
@ -425,9 +425,9 @@ msdosfs_setattr(ap)
|
|||||||
|
|
||||||
if (vap->va_size != VNOVAL) {
|
if (vap->va_size != VNOVAL) {
|
||||||
/*
|
/*
|
||||||
* Disallow write attempts on read-only file systems;
|
* Disallow write attempts on read-only filesystems;
|
||||||
* unless the file is a socket, fifo, or a block or
|
* unless the file is a socket, fifo, or a block or
|
||||||
* character device resident on the file system.
|
* character device resident on the filesystem.
|
||||||
*/
|
*/
|
||||||
switch (vp->v_type) {
|
switch (vp->v_type) {
|
||||||
case VDIR:
|
case VDIR:
|
||||||
|
@ -58,7 +58,7 @@ MALLOC_DECLARE(M_MSDOSFSMNT);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Layout of the mount control block for a msdos file system.
|
* Layout of the mount control block for a msdos filesystem.
|
||||||
*/
|
*/
|
||||||
struct msdosfsmount {
|
struct msdosfsmount {
|
||||||
struct mount *pm_mountp;/* vfs mount struct for this fs */
|
struct mount *pm_mountp;/* vfs mount struct for this fs */
|
||||||
|
@ -114,7 +114,7 @@ ntfs_mount (
|
|||||||
if( path == NULL) {
|
if( path == NULL) {
|
||||||
/*
|
/*
|
||||||
***
|
***
|
||||||
* Mounting root file system
|
* Mounting root filesystem
|
||||||
***
|
***
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ ntfs_mount (
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
***
|
***
|
||||||
* Mounting non-root file system or updating a file system
|
* Mounting non-root filesystem or updating a filesystem
|
||||||
***
|
***
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -370,9 +370,9 @@ ntfs_access(ap)
|
|||||||
dprintf(("ntfs_access: %d\n",ip->i_number));
|
dprintf(("ntfs_access: %d\n",ip->i_number));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Disallow write attempts on read-only file systems;
|
* Disallow write attempts on read-only filesystems;
|
||||||
* unless the file is a socket, fifo, or a block or
|
* unless the file is a socket, fifo, or a block or
|
||||||
* character device resident on the file system.
|
* character device resident on the filesystem.
|
||||||
*/
|
*/
|
||||||
if (mode & VWRITE) {
|
if (mode & VWRITE) {
|
||||||
switch ((int)vp->v_type) {
|
switch ((int)vp->v_type) {
|
||||||
|
@ -48,19 +48,19 @@
|
|||||||
*
|
*
|
||||||
* (See mount_nullfs(8) for more information.)
|
* (See mount_nullfs(8) for more information.)
|
||||||
*
|
*
|
||||||
* The null layer duplicates a portion of the file system
|
* The null layer duplicates a portion of the filesystem
|
||||||
* name space under a new name. In this respect, it is
|
* name space under a new name. In this respect, it is
|
||||||
* similar to the loopback file system. It differs from
|
* similar to the loopback filesystem. It differs from
|
||||||
* the loopback fs in two respects: it is implemented using
|
* the loopback fs in two respects: it is implemented using
|
||||||
* a stackable layers techniques, and its "null-node"s stack above
|
* a stackable layers techniques, and its "null-node"s stack above
|
||||||
* all lower-layer vnodes, not just over directory vnodes.
|
* all lower-layer vnodes, not just over directory vnodes.
|
||||||
*
|
*
|
||||||
* The null layer has two purposes. First, it serves as a demonstration
|
* The null layer has two purposes. First, it serves as a demonstration
|
||||||
* of layering by proving a layer which does nothing. (It actually
|
* of layering by proving a layer which does nothing. (It actually
|
||||||
* does everything the loopback file system does, which is slightly
|
* does everything the loopback filesystem does, which is slightly
|
||||||
* more than nothing.) Second, the null layer can serve as a prototype
|
* more than nothing.) Second, the null layer can serve as a prototype
|
||||||
* layer. Since it provides all necessary layer framework,
|
* layer. Since it provides all necessary layer framework,
|
||||||
* new file system layers can be created very easily be starting
|
* new filesystem layers can be created very easily be starting
|
||||||
* with a null layer.
|
* with a null layer.
|
||||||
*
|
*
|
||||||
* The remainder of this man page examines the null layer as a basis
|
* The remainder of this man page examines the null layer as a basis
|
||||||
@ -79,7 +79,7 @@
|
|||||||
*
|
*
|
||||||
* OPERATION OF A NULL LAYER
|
* OPERATION OF A NULL LAYER
|
||||||
*
|
*
|
||||||
* The null layer is the minimum file system layer,
|
* The null layer is the minimum filesystem layer,
|
||||||
* simply bypassing all possible operations to the lower layer
|
* simply bypassing all possible operations to the lower layer
|
||||||
* for processing there. The majority of its activity centers
|
* for processing there. The majority of its activity centers
|
||||||
* on the bypass routine, through which nearly all vnode operations
|
* on the bypass routine, through which nearly all vnode operations
|
||||||
@ -141,7 +141,7 @@
|
|||||||
*
|
*
|
||||||
* CREATING OTHER FILE SYSTEM LAYERS
|
* CREATING OTHER FILE SYSTEM LAYERS
|
||||||
*
|
*
|
||||||
* One of the easiest ways to construct new file system layers is to make
|
* One of the easiest ways to construct new filesystem layers is to make
|
||||||
* a copy of the null layer, rename all files and variables, and
|
* a copy of the null layer, rename all files and variables, and
|
||||||
* then begin modifing the copy. Sed can be used to easily rename
|
* then begin modifing the copy. Sed can be used to easily rename
|
||||||
* all variables.
|
* all variables.
|
||||||
@ -494,7 +494,7 @@ null_access(ap)
|
|||||||
/*
|
/*
|
||||||
* Disallow write attempts on read-only layers;
|
* Disallow write attempts on read-only layers;
|
||||||
* unless the file is a socket, fifo, or a block or
|
* unless the file is a socket, fifo, or a block or
|
||||||
* character device resident on the file system.
|
* character device resident on the filesystem.
|
||||||
*/
|
*/
|
||||||
if (mode & VWRITE) {
|
if (mode & VWRITE) {
|
||||||
switch (vp->v_type) {
|
switch (vp->v_type) {
|
||||||
|
@ -55,7 +55,7 @@
|
|||||||
#define NWFS_VOLNAME_LEN 48
|
#define NWFS_VOLNAME_LEN 48
|
||||||
|
|
||||||
|
|
||||||
/* Layout of the mount control block for a netware file system. */
|
/* Layout of the mount control block for a netware filesystem. */
|
||||||
struct nwfs_args {
|
struct nwfs_args {
|
||||||
int connRef; /* connection reference */
|
int connRef; /* connection reference */
|
||||||
char mount_point[MAXPATHLEN];
|
char mount_point[MAXPATHLEN];
|
||||||
|
@ -63,7 +63,7 @@ int nwfs_debuglevel = 0;
|
|||||||
static int nwfs_version = NWFS_VERSION;
|
static int nwfs_version = NWFS_VERSION;
|
||||||
|
|
||||||
SYSCTL_DECL(_vfs_nwfs);
|
SYSCTL_DECL(_vfs_nwfs);
|
||||||
SYSCTL_NODE(_vfs, OID_AUTO, nwfs, CTLFLAG_RW, 0, "Netware file system");
|
SYSCTL_NODE(_vfs, OID_AUTO, nwfs, CTLFLAG_RW, 0, "Netware filesystem");
|
||||||
SYSCTL_INT(_vfs_nwfs, OID_AUTO, version, CTLFLAG_RD, &nwfs_version, 0, "");
|
SYSCTL_INT(_vfs_nwfs, OID_AUTO, version, CTLFLAG_RD, &nwfs_version, 0, "");
|
||||||
SYSCTL_INT(_vfs_nwfs, OID_AUTO, debuglevel, CTLFLAG_RW, &nwfs_debuglevel, 0, "");
|
SYSCTL_INT(_vfs_nwfs, OID_AUTO, debuglevel, CTLFLAG_RW, &nwfs_debuglevel, 0, "");
|
||||||
|
|
||||||
@ -435,23 +435,23 @@ nwfs_statfs(mp, sbp, td)
|
|||||||
if (error) return error;
|
if (error) return error;
|
||||||
secsize = 512; /* XXX how to get real value ??? */
|
secsize = 512; /* XXX how to get real value ??? */
|
||||||
sbp->f_spare2=0; /* placeholder */
|
sbp->f_spare2=0; /* placeholder */
|
||||||
/* fundamental file system block size */
|
/* fundamental filesystem block size */
|
||||||
sbp->f_bsize = vi.sectors_per_block*secsize;
|
sbp->f_bsize = vi.sectors_per_block*secsize;
|
||||||
/* optimal transfer block size */
|
/* optimal transfer block size */
|
||||||
sbp->f_iosize = NWFSTOCONN(nmp)->buffer_size;
|
sbp->f_iosize = NWFSTOCONN(nmp)->buffer_size;
|
||||||
/* total data blocks in file system */
|
/* total data blocks in filesystem */
|
||||||
sbp->f_blocks= vi.total_blocks;
|
sbp->f_blocks= vi.total_blocks;
|
||||||
/* free blocks in fs */
|
/* free blocks in fs */
|
||||||
sbp->f_bfree = vi.free_blocks + vi.purgeable_blocks;
|
sbp->f_bfree = vi.free_blocks + vi.purgeable_blocks;
|
||||||
/* free blocks avail to non-superuser */
|
/* free blocks avail to non-superuser */
|
||||||
sbp->f_bavail= vi.free_blocks+vi.purgeable_blocks;
|
sbp->f_bavail= vi.free_blocks+vi.purgeable_blocks;
|
||||||
/* total file nodes in file system */
|
/* total file nodes in filesystem */
|
||||||
sbp->f_files = vi.total_dir_entries;
|
sbp->f_files = vi.total_dir_entries;
|
||||||
/* free file nodes in fs */
|
/* free file nodes in fs */
|
||||||
sbp->f_ffree = vi.available_dir_entries;
|
sbp->f_ffree = vi.available_dir_entries;
|
||||||
sbp->f_flags = 0; /* copy of mount exported flags */
|
sbp->f_flags = 0; /* copy of mount exported flags */
|
||||||
if (sbp != &mp->mnt_stat) {
|
if (sbp != &mp->mnt_stat) {
|
||||||
sbp->f_fsid = mp->mnt_stat.f_fsid; /* file system id */
|
sbp->f_fsid = mp->mnt_stat.f_fsid; /* filesystem id */
|
||||||
sbp->f_owner = mp->mnt_stat.f_owner; /* user that mounted the filesystem */
|
sbp->f_owner = mp->mnt_stat.f_owner; /* user that mounted the filesystem */
|
||||||
sbp->f_type = mp->mnt_vfc->vfc_typenum; /* type of filesystem */
|
sbp->f_type = mp->mnt_vfc->vfc_typenum; /* type of filesystem */
|
||||||
bcopy(mp->mnt_stat.f_mntonname, sbp->f_mntonname, MNAMELEN);
|
bcopy(mp->mnt_stat.f_mntonname, sbp->f_mntonname, MNAMELEN);
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
#define SMBFS_MAXPATHCOMP 256 /* maximum number of path components */
|
#define SMBFS_MAXPATHCOMP 256 /* maximum number of path components */
|
||||||
|
|
||||||
|
|
||||||
/* Layout of the mount control block for a netware file system. */
|
/* Layout of the mount control block for a netware filesystem. */
|
||||||
struct smbfs_args {
|
struct smbfs_args {
|
||||||
int version;
|
int version;
|
||||||
int dev;
|
int dev;
|
||||||
|
@ -170,11 +170,11 @@ smbfs_smb_statfs2(struct smb_share *ssp, struct statfs *sbp,
|
|||||||
md_get_uint32le(mdp, &units);
|
md_get_uint32le(mdp, &units);
|
||||||
md_get_uint32le(mdp, &funits);
|
md_get_uint32le(mdp, &funits);
|
||||||
md_get_uint16le(mdp, &bsize);
|
md_get_uint16le(mdp, &bsize);
|
||||||
sbp->f_bsize = bpu * bsize; /* fundamental file system block size */
|
sbp->f_bsize = bpu * bsize; /* fundamental filesystem block size */
|
||||||
sbp->f_blocks= units; /* total data blocks in file system */
|
sbp->f_blocks= units; /* total data blocks in filesystem */
|
||||||
sbp->f_bfree = funits; /* free blocks in fs */
|
sbp->f_bfree = funits; /* free blocks in fs */
|
||||||
sbp->f_bavail= funits; /* free blocks avail to non-superuser */
|
sbp->f_bavail= funits; /* free blocks avail to non-superuser */
|
||||||
sbp->f_files = 0xffff; /* total file nodes in file system */
|
sbp->f_files = 0xffff; /* total file nodes in filesystem */
|
||||||
sbp->f_ffree = 0xffff; /* free file nodes in fs */
|
sbp->f_ffree = 0xffff; /* free file nodes in fs */
|
||||||
smb_t2_done(t2p);
|
smb_t2_done(t2p);
|
||||||
return 0;
|
return 0;
|
||||||
@ -206,11 +206,11 @@ smbfs_smb_statfs(struct smb_share *ssp, struct statfs *sbp,
|
|||||||
md_get_uint16le(mdp, &bpu);
|
md_get_uint16le(mdp, &bpu);
|
||||||
md_get_uint16le(mdp, &bsize);
|
md_get_uint16le(mdp, &bsize);
|
||||||
md_get_uint16le(mdp, &funits);
|
md_get_uint16le(mdp, &funits);
|
||||||
sbp->f_bsize = bpu * bsize; /* fundamental file system block size */
|
sbp->f_bsize = bpu * bsize; /* fundamental filesystem block size */
|
||||||
sbp->f_blocks= units; /* total data blocks in file system */
|
sbp->f_blocks= units; /* total data blocks in filesystem */
|
||||||
sbp->f_bfree = funits; /* free blocks in fs */
|
sbp->f_bfree = funits; /* free blocks in fs */
|
||||||
sbp->f_bavail= funits; /* free blocks avail to non-superuser */
|
sbp->f_bavail= funits; /* free blocks avail to non-superuser */
|
||||||
sbp->f_files = 0xffff; /* total file nodes in file system */
|
sbp->f_files = 0xffff; /* total file nodes in filesystem */
|
||||||
sbp->f_ffree = 0xffff; /* free file nodes in fs */
|
sbp->f_ffree = 0xffff; /* free file nodes in fs */
|
||||||
smb_rq_done(rqp);
|
smb_rq_done(rqp);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -70,7 +70,7 @@ static int smbfs_version = SMBFS_VERSION;
|
|||||||
vm_zone_t smbfsmount_zone;
|
vm_zone_t smbfsmount_zone;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SYSCTL_NODE(_vfs, OID_AUTO, smbfs, CTLFLAG_RW, 0, "SMB/CIFS file system");
|
SYSCTL_NODE(_vfs, OID_AUTO, smbfs, CTLFLAG_RW, 0, "SMB/CIFS filesystem");
|
||||||
SYSCTL_INT(_vfs_smbfs, OID_AUTO, version, CTLFLAG_RD, &smbfs_version, 0, "");
|
SYSCTL_INT(_vfs_smbfs, OID_AUTO, version, CTLFLAG_RD, &smbfs_version, 0, "");
|
||||||
SYSCTL_INT(_vfs_smbfs, OID_AUTO, debuglevel, CTLFLAG_RW, &smbfs_debuglevel, 0, "");
|
SYSCTL_INT(_vfs_smbfs, OID_AUTO, debuglevel, CTLFLAG_RW, &smbfs_debuglevel, 0, "");
|
||||||
|
|
||||||
@ -389,7 +389,7 @@ smbfs_statfs(struct mount *mp, struct statfs *sbp, struct thread *td)
|
|||||||
return error;
|
return error;
|
||||||
sbp->f_flags = 0; /* copy of mount exported flags */
|
sbp->f_flags = 0; /* copy of mount exported flags */
|
||||||
if (sbp != &mp->mnt_stat) {
|
if (sbp != &mp->mnt_stat) {
|
||||||
sbp->f_fsid = mp->mnt_stat.f_fsid; /* file system id */
|
sbp->f_fsid = mp->mnt_stat.f_fsid; /* filesystem id */
|
||||||
sbp->f_owner = mp->mnt_stat.f_owner; /* user that mounted the filesystem */
|
sbp->f_owner = mp->mnt_stat.f_owner; /* user that mounted the filesystem */
|
||||||
sbp->f_type = mp->mnt_vfc->vfc_typenum; /* type of filesystem */
|
sbp->f_type = mp->mnt_vfc->vfc_typenum; /* type of filesystem */
|
||||||
bcopy(mp->mnt_stat.f_mntonname, sbp->f_mntonname, MNAMELEN);
|
bcopy(mp->mnt_stat.f_mntonname, sbp->f_mntonname, MNAMELEN);
|
||||||
|
@ -299,7 +299,7 @@ inittodr(base)
|
|||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
|
|
||||||
if (base < 5*SECYR) {
|
if (base < 5*SECYR) {
|
||||||
printf("WARNING: preposterous time in file system");
|
printf("WARNING: preposterous time in filesystem");
|
||||||
/* read the system clock anyway */
|
/* read the system clock anyway */
|
||||||
base = 6*SECYR + 186*SECDAY + SECDAY/2;
|
base = 6*SECYR + 186*SECDAY + SECDAY/2;
|
||||||
badbase = 1;
|
badbase = 1;
|
||||||
@ -313,7 +313,7 @@ inittodr(base)
|
|||||||
if (ct.year < 70 || ct.mon < 1 || ct.mon > 12 || ct.day < 1 ||
|
if (ct.year < 70 || ct.mon < 1 || ct.mon > 12 || ct.day < 1 ||
|
||||||
ct.day > 31 || ct.hour > 23 || ct.min > 59 || ct.sec > 59) {
|
ct.day > 31 || ct.hour > 23 || ct.min > 59 || ct.sec > 59) {
|
||||||
/*
|
/*
|
||||||
* Believe the time in the file system for lack of
|
* Believe the time in the filesystem for lack of
|
||||||
* anything better, resetting the TODR.
|
* anything better, resetting the TODR.
|
||||||
*/
|
*/
|
||||||
s = splclock();
|
s = splclock();
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
/*
|
/*
|
||||||
* Convert a component of a pathname into a pointer to a locked inode.
|
* Convert a component of a pathname into a pointer to a locked inode.
|
||||||
* This is a very central and rather complicated routine.
|
* This is a very central and rather complicated routine.
|
||||||
* If the file system is not maintained in a strict tree hierarchy,
|
* If the filesystem is not maintained in a strict tree hierarchy,
|
||||||
* this can result in a deadlock situation (see comments in code below).
|
* this can result in a deadlock situation (see comments in code below).
|
||||||
*
|
*
|
||||||
* The flag argument is LOOKUP, CREATE, RENAME, or DELETE depending on
|
* The flag argument is LOOKUP, CREATE, RENAME, or DELETE depending on
|
||||||
@ -95,7 +95,7 @@ cd9660_lookup(ap)
|
|||||||
{
|
{
|
||||||
register struct vnode *vdp; /* vnode for directory being searched */
|
register struct vnode *vdp; /* vnode for directory being searched */
|
||||||
register struct iso_node *dp; /* inode for directory being searched */
|
register struct iso_node *dp; /* inode for directory being searched */
|
||||||
register struct iso_mnt *imp; /* file system that directory is in */
|
register struct iso_mnt *imp; /* filesystem that directory is in */
|
||||||
struct buf *bp; /* a buffer of directory entries */
|
struct buf *bp; /* a buffer of directory entries */
|
||||||
struct iso_directory_record *ep = 0;/* the current directory entry */
|
struct iso_directory_record *ep = 0;/* the current directory entry */
|
||||||
int entryoffsetinblock; /* offset of ep in bp's buffer */
|
int entryoffsetinblock; /* offset of ep in bp's buffer */
|
||||||
@ -342,7 +342,7 @@ cd9660_lookup(ap)
|
|||||||
* infrequently since we cannot avoid this race condition without
|
* infrequently since we cannot avoid this race condition without
|
||||||
* implementing a sophisticated deadlock detection algorithm.
|
* implementing a sophisticated deadlock detection algorithm.
|
||||||
* Note also that this simple deadlock detection scheme will not
|
* Note also that this simple deadlock detection scheme will not
|
||||||
* work if the file system has any hard links other than ".."
|
* work if the filesystem has any hard links other than ".."
|
||||||
* that point backwards in the directory structure.
|
* that point backwards in the directory structure.
|
||||||
*/
|
*/
|
||||||
pdp = vdp;
|
pdp = vdp;
|
||||||
|
@ -587,7 +587,7 @@ cd9660_root(mp, vpp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get file system statistics.
|
* Get filesystem statistics.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
cd9660_statfs(mp, sbp, td)
|
cd9660_statfs(mp, sbp, td)
|
||||||
|
@ -137,7 +137,7 @@ cd9660_access(ap)
|
|||||||
/*
|
/*
|
||||||
* Disallow write attempts unless the file is a socket,
|
* Disallow write attempts unless the file is a socket,
|
||||||
* fifo, or a block or character device resident on the
|
* fifo, or a block or character device resident on the
|
||||||
* file system.
|
* filesystem.
|
||||||
*/
|
*/
|
||||||
if (mode & VWRITE) {
|
if (mode & VWRITE) {
|
||||||
switch (vp->v_type) {
|
switch (vp->v_type) {
|
||||||
|
@ -413,7 +413,7 @@ proc0_post(void *dummy __unused)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Now we can look at the time, having had a chance to verify the
|
* Now we can look at the time, having had a chance to verify the
|
||||||
* time from the file system. Pretend that proc0 started now.
|
* time from the filesystem. Pretend that proc0 started now.
|
||||||
*/
|
*/
|
||||||
sx_slock(&allproc_lock);
|
sx_slock(&allproc_lock);
|
||||||
LIST_FOREACH(p, &allproc, p_list) {
|
LIST_FOREACH(p, &allproc, p_list) {
|
||||||
|
@ -302,7 +302,7 @@ encode_comp_t(s, us)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Periodically check the file system to see if accounting
|
* Periodically check the filesystem to see if accounting
|
||||||
* should be turned on or off. Beware the case where the vnode
|
* should be turned on or off. Beware the case where the vnode
|
||||||
* has been vgone()'d out from underneath us, e.g. when the file
|
* has been vgone()'d out from underneath us, e.g. when the file
|
||||||
* system containing the accounting file has been forcibly unmounted.
|
* system containing the accounting file has been forcibly unmounted.
|
||||||
|
@ -362,7 +362,7 @@ vaccess_acl_posix1e(enum vtype type, uid_t file_uid, gid_t file_gid,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For the purposes of file systems maintaining the _OBJ entries in an
|
* For the purposes of filesystems maintaining the _OBJ entries in an
|
||||||
* inode with a mode_t field, this routine converts a mode_t entry
|
* inode with a mode_t field, this routine converts a mode_t entry
|
||||||
* to an acl_perm_t.
|
* to an acl_perm_t.
|
||||||
*/
|
*/
|
||||||
@ -471,7 +471,7 @@ acl_posix1e_perms_to_mode(struct acl_entry *acl_user_obj_entry,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Perform a syntactic check of the ACL, sufficient to allow an
|
* Perform a syntactic check of the ACL, sufficient to allow an
|
||||||
* implementing file system to determine if it should accept this and
|
* implementing filesystem to determine if it should accept this and
|
||||||
* rely on the POSIX.1e ACL properties.
|
* rely on the POSIX.1e ACL properties.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
|
@ -1402,7 +1402,7 @@ fdfree(td)
|
|||||||
*
|
*
|
||||||
* This is a gross hack to plug the hole. A better solution would involve
|
* This is a gross hack to plug the hole. A better solution would involve
|
||||||
* a special vop or other form of generalized access control mechanism. We
|
* a special vop or other form of generalized access control mechanism. We
|
||||||
* go ahead and just reject all procfs file systems accesses as dangerous.
|
* go ahead and just reject all procfs filesystems accesses as dangerous.
|
||||||
*
|
*
|
||||||
* Since setugidsafety calls this only for fd 0, 1 and 2, this check is
|
* Since setugidsafety calls this only for fd 0, 1 and 2, this check is
|
||||||
* sufficient. We also don't for check setugidness since we know we are.
|
* sufficient. We also don't for check setugidness since we know we are.
|
||||||
|
@ -362,7 +362,7 @@ vaccess_acl_posix1e(enum vtype type, uid_t file_uid, gid_t file_gid,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For the purposes of file systems maintaining the _OBJ entries in an
|
* For the purposes of filesystems maintaining the _OBJ entries in an
|
||||||
* inode with a mode_t field, this routine converts a mode_t entry
|
* inode with a mode_t field, this routine converts a mode_t entry
|
||||||
* to an acl_perm_t.
|
* to an acl_perm_t.
|
||||||
*/
|
*/
|
||||||
@ -471,7 +471,7 @@ acl_posix1e_perms_to_mode(struct acl_entry *acl_user_obj_entry,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Perform a syntactic check of the ACL, sufficient to allow an
|
* Perform a syntactic check of the ACL, sufficient to allow an
|
||||||
* implementing file system to determine if it should accept this and
|
* implementing filesystem to determine if it should accept this and
|
||||||
* rely on the POSIX.1e ACL properties.
|
* rely on the POSIX.1e ACL properties.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
|
@ -362,7 +362,7 @@ vaccess_acl_posix1e(enum vtype type, uid_t file_uid, gid_t file_gid,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For the purposes of file systems maintaining the _OBJ entries in an
|
* For the purposes of filesystems maintaining the _OBJ entries in an
|
||||||
* inode with a mode_t field, this routine converts a mode_t entry
|
* inode with a mode_t field, this routine converts a mode_t entry
|
||||||
* to an acl_perm_t.
|
* to an acl_perm_t.
|
||||||
*/
|
*/
|
||||||
@ -471,7 +471,7 @@ acl_posix1e_perms_to_mode(struct acl_entry *acl_user_obj_entry,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Perform a syntactic check of the ACL, sufficient to allow an
|
* Perform a syntactic check of the ACL, sufficient to allow an
|
||||||
* implementing file system to determine if it should accept this and
|
* implementing filesystem to determine if it should accept this and
|
||||||
* rely on the POSIX.1e ACL properties.
|
* rely on the POSIX.1e ACL properties.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
|
@ -1025,7 +1025,7 @@ checkdirs(olddp, newdp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unmount a file system.
|
* Unmount a filesystem.
|
||||||
*
|
*
|
||||||
* Note: unmount takes a path to the vnode mounted on as argument,
|
* Note: unmount takes a path to the vnode mounted on as argument,
|
||||||
* not special file (as before).
|
* not special file (as before).
|
||||||
@ -1071,7 +1071,7 @@ unmount(td, uap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Don't allow unmounting the root file system.
|
* Don't allow unmounting the root filesystem.
|
||||||
*/
|
*/
|
||||||
if (mp->mnt_flag & MNT_ROOTFS) {
|
if (mp->mnt_flag & MNT_ROOTFS) {
|
||||||
vput(vp);
|
vput(vp);
|
||||||
@ -1090,7 +1090,7 @@ unmount(td, uap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Do the actual file system unmount.
|
* Do the actual filesystem unmount.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
dounmount(mp, flags, td)
|
dounmount(mp, flags, td)
|
||||||
@ -3810,7 +3810,7 @@ rmdir(td, uap)
|
|||||||
|
|
||||||
#ifdef COMPAT_43
|
#ifdef COMPAT_43
|
||||||
/*
|
/*
|
||||||
* Read a block of directory entries in a file system independent format.
|
* Read a block of directory entries in a filesystem independent format.
|
||||||
*/
|
*/
|
||||||
#ifndef _SYS_SYSPROTO_H_
|
#ifndef _SYS_SYSPROTO_H_
|
||||||
struct ogetdirentries_args {
|
struct ogetdirentries_args {
|
||||||
@ -3950,7 +3950,7 @@ ogetdirentries(td, uap)
|
|||||||
#endif /* COMPAT_43 */
|
#endif /* COMPAT_43 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Read a block of directory entries in a file system independent format.
|
* Read a block of directory entries in a filesystem independent format.
|
||||||
*/
|
*/
|
||||||
#ifndef _SYS_SYSPROTO_H_
|
#ifndef _SYS_SYSPROTO_H_
|
||||||
struct getdirentries_args {
|
struct getdirentries_args {
|
||||||
|
@ -369,7 +369,7 @@ vfs_rm_vnodeops(const void *data)
|
|||||||
struct vattr va_null;
|
struct vattr va_null;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize the vnode structures and initialize each file system type.
|
* Initialize the vnode structures and initialize each filesystem type.
|
||||||
*/
|
*/
|
||||||
/* ARGSUSED*/
|
/* ARGSUSED*/
|
||||||
static void
|
static void
|
||||||
@ -380,7 +380,7 @@ vfsinit(void *dummy)
|
|||||||
}
|
}
|
||||||
SYSINIT(vfs, SI_SUB_VFS, SI_ORDER_FIRST, vfsinit, NULL)
|
SYSINIT(vfs, SI_SUB_VFS, SI_ORDER_FIRST, vfsinit, NULL)
|
||||||
|
|
||||||
/* Register a new file system type in the global table */
|
/* Register a new filesystem type in the global table */
|
||||||
int
|
int
|
||||||
vfs_register(struct vfsconf *vfc)
|
vfs_register(struct vfsconf *vfc)
|
||||||
{
|
{
|
||||||
@ -426,7 +426,7 @@ vfs_register(struct vfsconf *vfc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Remove registration of a file system type */
|
/* Remove registration of a filesystem type */
|
||||||
int
|
int
|
||||||
vfs_unregister(struct vfsconf *vfc)
|
vfs_unregister(struct vfsconf *vfc)
|
||||||
{
|
{
|
||||||
@ -463,7 +463,7 @@ vfs_unregister(struct vfsconf *vfc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Standard kernel module handling code for file system modules.
|
* Standard kernel module handling code for filesystem modules.
|
||||||
* Referenced from VFS_SET().
|
* Referenced from VFS_SET().
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
|
@ -411,7 +411,7 @@ lookup(ndp)
|
|||||||
* 2. If this vnode is the root of a mounted
|
* 2. If this vnode is the root of a mounted
|
||||||
* filesystem, then replace it with the
|
* filesystem, then replace it with the
|
||||||
* vnode which was mounted on so we take the
|
* vnode which was mounted on so we take the
|
||||||
* .. in the other file system.
|
* .. in the other filesystem.
|
||||||
* 3. If the vnode is the top directory of
|
* 3. If the vnode is the top directory of
|
||||||
* the jail or chroot, don't let them out.
|
* the jail or chroot, don't let them out.
|
||||||
*/
|
*/
|
||||||
@ -514,7 +514,7 @@ lookup(ndp)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Check to see if the vnode has been mounted on;
|
* Check to see if the vnode has been mounted on;
|
||||||
* if so find the root of the mounted file system.
|
* if so find the root of the mounted filesystem.
|
||||||
*/
|
*/
|
||||||
while (dp->v_type == VDIR && (mp = dp->v_mountedhere) &&
|
while (dp->v_type == VDIR && (mp = dp->v_mountedhere) &&
|
||||||
(cnp->cn_flags & NOCROSSMOUNT) == 0) {
|
(cnp->cn_flags & NOCROSSMOUNT) == 0) {
|
||||||
@ -576,7 +576,7 @@ lookup(ndp)
|
|||||||
goto dirloop;
|
goto dirloop;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Disallow directory write attempts on read-only file systems.
|
* Disallow directory write attempts on read-only filesystems.
|
||||||
*/
|
*/
|
||||||
if (rdonly &&
|
if (rdonly &&
|
||||||
(cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME)) {
|
(cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME)) {
|
||||||
@ -718,7 +718,7 @@ relookup(dvp, vpp, cnp)
|
|||||||
("relookup: symlink found.\n"));
|
("relookup: symlink found.\n"));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Disallow directory write attempts on read-only file systems.
|
* Disallow directory write attempts on read-only filesystems.
|
||||||
*/
|
*/
|
||||||
if (rdonly &&
|
if (rdonly &&
|
||||||
(cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME)) {
|
(cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME)) {
|
||||||
|
@ -650,7 +650,7 @@ vlrureclaim(struct mount *mp, int count)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Attempt to recycle vnodes in a context that is always safe to block.
|
* Attempt to recycle vnodes in a context that is always safe to block.
|
||||||
* Calling vlrurecycle() from the bowels of file system code has some
|
* Calling vlrurecycle() from the bowels of filesystem code has some
|
||||||
* interesting deadlock problems.
|
* interesting deadlock problems.
|
||||||
*/
|
*/
|
||||||
static struct proc *vnlruproc;
|
static struct proc *vnlruproc;
|
||||||
@ -1576,7 +1576,7 @@ reassignbuf(bp, newvp)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a vnode for a device.
|
* Create a vnode for a device.
|
||||||
* Used for mounting the root file system.
|
* Used for mounting the root filesystem.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
bdevvp(dev, vpp)
|
bdevvp(dev, vpp)
|
||||||
@ -1685,7 +1685,7 @@ addalias(nvp, dev)
|
|||||||
* vnode is being eliminated in vgone. The process is awakened
|
* vnode is being eliminated in vgone. The process is awakened
|
||||||
* when the transition is completed, and an error returned to
|
* when the transition is completed, and an error returned to
|
||||||
* indicate that the vnode is no longer usable (possibly having
|
* indicate that the vnode is no longer usable (possibly having
|
||||||
* been changed to a new file system type).
|
* been changed to a new filesystem type).
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
vget(vp, flags, td)
|
vget(vp, flags, td)
|
||||||
@ -2051,7 +2051,7 @@ vlruvp(struct vnode *vp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Disassociate the underlying file system from a vnode.
|
* Disassociate the underlying filesystem from a vnode.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
vclean(vp, flags, td)
|
vclean(vp, flags, td)
|
||||||
@ -3110,7 +3110,7 @@ NDFREE(ndp, flags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Common file system object access control check routine. Accepts a
|
* Common filesystem object access control check routine. Accepts a
|
||||||
* vnode's type, "mode", uid and gid, requested access mode, credentials,
|
* vnode's type, "mode", uid and gid, requested access mode, credentials,
|
||||||
* and optional call-by-reference privused argument allowing vaccess()
|
* and optional call-by-reference privused argument allowing vaccess()
|
||||||
* to indicate to the caller whether privilege was used to satisfy the
|
* to indicate to the caller whether privilege was used to satisfy the
|
||||||
|
@ -1025,7 +1025,7 @@ checkdirs(olddp, newdp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unmount a file system.
|
* Unmount a filesystem.
|
||||||
*
|
*
|
||||||
* Note: unmount takes a path to the vnode mounted on as argument,
|
* Note: unmount takes a path to the vnode mounted on as argument,
|
||||||
* not special file (as before).
|
* not special file (as before).
|
||||||
@ -1071,7 +1071,7 @@ unmount(td, uap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Don't allow unmounting the root file system.
|
* Don't allow unmounting the root filesystem.
|
||||||
*/
|
*/
|
||||||
if (mp->mnt_flag & MNT_ROOTFS) {
|
if (mp->mnt_flag & MNT_ROOTFS) {
|
||||||
vput(vp);
|
vput(vp);
|
||||||
@ -1090,7 +1090,7 @@ unmount(td, uap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Do the actual file system unmount.
|
* Do the actual filesystem unmount.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
dounmount(mp, flags, td)
|
dounmount(mp, flags, td)
|
||||||
@ -3810,7 +3810,7 @@ rmdir(td, uap)
|
|||||||
|
|
||||||
#ifdef COMPAT_43
|
#ifdef COMPAT_43
|
||||||
/*
|
/*
|
||||||
* Read a block of directory entries in a file system independent format.
|
* Read a block of directory entries in a filesystem independent format.
|
||||||
*/
|
*/
|
||||||
#ifndef _SYS_SYSPROTO_H_
|
#ifndef _SYS_SYSPROTO_H_
|
||||||
struct ogetdirentries_args {
|
struct ogetdirentries_args {
|
||||||
@ -3950,7 +3950,7 @@ ogetdirentries(td, uap)
|
|||||||
#endif /* COMPAT_43 */
|
#endif /* COMPAT_43 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Read a block of directory entries in a file system independent format.
|
* Read a block of directory entries in a filesystem independent format.
|
||||||
*/
|
*/
|
||||||
#ifndef _SYS_SYSPROTO_H_
|
#ifndef _SYS_SYSPROTO_H_
|
||||||
struct getdirentries_args {
|
struct getdirentries_args {
|
||||||
|
@ -928,7 +928,7 @@ extern const char * EXPORT gzerror OF((gzFile file, int *errnum));
|
|||||||
/*
|
/*
|
||||||
Returns the error message for the last error which occurred on the
|
Returns the error message for the last error which occurred on the
|
||||||
given compressed file. errnum is set to zlib error number. If an
|
given compressed file. errnum is set to zlib error number. If an
|
||||||
error occurred in the file system and not in the compression library,
|
error occurred in the filesystem and not in the compression library,
|
||||||
errnum is set to Z_ERRNO and the application may consult errno
|
errnum is set to Z_ERRNO and the application may consult errno
|
||||||
to get the exact error code.
|
to get the exact error code.
|
||||||
*/
|
*/
|
||||||
|
@ -205,7 +205,7 @@ int ncp_get_queue_job_ids(NWCONN_HANDLE, u_int32_t, u_int32_t,
|
|||||||
int ncp_get_queue_job_info(NWCONN_HANDLE, u_int32_t, u_int32_t,
|
int ncp_get_queue_job_info(NWCONN_HANDLE, u_int32_t, u_int32_t,
|
||||||
struct nw_queue_job_entry *);
|
struct nw_queue_job_entry *);
|
||||||
/*
|
/*
|
||||||
* file system and volume calls
|
* filesystem and volume calls
|
||||||
*/
|
*/
|
||||||
int ncp_read(NWCONN_HANDLE, ncp_fh *, off_t, size_t, char *);
|
int ncp_read(NWCONN_HANDLE, ncp_fh *, off_t, size_t, char *);
|
||||||
int ncp_write(NWCONN_HANDLE, ncp_fh *, off_t, size_t, char *);
|
int ncp_write(NWCONN_HANDLE, ncp_fh *, off_t, size_t, char *);
|
||||||
|
@ -501,7 +501,7 @@ nfs_mountroot(struct mount *mp, struct thread *td)
|
|||||||
VTONFS(vp)->n_size = VTONFS(vp)->n_vattr.va_size =
|
VTONFS(vp)->n_size = VTONFS(vp)->n_vattr.va_size =
|
||||||
nd->swap_nblks * DEV_BSIZE ;
|
nd->swap_nblks * DEV_BSIZE ;
|
||||||
/*
|
/*
|
||||||
* Since the swap file is not the root dir of a file system,
|
* Since the swap file is not the root dir of a filesystem,
|
||||||
* hack it to a regular file.
|
* hack it to a regular file.
|
||||||
*/
|
*/
|
||||||
vp->v_type = VREG;
|
vp->v_type = VREG;
|
||||||
@ -907,7 +907,7 @@ nfs_unmount(struct mount *mp, int mntflags, struct thread *td)
|
|||||||
nmp = VFSTONFS(mp);
|
nmp = VFSTONFS(mp);
|
||||||
/*
|
/*
|
||||||
* Goes something like this..
|
* Goes something like this..
|
||||||
* - Call vflush() to clear out vnodes for this file system
|
* - Call vflush() to clear out vnodes for this filesystem
|
||||||
* - Close the socket
|
* - Close the socket
|
||||||
* - Free up the data structures
|
* - Free up the data structures
|
||||||
*/
|
*/
|
||||||
|
@ -77,7 +77,7 @@
|
|||||||
#define B_INVAFTERWRITE B_NOCACHE
|
#define B_INVAFTERWRITE B_NOCACHE
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The IO_METASYNC flag should be implemented for local file systems.
|
* The IO_METASYNC flag should be implemented for local filesystems.
|
||||||
* (Until then, it is nothin at all.)
|
* (Until then, it is nothin at all.)
|
||||||
*/
|
*/
|
||||||
#ifndef IO_METASYNC
|
#ifndef IO_METASYNC
|
||||||
|
@ -391,7 +391,7 @@ nfsrv_setattr(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* If the size is being changed write acces is required, otherwise
|
* If the size is being changed write acces is required, otherwise
|
||||||
* just check for a read only file system.
|
* just check for a read only filesystem.
|
||||||
*/
|
*/
|
||||||
if (vap->va_size == ((u_quad_t)((quad_t) -1))) {
|
if (vap->va_size == ((u_quad_t)((quad_t) -1))) {
|
||||||
if (rdonly || (vp->v_mount->mnt_flag & MNT_RDONLY)) {
|
if (rdonly || (vp->v_mount->mnt_flag & MNT_RDONLY)) {
|
||||||
@ -3864,7 +3864,7 @@ nfsrv_fsinfo(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* XXX
|
* XXX
|
||||||
* There should be file system VFS OP(s) to get this information.
|
* There should be filesystem VFS OP(s) to get this information.
|
||||||
* For now, assume ufs.
|
* For now, assume ufs.
|
||||||
*/
|
*/
|
||||||
if (slp->ns_so->so_type == SOCK_DGRAM)
|
if (slp->ns_so->so_type == SOCK_DGRAM)
|
||||||
@ -4028,9 +4028,9 @@ nfsrv_access(struct vnode *vp, int flags, struct ucred *cred, int rdonly,
|
|||||||
if (flags & VWRITE) {
|
if (flags & VWRITE) {
|
||||||
/* Just vn_writechk() changed to check rdonly */
|
/* Just vn_writechk() changed to check rdonly */
|
||||||
/*
|
/*
|
||||||
* Disallow write attempts on read-only file systems;
|
* Disallow write attempts on read-only filesystems;
|
||||||
* unless the file is a socket or a block or character
|
* unless the file is a socket or a block or character
|
||||||
* device resident on the file system.
|
* device resident on the filesystem.
|
||||||
*/
|
*/
|
||||||
if (rdonly || (vp->v_mount->mnt_flag & MNT_RDONLY)) {
|
if (rdonly || (vp->v_mount->mnt_flag & MNT_RDONLY)) {
|
||||||
switch (vp->v_type) {
|
switch (vp->v_type) {
|
||||||
|
@ -292,7 +292,7 @@ sysarch(struct thread *td, struct sysarch_args *uap) {
|
|||||||
extern int lomac_mmap(struct proc *, struct mmap_args *);
|
extern int lomac_mmap(struct proc *, struct mmap_args *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mount a file system.
|
* Mount a filesystem.
|
||||||
*/
|
*/
|
||||||
#ifndef _SYS_SYSPROTO_H_
|
#ifndef _SYS_SYSPROTO_H_
|
||||||
struct mount_args {
|
struct mount_args {
|
||||||
@ -344,7 +344,7 @@ mount(td, uap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unmount a file system.
|
* Unmount a filesystem.
|
||||||
*
|
*
|
||||||
* Note: unmount takes a path to the vnode mounted on as argument,
|
* Note: unmount takes a path to the vnode mounted on as argument,
|
||||||
* not special file (as before).
|
* not special file (as before).
|
||||||
@ -390,7 +390,7 @@ unmount(td, uap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Don't allow unmounting the root file system.
|
* Don't allow unmounting the root filesystem.
|
||||||
*/
|
*/
|
||||||
if (mp->mnt_flag & MNT_ROOTFS) {
|
if (mp->mnt_flag & MNT_ROOTFS) {
|
||||||
vput(vp);
|
vput(vp);
|
||||||
|
@ -344,7 +344,7 @@ lomacfs_cachedlookup(
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Check to see if the vnode has been mounted on;
|
* Check to see if the vnode has been mounted on;
|
||||||
* if so find the root of the mounted file system.
|
* if so find the root of the mounted filesystem.
|
||||||
*/
|
*/
|
||||||
if (lvp->v_type == VDIR && (mp = lvp->v_mountedhere) &&
|
if (lvp->v_type == VDIR && (mp = lvp->v_mountedhere) &&
|
||||||
(cnp->cn_flags & NOCROSSMOUNT) == 0) {
|
(cnp->cn_flags & NOCROSSMOUNT) == 0) {
|
||||||
|
@ -152,7 +152,7 @@ __END_DECLS
|
|||||||
* Supported POSIX.1e ACL manipulation and assignment/retrieval API
|
* Supported POSIX.1e ACL manipulation and assignment/retrieval API
|
||||||
* _np calls are local extensions that reflect an environment capable of
|
* _np calls are local extensions that reflect an environment capable of
|
||||||
* opening file descriptors of directories, and allowing additional
|
* opening file descriptors of directories, and allowing additional
|
||||||
* ACL type for different file systems (i.e., AFS).
|
* ACL type for different filesystems (i.e., AFS).
|
||||||
*/
|
*/
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
int acl_add_perm(acl_permset_t _permset_d, acl_perm_t _perm);
|
int acl_add_perm(acl_permset_t _permset_d, acl_perm_t _perm);
|
||||||
|
@ -240,11 +240,11 @@ static const char *dktypenames[] = {
|
|||||||
#define FS_SYSV 4 /* System V */
|
#define FS_SYSV 4 /* System V */
|
||||||
#define FS_V71K 5 /* V7 with 1K blocks (4.1, 2.9) */
|
#define FS_V71K 5 /* V7 with 1K blocks (4.1, 2.9) */
|
||||||
#define FS_V8 6 /* Eighth Edition, 4K blocks */
|
#define FS_V8 6 /* Eighth Edition, 4K blocks */
|
||||||
#define FS_BSDFFS 7 /* 4.2BSD fast file system */
|
#define FS_BSDFFS 7 /* 4.2BSD fast filesystem */
|
||||||
#define FS_MSDOS 8 /* MSDOS file system */
|
#define FS_MSDOS 8 /* MSDOS filesystem */
|
||||||
#define FS_BSDLFS 9 /* 4.4BSD log-structured file system */
|
#define FS_BSDLFS 9 /* 4.4BSD log-structured filesystem */
|
||||||
#define FS_OTHER 10 /* in use, but unknown/unsupported */
|
#define FS_OTHER 10 /* in use, but unknown/unsupported */
|
||||||
#define FS_HPFS 11 /* OS/2 high-performance file system */
|
#define FS_HPFS 11 /* OS/2 high-performance filesystem */
|
||||||
#define FS_ISO9660 12 /* ISO 9660, normally CD-ROM */
|
#define FS_ISO9660 12 /* ISO 9660, normally CD-ROM */
|
||||||
#define FS_BOOT 13 /* partition contains bootstrap */
|
#define FS_BOOT 13 /* partition contains bootstrap */
|
||||||
#define FS_VINUM 14 /* Vinum drive */
|
#define FS_VINUM 14 /* Vinum drive */
|
||||||
|
@ -240,11 +240,11 @@ static const char *dktypenames[] = {
|
|||||||
#define FS_SYSV 4 /* System V */
|
#define FS_SYSV 4 /* System V */
|
||||||
#define FS_V71K 5 /* V7 with 1K blocks (4.1, 2.9) */
|
#define FS_V71K 5 /* V7 with 1K blocks (4.1, 2.9) */
|
||||||
#define FS_V8 6 /* Eighth Edition, 4K blocks */
|
#define FS_V8 6 /* Eighth Edition, 4K blocks */
|
||||||
#define FS_BSDFFS 7 /* 4.2BSD fast file system */
|
#define FS_BSDFFS 7 /* 4.2BSD fast filesystem */
|
||||||
#define FS_MSDOS 8 /* MSDOS file system */
|
#define FS_MSDOS 8 /* MSDOS filesystem */
|
||||||
#define FS_BSDLFS 9 /* 4.4BSD log-structured file system */
|
#define FS_BSDLFS 9 /* 4.4BSD log-structured filesystem */
|
||||||
#define FS_OTHER 10 /* in use, but unknown/unsupported */
|
#define FS_OTHER 10 /* in use, but unknown/unsupported */
|
||||||
#define FS_HPFS 11 /* OS/2 high-performance file system */
|
#define FS_HPFS 11 /* OS/2 high-performance filesystem */
|
||||||
#define FS_ISO9660 12 /* ISO 9660, normally CD-ROM */
|
#define FS_ISO9660 12 /* ISO 9660, normally CD-ROM */
|
||||||
#define FS_BOOT 13 /* partition contains bootstrap */
|
#define FS_BOOT 13 /* partition contains bootstrap */
|
||||||
#define FS_VINUM 14 /* Vinum drive */
|
#define FS_VINUM 14 /* Vinum drive */
|
||||||
|
@ -240,11 +240,11 @@ static const char *dktypenames[] = {
|
|||||||
#define FS_SYSV 4 /* System V */
|
#define FS_SYSV 4 /* System V */
|
||||||
#define FS_V71K 5 /* V7 with 1K blocks (4.1, 2.9) */
|
#define FS_V71K 5 /* V7 with 1K blocks (4.1, 2.9) */
|
||||||
#define FS_V8 6 /* Eighth Edition, 4K blocks */
|
#define FS_V8 6 /* Eighth Edition, 4K blocks */
|
||||||
#define FS_BSDFFS 7 /* 4.2BSD fast file system */
|
#define FS_BSDFFS 7 /* 4.2BSD fast filesystem */
|
||||||
#define FS_MSDOS 8 /* MSDOS file system */
|
#define FS_MSDOS 8 /* MSDOS filesystem */
|
||||||
#define FS_BSDLFS 9 /* 4.4BSD log-structured file system */
|
#define FS_BSDLFS 9 /* 4.4BSD log-structured filesystem */
|
||||||
#define FS_OTHER 10 /* in use, but unknown/unsupported */
|
#define FS_OTHER 10 /* in use, but unknown/unsupported */
|
||||||
#define FS_HPFS 11 /* OS/2 high-performance file system */
|
#define FS_HPFS 11 /* OS/2 high-performance filesystem */
|
||||||
#define FS_ISO9660 12 /* ISO 9660, normally CD-ROM */
|
#define FS_ISO9660 12 /* ISO 9660, normally CD-ROM */
|
||||||
#define FS_BOOT 13 /* partition contains bootstrap */
|
#define FS_BOOT 13 /* partition contains bootstrap */
|
||||||
#define FS_VINUM 14 /* Vinum drive */
|
#define FS_VINUM 14 /* Vinum drive */
|
||||||
|
@ -84,7 +84,7 @@ __END_DECLS
|
|||||||
#define EFBIG 27 /* File too large */
|
#define EFBIG 27 /* File too large */
|
||||||
#define ENOSPC 28 /* No space left on device */
|
#define ENOSPC 28 /* No space left on device */
|
||||||
#define ESPIPE 29 /* Illegal seek */
|
#define ESPIPE 29 /* Illegal seek */
|
||||||
#define EROFS 30 /* Read-only file system */
|
#define EROFS 30 /* Read-only filesystem */
|
||||||
#define EMLINK 31 /* Too many links */
|
#define EMLINK 31 /* Too many links */
|
||||||
#define EPIPE 32 /* Broken pipe */
|
#define EPIPE 32 /* Broken pipe */
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* Developed by the TrustedBSD Project.
|
* Developed by the TrustedBSD Project.
|
||||||
* Support for extended file system attributes.
|
* Support for extended filesystem attributes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _SYS_EXTATTR_H_
|
#ifndef _SYS_EXTATTR_H_
|
||||||
|
@ -134,7 +134,7 @@ enum sysinit_sub_id {
|
|||||||
SI_SUB_INIT_IF = 0x3000000, /* prep for net interfaces */
|
SI_SUB_INIT_IF = 0x3000000, /* prep for net interfaces */
|
||||||
SI_SUB_DRIVERS = 0x3100000, /* Let Drivers initialize */
|
SI_SUB_DRIVERS = 0x3100000, /* Let Drivers initialize */
|
||||||
SI_SUB_CONFIGURE = 0x3800000, /* Configure devices */
|
SI_SUB_CONFIGURE = 0x3800000, /* Configure devices */
|
||||||
SI_SUB_VFS = 0x4000000, /* virtual file system*/
|
SI_SUB_VFS = 0x4000000, /* virtual filesystem*/
|
||||||
SI_SUB_CLOCKS = 0x4800000, /* real time and stat clocks*/
|
SI_SUB_CLOCKS = 0x4800000, /* real time and stat clocks*/
|
||||||
SI_SUB_CLIST = 0x5800000, /* clists*/
|
SI_SUB_CLIST = 0x5800000, /* clists*/
|
||||||
SI_SUB_SYSV_SHM = 0x6400000, /* System V shared memory*/
|
SI_SUB_SYSV_SHM = 0x6400000, /* System V shared memory*/
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
struct netcred;
|
struct netcred;
|
||||||
struct netexport;
|
struct netexport;
|
||||||
|
|
||||||
typedef struct fsid { int32_t val[2]; } fsid_t; /* file system id type */
|
typedef struct fsid { int32_t val[2]; } fsid_t; /* filesystem id type */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* File identifier.
|
* File identifier.
|
||||||
@ -69,7 +69,7 @@ struct fid {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* file system statistics
|
* filesystem statistics
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MFSNAMELEN 16 /* length of fs type name, including null */
|
#define MFSNAMELEN 16 /* length of fs type name, including null */
|
||||||
@ -82,14 +82,14 @@ struct fid {
|
|||||||
|
|
||||||
struct statfs {
|
struct statfs {
|
||||||
long f_spare2; /* placeholder */
|
long f_spare2; /* placeholder */
|
||||||
long f_bsize; /* fundamental file system block size */
|
long f_bsize; /* fundamental filesystem block size */
|
||||||
long f_iosize; /* optimal transfer block size */
|
long f_iosize; /* optimal transfer block size */
|
||||||
long f_blocks; /* total data blocks in file system */
|
long f_blocks; /* total data blocks in filesystem */
|
||||||
long f_bfree; /* free blocks in fs */
|
long f_bfree; /* free blocks in fs */
|
||||||
long f_bavail; /* free blocks avail to non-superuser */
|
long f_bavail; /* free blocks avail to non-superuser */
|
||||||
long f_files; /* total file nodes in file system */
|
long f_files; /* total file nodes in filesystem */
|
||||||
long f_ffree; /* free file nodes in fs */
|
long f_ffree; /* free file nodes in fs */
|
||||||
fsid_t f_fsid; /* file system id */
|
fsid_t f_fsid; /* filesystem id */
|
||||||
uid_t f_owner; /* user that mounted the filesystem */
|
uid_t f_owner; /* user that mounted the filesystem */
|
||||||
int f_type; /* type of filesystem */
|
int f_type; /* type of filesystem */
|
||||||
int f_flags; /* copy of mount exported flags */
|
int f_flags; /* copy of mount exported flags */
|
||||||
@ -107,8 +107,8 @@ struct statfs {
|
|||||||
|
|
||||||
#ifdef _KERNEL
|
#ifdef _KERNEL
|
||||||
/*
|
/*
|
||||||
* Structure per mounted file system. Each mounted file system has an
|
* Structure per mounted filesystem. Each mounted filesystem has an
|
||||||
* array of operations and an instance record. The file systems are
|
* array of operations and an instance record. The filesystems are
|
||||||
* put on a doubly linked list.
|
* put on a doubly linked list.
|
||||||
*
|
*
|
||||||
* NOTE: mnt_nvnodelist and mnt_reservedvnlist. At the moment vnodes
|
* NOTE: mnt_nvnodelist and mnt_reservedvnlist. At the moment vnodes
|
||||||
@ -159,12 +159,12 @@ struct mount {
|
|||||||
* User specifiable flags.
|
* User specifiable flags.
|
||||||
*/
|
*/
|
||||||
#define MNT_RDONLY 0x00000001 /* read only filesystem */
|
#define MNT_RDONLY 0x00000001 /* read only filesystem */
|
||||||
#define MNT_SYNCHRONOUS 0x00000002 /* file system written synchronously */
|
#define MNT_SYNCHRONOUS 0x00000002 /* filesystem written synchronously */
|
||||||
#define MNT_NOEXEC 0x00000004 /* can't exec from filesystem */
|
#define MNT_NOEXEC 0x00000004 /* can't exec from filesystem */
|
||||||
#define MNT_NOSUID 0x00000008 /* don't honor setuid bits on fs */
|
#define MNT_NOSUID 0x00000008 /* don't honor setuid bits on fs */
|
||||||
#define MNT_NODEV 0x00000010 /* don't interpret special files */
|
#define MNT_NODEV 0x00000010 /* don't interpret special files */
|
||||||
#define MNT_UNION 0x00000020 /* union with underlying filesystem */
|
#define MNT_UNION 0x00000020 /* union with underlying filesystem */
|
||||||
#define MNT_ASYNC 0x00000040 /* file system written asynchronously */
|
#define MNT_ASYNC 0x00000040 /* filesystem written asynchronously */
|
||||||
#define MNT_SUIDDIR 0x00100000 /* special handling of SUID on dirs */
|
#define MNT_SUIDDIR 0x00100000 /* special handling of SUID on dirs */
|
||||||
#define MNT_SOFTDEP 0x00200000 /* soft updates being done */
|
#define MNT_SOFTDEP 0x00200000 /* soft updates being done */
|
||||||
#define MNT_NOSYMFOLLOW 0x00400000 /* do not follow symlinks */
|
#define MNT_NOSYMFOLLOW 0x00400000 /* do not follow symlinks */
|
||||||
@ -178,7 +178,7 @@ struct mount {
|
|||||||
* NFS export related mount flags.
|
* NFS export related mount flags.
|
||||||
*/
|
*/
|
||||||
#define MNT_EXRDONLY 0x00000080 /* exported read only */
|
#define MNT_EXRDONLY 0x00000080 /* exported read only */
|
||||||
#define MNT_EXPORTED 0x00000100 /* file system is exported */
|
#define MNT_EXPORTED 0x00000100 /* filesystem is exported */
|
||||||
#define MNT_DEFEXPORTED 0x00000200 /* exported to the world */
|
#define MNT_DEFEXPORTED 0x00000200 /* exported to the world */
|
||||||
#define MNT_EXPORTANON 0x00000400 /* use anon uid mapping for everyone */
|
#define MNT_EXPORTANON 0x00000400 /* use anon uid mapping for everyone */
|
||||||
#define MNT_EXKERB 0x00000800 /* exported with Kerberos uid mapping */
|
#define MNT_EXKERB 0x00000800 /* exported with Kerberos uid mapping */
|
||||||
@ -357,7 +357,7 @@ extern int nfs_mount_type; /* vfc_typenum for nfs, or -1 */
|
|||||||
extern struct vfsconf *vfsconf; /* head of list of filesystem types */
|
extern struct vfsconf *vfsconf; /* head of list of filesystem types */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Operations supported on mounted file system.
|
* Operations supported on mounted filesystem.
|
||||||
*/
|
*/
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
struct nameidata;
|
struct nameidata;
|
||||||
|
@ -142,7 +142,7 @@ struct nameidata {
|
|||||||
#define DOWHITEOUT 0x040000 /* do whiteouts */
|
#define DOWHITEOUT 0x040000 /* do whiteouts */
|
||||||
#define WILLBEDIR 0x080000 /* new files will be dirs; allow trailing / */
|
#define WILLBEDIR 0x080000 /* new files will be dirs; allow trailing / */
|
||||||
#define ISUNICODE 0x100000 /* current component name is unicode*/
|
#define ISUNICODE 0x100000 /* current component name is unicode*/
|
||||||
#define PDIRUNLOCK 0x200000 /* file system lookup() unlocked parent dir */
|
#define PDIRUNLOCK 0x200000 /* filesystem lookup() unlocked parent dir */
|
||||||
#define NOCROSSMOUNT 0x400000 /* do not cross mount points */
|
#define NOCROSSMOUNT 0x400000 /* do not cross mount points */
|
||||||
#define PARAMASK 0x3ffe00 /* mask of parameter descriptors */
|
#define PARAMASK 0x3ffe00 /* mask of parameter descriptors */
|
||||||
|
|
||||||
|
@ -280,7 +280,7 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_entry);
|
|||||||
#define CTL_UNSPEC 0 /* unused */
|
#define CTL_UNSPEC 0 /* unused */
|
||||||
#define CTL_KERN 1 /* "high kernel": proc, limits */
|
#define CTL_KERN 1 /* "high kernel": proc, limits */
|
||||||
#define CTL_VM 2 /* virtual memory */
|
#define CTL_VM 2 /* virtual memory */
|
||||||
#define CTL_VFS 3 /* file system, mount type is next */
|
#define CTL_VFS 3 /* filesystem, mount type is next */
|
||||||
#define CTL_NET 4 /* network, see socket.h */
|
#define CTL_NET 4 /* network, see socket.h */
|
||||||
#define CTL_DEBUG 5 /* debugging parameters */
|
#define CTL_DEBUG 5 /* debugging parameters */
|
||||||
#define CTL_HW 6 /* generic cpu/io */
|
#define CTL_HW 6 /* generic cpu/io */
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
* instance of a UNIX internal protocol.
|
* instance of a UNIX internal protocol.
|
||||||
*
|
*
|
||||||
* A socket may be associated with an vnode in the
|
* A socket may be associated with an vnode in the
|
||||||
* file system. If so, the unp_vnode pointer holds
|
* filesystem. If so, the unp_vnode pointer holds
|
||||||
* a reference count to this vnode, which should be irele'd
|
* a reference count to this vnode, which should be irele'd
|
||||||
* when the socket goes away.
|
* when the socket goes away.
|
||||||
*
|
*
|
||||||
|
@ -165,7 +165,7 @@ struct vnode {
|
|||||||
/*
|
/*
|
||||||
* Vnode flags.
|
* Vnode flags.
|
||||||
*/
|
*/
|
||||||
#define VROOT 0x00001 /* root of its file system */
|
#define VROOT 0x00001 /* root of its filesystem */
|
||||||
#define VTEXT 0x00002 /* vnode is a pure text prototype */
|
#define VTEXT 0x00002 /* vnode is a pure text prototype */
|
||||||
#define VSYSTEM 0x00004 /* vnode being used by kernel */
|
#define VSYSTEM 0x00004 /* vnode being used by kernel */
|
||||||
#define VISTTY 0x00008 /* vnode represents a tty */
|
#define VISTTY 0x00008 /* vnode represents a tty */
|
||||||
@ -196,7 +196,7 @@ struct vattr {
|
|||||||
short va_nlink; /* number of references to file */
|
short va_nlink; /* number of references to file */
|
||||||
uid_t va_uid; /* owner user id */
|
uid_t va_uid; /* owner user id */
|
||||||
gid_t va_gid; /* owner group id */
|
gid_t va_gid; /* owner group id */
|
||||||
udev_t va_fsid; /* file system id */
|
udev_t va_fsid; /* filesystem id */
|
||||||
long va_fileid; /* file id */
|
long va_fileid; /* file id */
|
||||||
u_quad_t va_size; /* file size in bytes */
|
u_quad_t va_size; /* file size in bytes */
|
||||||
long va_blocksize; /* blocksize preferred for i/o */
|
long va_blocksize; /* blocksize preferred for i/o */
|
||||||
|
@ -77,7 +77,7 @@ static ino_t ffs_nodealloccg(struct inode *, int, ufs_daddr_t, int);
|
|||||||
static ufs_daddr_t ffs_mapsearch(struct fs *, struct cg *, ufs_daddr_t, int);
|
static ufs_daddr_t ffs_mapsearch(struct fs *, struct cg *, ufs_daddr_t, int);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate a block in the file system.
|
* Allocate a block in the filesystem.
|
||||||
*
|
*
|
||||||
* The size of the requested block is given, which must be some
|
* The size of the requested block is given, which must be some
|
||||||
* multiple of fs_fsize and <= fs_bsize.
|
* multiple of fs_fsize and <= fs_bsize.
|
||||||
@ -160,8 +160,8 @@ ffs_alloc(ip, lbn, bpref, size, cred, bnp)
|
|||||||
softdep_request_cleanup(fs, ITOV(ip));
|
softdep_request_cleanup(fs, ITOV(ip));
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
ffs_fserr(fs, ip->i_number, "file system full");
|
ffs_fserr(fs, ip->i_number, "filesystem full");
|
||||||
uprintf("\n%s: write failed, file system is full\n", fs->fs_fsmnt);
|
uprintf("\n%s: write failed, filesystem is full\n", fs->fs_fsmnt);
|
||||||
return (ENOSPC);
|
return (ENOSPC);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,8 +336,8 @@ ffs_realloccg(ip, lbprev, bpref, osize, nsize, cred, bpp)
|
|||||||
softdep_request_cleanup(fs, vp);
|
softdep_request_cleanup(fs, vp);
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
ffs_fserr(fs, ip->i_number, "file system full");
|
ffs_fserr(fs, ip->i_number, "filesystem full");
|
||||||
uprintf("\n%s: write failed, file system is full\n", fs->fs_fsmnt);
|
uprintf("\n%s: write failed, filesystem is full\n", fs->fs_fsmnt);
|
||||||
return (ENOSPC);
|
return (ENOSPC);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -572,7 +572,7 @@ ffs_reallocblks(ap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate an inode in the file system.
|
* Allocate an inode in the filesystem.
|
||||||
*
|
*
|
||||||
* If allocating a directory, use ffs_dirpref to select the inode.
|
* If allocating a directory, use ffs_dirpref to select the inode.
|
||||||
* If allocating in a directory, the following hierarchy is followed:
|
* If allocating in a directory, the following hierarchy is followed:
|
||||||
@ -1850,7 +1850,7 @@ ffs_clusteracct(fs, cgp, blkno, cnt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fserr prints the name of a file system with an error diagnostic.
|
* Fserr prints the name of a filesystem with an error diagnostic.
|
||||||
*
|
*
|
||||||
* The form of the error message is:
|
* The form of the error message is:
|
||||||
* fs: error message
|
* fs: error message
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
#include <ufs/ffs/ffs_extern.h>
|
#include <ufs/ffs/ffs_extern.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Balloc defines the structure of file system storage
|
* Balloc defines the structure of filesystem storage
|
||||||
* by allocating the physical blocks on a device given
|
* by allocating the physical blocks on a device given
|
||||||
* the inode and the logical block number in a file.
|
* the inode and the logical block number in a file.
|
||||||
*/
|
*/
|
||||||
|
@ -1103,7 +1103,7 @@ newblk_lookup(fs, newblkno, flags, newblkpp)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Executed during filesystem system initialization before
|
* Executed during filesystem system initialization before
|
||||||
* mounting any file systems.
|
* mounting any filesystems.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
softdep_initialize()
|
softdep_initialize()
|
||||||
@ -1179,7 +1179,7 @@ softdep_mount(devvp, mp, fs, cred)
|
|||||||
/*
|
/*
|
||||||
* Protecting the freemaps (or bitmaps).
|
* Protecting the freemaps (or bitmaps).
|
||||||
*
|
*
|
||||||
* To eliminate the need to execute fsck before mounting a file system
|
* To eliminate the need to execute fsck before mounting a filesystem
|
||||||
* after a power failure, one must (conservatively) guarantee that the
|
* after a power failure, one must (conservatively) guarantee that the
|
||||||
* on-disk copy of the bitmaps never indicate that a live inode or block is
|
* on-disk copy of the bitmaps never indicate that a live inode or block is
|
||||||
* free. So, when a block or inode is allocated, the bitmap should be
|
* free. So, when a block or inode is allocated, the bitmap should be
|
||||||
@ -1194,7 +1194,7 @@ softdep_mount(devvp, mp, fs, cred)
|
|||||||
* that any additional link additions can be made dependent on the inode
|
* that any additional link additions can be made dependent on the inode
|
||||||
* allocation.
|
* allocation.
|
||||||
*
|
*
|
||||||
* The ufs file system maintains a number of free block counts (e.g., per
|
* The ufs filesystem maintains a number of free block counts (e.g., per
|
||||||
* cylinder group, per cylinder and per <cylinder, rotational position> pair)
|
* cylinder group, per cylinder and per <cylinder, rotational position> pair)
|
||||||
* in addition to the bitmaps. These counts are used to improve efficiency
|
* in addition to the bitmaps. These counts are used to improve efficiency
|
||||||
* during allocation and therefore must be consistent with the bitmaps.
|
* during allocation and therefore must be consistent with the bitmaps.
|
||||||
@ -2432,7 +2432,7 @@ free_allocindir(aip, inodedep)
|
|||||||
* simply of the inode number.
|
* simply of the inode number.
|
||||||
*
|
*
|
||||||
* As directory entries are added and deleted, the free space within a
|
* As directory entries are added and deleted, the free space within a
|
||||||
* directory block can become fragmented. The ufs file system will compact
|
* directory block can become fragmented. The ufs filesystem will compact
|
||||||
* a fragmented directory block to make space for a new entry. When this
|
* a fragmented directory block to make space for a new entry. When this
|
||||||
* occurs, the offsets of previously added entries change. Any "diradd"
|
* occurs, the offsets of previously added entries change. Any "diradd"
|
||||||
* dependency structures corresponding to these entries must be updated with
|
* dependency structures corresponding to these entries must be updated with
|
||||||
@ -3455,7 +3455,7 @@ initiate_write_inodeblock(inodedep, bp)
|
|||||||
/*
|
/*
|
||||||
* This routine is called during the completion interrupt
|
* This routine is called during the completion interrupt
|
||||||
* service routine for a disk write (from the procedure called
|
* service routine for a disk write (from the procedure called
|
||||||
* by the device driver to inform the file system caches of
|
* by the device driver to inform the filesystem caches of
|
||||||
* a request completion). It should be called early in this
|
* a request completion). It should be called early in this
|
||||||
* procedure, before the block is made available to other
|
* procedure, before the block is made available to other
|
||||||
* processes or other routines are called.
|
* processes or other routines are called.
|
||||||
@ -4007,7 +4007,7 @@ handle_written_filepage(pagedep, bp)
|
|||||||
/*
|
/*
|
||||||
* Writing back in-core inode structures.
|
* Writing back in-core inode structures.
|
||||||
*
|
*
|
||||||
* The file system only accesses an inode's contents when it occupies an
|
* The filesystem only accesses an inode's contents when it occupies an
|
||||||
* "in-core" inode structure. These "in-core" structures are separate from
|
* "in-core" inode structure. These "in-core" structures are separate from
|
||||||
* the page frames used to cache inode blocks. Only the latter are
|
* the page frames used to cache inode blocks. Only the latter are
|
||||||
* transferred to/from the disk. So, when the updated contents of the
|
* transferred to/from the disk. So, when the updated contents of the
|
||||||
|
@ -148,7 +148,7 @@ ffs_mount(mp, path, data, ndp, td)
|
|||||||
mode_t accessmode;
|
mode_t accessmode;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Use NULL path to indicate we are mounting the root file system.
|
* Use NULL path to indicate we are mounting the root filesystem.
|
||||||
*/
|
*/
|
||||||
if (path == NULL) {
|
if (path == NULL) {
|
||||||
if ((error = bdevvp(rootdev, &rootvp))) {
|
if ((error = bdevvp(rootdev, &rootvp))) {
|
||||||
@ -163,7 +163,7 @@ ffs_mount(mp, path, data, ndp, td)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mounting non-root file system or updating a file system
|
* Mounting non-root filesystem or updating a filesystem
|
||||||
*/
|
*/
|
||||||
if ((error = copyin(data, (caddr_t)&args, sizeof(struct ufs_args)))!= 0)
|
if ((error = copyin(data, (caddr_t)&args, sizeof(struct ufs_args)))!= 0)
|
||||||
return (error);
|
return (error);
|
||||||
@ -784,7 +784,7 @@ ffs_mountfs(devvp, mp, td, malloctype)
|
|||||||
* - for each file in .attribute, enable that file with
|
* - for each file in .attribute, enable that file with
|
||||||
* an attribute of the same name.
|
* an attribute of the same name.
|
||||||
* Not clear how to report errors -- probably eat them.
|
* Not clear how to report errors -- probably eat them.
|
||||||
* This would all happen while the file system was busy/not
|
* This would all happen while the filesystem was busy/not
|
||||||
* available, so would effectively be "atomic".
|
* available, so would effectively be "atomic".
|
||||||
*/
|
*/
|
||||||
(void) ufs_extattr_autostart(mp, td);
|
(void) ufs_extattr_autostart(mp, td);
|
||||||
@ -810,7 +810,7 @@ ffs_mountfs(devvp, mp, td, malloctype)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sanity checks for old file systems.
|
* Sanity checks for old filesystems.
|
||||||
*
|
*
|
||||||
* XXX - goes away some day.
|
* XXX - goes away some day.
|
||||||
*/
|
*/
|
||||||
@ -968,7 +968,7 @@ ffs_flushfiles(mp, flags, td)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get file system statistics.
|
* Get filesystem statistics.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
ffs_statfs(mp, sbp, td)
|
ffs_statfs(mp, sbp, td)
|
||||||
@ -1082,7 +1082,7 @@ ffs_sync(mp, waitfor, cred, td)
|
|||||||
}
|
}
|
||||||
mtx_unlock(&mntvnode_mtx);
|
mtx_unlock(&mntvnode_mtx);
|
||||||
/*
|
/*
|
||||||
* Force stale file system control information to be flushed.
|
* Force stale filesystem control information to be flushed.
|
||||||
*/
|
*/
|
||||||
if (waitfor == MNT_WAIT) {
|
if (waitfor == MNT_WAIT) {
|
||||||
if ((error = softdep_flushworklist(ump->um_mountp, &count, td)))
|
if ((error = softdep_flushworklist(ump->um_mountp, &count, td)))
|
||||||
@ -1411,7 +1411,7 @@ ffs_sbupdate(mp, waitfor)
|
|||||||
fs->fs_fmod = 0;
|
fs->fs_fmod = 0;
|
||||||
fs->fs_time = time_second;
|
fs->fs_time = time_second;
|
||||||
bcopy((caddr_t)fs, bp->b_data, (u_int)fs->fs_sbsize);
|
bcopy((caddr_t)fs, bp->b_data, (u_int)fs->fs_sbsize);
|
||||||
/* Restore compatibility to old file systems. XXX */
|
/* Restore compatibility to old filesystems. XXX */
|
||||||
dfs = (struct fs *)bp->b_data; /* XXX */
|
dfs = (struct fs *)bp->b_data; /* XXX */
|
||||||
if (fs->fs_postblformat == FS_42POSTBLFMT) /* XXX */
|
if (fs->fs_postblformat == FS_42POSTBLFMT) /* XXX */
|
||||||
dfs->fs_nrpos = -1; /* XXX */
|
dfs->fs_nrpos = -1; /* XXX */
|
||||||
|
@ -38,18 +38,18 @@
|
|||||||
#define _UFS_FFS_FS_H_
|
#define _UFS_FFS_FS_H_
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Each disk drive contains some number of file systems.
|
* Each disk drive contains some number of filesystems.
|
||||||
* A file system consists of a number of cylinder groups.
|
* A filesystem consists of a number of cylinder groups.
|
||||||
* Each cylinder group has inodes and data.
|
* Each cylinder group has inodes and data.
|
||||||
*
|
*
|
||||||
* A file system is described by its super-block, which in turn
|
* A filesystem is described by its super-block, which in turn
|
||||||
* describes the cylinder groups. The super-block is critical
|
* describes the cylinder groups. The super-block is critical
|
||||||
* data and is replicated in each cylinder group to protect against
|
* data and is replicated in each cylinder group to protect against
|
||||||
* catastrophic loss. This is done at `newfs' time and the critical
|
* catastrophic loss. This is done at `newfs' time and the critical
|
||||||
* super-block data does not change, so the copies need not be
|
* super-block data does not change, so the copies need not be
|
||||||
* referenced further unless disaster strikes.
|
* referenced further unless disaster strikes.
|
||||||
*
|
*
|
||||||
* For file system fs, the offsets of the various blocks of interest
|
* For filesystem fs, the offsets of the various blocks of interest
|
||||||
* are given in the super block as:
|
* are given in the super block as:
|
||||||
* [fs->fs_sblkno] Super-block
|
* [fs->fs_sblkno] Super-block
|
||||||
* [fs->fs_cblkno] Cylinder group block
|
* [fs->fs_cblkno] Cylinder group block
|
||||||
@ -76,12 +76,12 @@
|
|||||||
* Large files consist of exclusively large data blocks. To avoid
|
* Large files consist of exclusively large data blocks. To avoid
|
||||||
* undue wasted disk space, the last data block of a small file may be
|
* undue wasted disk space, the last data block of a small file may be
|
||||||
* allocated as only as many fragments of a large block as are
|
* allocated as only as many fragments of a large block as are
|
||||||
* necessary. The file system format retains only a single pointer
|
* necessary. The filesystem format retains only a single pointer
|
||||||
* to such a fragment, which is a piece of a single large block that
|
* to such a fragment, which is a piece of a single large block that
|
||||||
* has been divided. The size of such a fragment is determinable from
|
* has been divided. The size of such a fragment is determinable from
|
||||||
* information in the inode, using the ``blksize(fs, ip, lbn)'' macro.
|
* information in the inode, using the ``blksize(fs, ip, lbn)'' macro.
|
||||||
*
|
*
|
||||||
* The file system records space availability at the fragment level;
|
* The filesystem records space availability at the fragment level;
|
||||||
* to determine block availability, aligned fragments are examined.
|
* to determine block availability, aligned fragments are examined.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -97,7 +97,7 @@
|
|||||||
#define MINBSIZE 4096
|
#define MINBSIZE 4096
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The path name on which the file system is mounted is maintained
|
* The path name on which the filesystem is mounted is maintained
|
||||||
* in fs_fsmnt. MAXMNTLEN defines the amount of space allocated in
|
* in fs_fsmnt. MAXMNTLEN defines the amount of space allocated in
|
||||||
* the super block for this name.
|
* the super block for this name.
|
||||||
*/
|
*/
|
||||||
@ -129,11 +129,11 @@
|
|||||||
#define FS_MAXCONTIG 16
|
#define FS_MAXCONTIG 16
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* MINFREE gives the minimum acceptable percentage of file system
|
* MINFREE gives the minimum acceptable percentage of filesystem
|
||||||
* blocks which may be free. If the freelist drops below this level
|
* blocks which may be free. If the freelist drops below this level
|
||||||
* only the superuser may continue to allocate blocks. This may
|
* only the superuser may continue to allocate blocks. This may
|
||||||
* be set to 0 if no reserve of free blocks is deemed necessary,
|
* be set to 0 if no reserve of free blocks is deemed necessary,
|
||||||
* however throughput drops by fifty percent if the file system
|
* however throughput drops by fifty percent if the filesystem
|
||||||
* is run at between 95% and 100% full; thus the minimum default
|
* is run at between 95% and 100% full; thus the minimum default
|
||||||
* value of fs_minfree is 5%. However, to get good clustering
|
* value of fs_minfree is 5%. However, to get good clustering
|
||||||
* performance, 10% is a better choice. hence we use 10% as our
|
* performance, 10% is a better choice. hence we use 10% as our
|
||||||
@ -215,10 +215,10 @@ struct csum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Super block for an FFS file system.
|
* Super block for an FFS filesystem.
|
||||||
*/
|
*/
|
||||||
struct fs {
|
struct fs {
|
||||||
int32_t fs_firstfield; /* historic file system linked list, */
|
int32_t fs_firstfield; /* historic filesystem linked list, */
|
||||||
int32_t fs_unused_1; /* used for incore super blocks */
|
int32_t fs_unused_1; /* used for incore super blocks */
|
||||||
ufs_daddr_t fs_sblkno; /* addr of super-block in filesys */
|
ufs_daddr_t fs_sblkno; /* addr of super-block in filesys */
|
||||||
ufs_daddr_t fs_cblkno; /* offset of cyl-block in filesys */
|
ufs_daddr_t fs_cblkno; /* offset of cyl-block in filesys */
|
||||||
@ -271,7 +271,7 @@ struct fs {
|
|||||||
int32_t fs_nsect; /* sectors per track */
|
int32_t fs_nsect; /* sectors per track */
|
||||||
int32_t fs_spc; /* sectors per cylinder */
|
int32_t fs_spc; /* sectors per cylinder */
|
||||||
/* this comes from the disk driver partitioning */
|
/* this comes from the disk driver partitioning */
|
||||||
int32_t fs_ncyl; /* cylinders in file system */
|
int32_t fs_ncyl; /* cylinders in filesystem */
|
||||||
/* these fields can be computed from the others */
|
/* these fields can be computed from the others */
|
||||||
int32_t fs_cpg; /* cylinders per group */
|
int32_t fs_cpg; /* cylinders per group */
|
||||||
int32_t fs_ipg; /* inodes per group */
|
int32_t fs_ipg; /* inodes per group */
|
||||||
@ -280,7 +280,7 @@ struct fs {
|
|||||||
struct csum fs_cstotal; /* cylinder summary information */
|
struct csum fs_cstotal; /* cylinder summary information */
|
||||||
/* these fields are cleared at mount time */
|
/* these fields are cleared at mount time */
|
||||||
int8_t fs_fmod; /* super block modified flag */
|
int8_t fs_fmod; /* super block modified flag */
|
||||||
int8_t fs_clean; /* file system is clean flag */
|
int8_t fs_clean; /* filesystem is clean flag */
|
||||||
int8_t fs_ronly; /* mounted read-only flag */
|
int8_t fs_ronly; /* mounted read-only flag */
|
||||||
int8_t fs_flags; /* see FS_ flags below */
|
int8_t fs_flags; /* see FS_ flags below */
|
||||||
u_char fs_fsmnt[MAXMNTLEN]; /* name mounted on */
|
u_char fs_fsmnt[MAXMNTLEN]; /* name mounted on */
|
||||||
@ -390,7 +390,7 @@ struct fs {
|
|||||||
#define fs_cs(fs, indx) fs_csp[indx]
|
#define fs_cs(fs, indx) fs_csp[indx]
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cylinder group block for a file system.
|
* Cylinder group block for a filesystem.
|
||||||
*/
|
*/
|
||||||
#define CG_MAGIC 0x090255
|
#define CG_MAGIC 0x090255
|
||||||
struct cg {
|
struct cg {
|
||||||
@ -448,7 +448,7 @@ struct cg {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* The following structure is defined
|
* The following structure is defined
|
||||||
* for compatibility with old file systems.
|
* for compatibility with old filesystems.
|
||||||
*/
|
*/
|
||||||
struct ocg {
|
struct ocg {
|
||||||
int32_t cg_firstfield; /* historic linked list of cyl groups */
|
int32_t cg_firstfield; /* historic linked list of cyl groups */
|
||||||
@ -472,15 +472,15 @@ struct ocg {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Turn file system block numbers into disk block addresses.
|
* Turn filesystem block numbers into disk block addresses.
|
||||||
* This maps file system blocks to device size blocks.
|
* This maps filesystem blocks to device size blocks.
|
||||||
*/
|
*/
|
||||||
#define fsbtodb(fs, b) ((b) << (fs)->fs_fsbtodb)
|
#define fsbtodb(fs, b) ((b) << (fs)->fs_fsbtodb)
|
||||||
#define dbtofsb(fs, b) ((b) >> (fs)->fs_fsbtodb)
|
#define dbtofsb(fs, b) ((b) >> (fs)->fs_fsbtodb)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cylinder group macros to locate things in cylinder groups.
|
* Cylinder group macros to locate things in cylinder groups.
|
||||||
* They calc file system addresses of cylinder group data structures.
|
* They calc filesystem addresses of cylinder group data structures.
|
||||||
*/
|
*/
|
||||||
#define cgbase(fs, c) ((ufs_daddr_t)((fs)->fs_fpg * (c)))
|
#define cgbase(fs, c) ((ufs_daddr_t)((fs)->fs_fpg * (c)))
|
||||||
#define cgdmin(fs, c) (cgstart(fs, c) + (fs)->fs_dblkno) /* 1st data */
|
#define cgdmin(fs, c) (cgstart(fs, c) + (fs)->fs_dblkno) /* 1st data */
|
||||||
@ -492,9 +492,9 @@ struct ocg {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Macros for handling inode numbers:
|
* Macros for handling inode numbers:
|
||||||
* inode number to file system block offset.
|
* inode number to filesystem block offset.
|
||||||
* inode number to cylinder group number.
|
* inode number to cylinder group number.
|
||||||
* inode number to file system block address.
|
* inode number to filesystem block address.
|
||||||
*/
|
*/
|
||||||
#define ino_to_cg(fs, x) ((x) / (fs)->fs_ipg)
|
#define ino_to_cg(fs, x) ((x) / (fs)->fs_ipg)
|
||||||
#define ino_to_fsba(fs, x) \
|
#define ino_to_fsba(fs, x) \
|
||||||
@ -503,8 +503,8 @@ struct ocg {
|
|||||||
#define ino_to_fsbo(fs, x) ((x) % INOPB(fs))
|
#define ino_to_fsbo(fs, x) ((x) % INOPB(fs))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Give cylinder group number for a file system block.
|
* Give cylinder group number for a filesystem block.
|
||||||
* Give cylinder group block number for a file system block.
|
* Give cylinder group block number for a filesystem block.
|
||||||
*/
|
*/
|
||||||
#define dtog(fs, d) ((d) / (fs)->fs_fpg)
|
#define dtog(fs, d) ((d) / (fs)->fs_fpg)
|
||||||
#define dtogd(fs, d) ((d) % (fs)->fs_fpg)
|
#define dtogd(fs, d) ((d) % (fs)->fs_fpg)
|
||||||
@ -563,7 +563,7 @@ struct ocg {
|
|||||||
((off_t)((fs)->fs_dsize) * (percentreserved) / 100))
|
((off_t)((fs)->fs_dsize) * (percentreserved) / 100))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Determining the size of a file block in the file system.
|
* Determining the size of a file block in the filesystem.
|
||||||
*/
|
*/
|
||||||
#define blksize(fs, ip, lbn) \
|
#define blksize(fs, ip, lbn) \
|
||||||
(((lbn) >= NDADDR || (ip)->i_size >= smalllblktosize(fs, (lbn) + 1)) \
|
(((lbn) >= NDADDR || (ip)->i_size >= smalllblktosize(fs, (lbn) + 1)) \
|
||||||
@ -594,7 +594,7 @@ struct ocg {
|
|||||||
#define INOPF(fs) ((fs)->fs_inopb >> (fs)->fs_fragshift)
|
#define INOPF(fs) ((fs)->fs_inopb >> (fs)->fs_fragshift)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Number of indirects in a file system block.
|
* Number of indirects in a filesystem block.
|
||||||
*/
|
*/
|
||||||
#define NINDIR(fs) ((fs)->fs_nindir)
|
#define NINDIR(fs) ((fs)->fs_nindir)
|
||||||
|
|
||||||
|
@ -22,30 +22,30 @@ Support for UFS access control lists may be enabled by adding:
|
|||||||
|
|
||||||
to your kernel configuration. As ACLs rely on the availability of extended
|
to your kernel configuration. As ACLs rely on the availability of extended
|
||||||
attributes, you must also enable support for extended attributes on the
|
attributes, you must also enable support for extended attributes on the
|
||||||
underlying file system. Currently, this requires the use of UFS EAs, which
|
underlying filesystem. Currently, this requires the use of UFS EAs, which
|
||||||
may be enabled by adding:
|
may be enabled by adding:
|
||||||
|
|
||||||
options UFS_EXTATTR
|
options UFS_EXTATTR
|
||||||
|
|
||||||
to your kernel. Because of file system mount atomicity requirements,
|
to your kernel. Because of filesystem mount atomicity requirements,
|
||||||
it is also recommended that:
|
it is also recommended that:
|
||||||
|
|
||||||
options UFS_EXTATTR_AUTOSTART
|
options UFS_EXTATTR_AUTOSTART
|
||||||
|
|
||||||
be added to the kernel so as to support the atomic enabling of the
|
be added to the kernel so as to support the atomic enabling of the
|
||||||
required extended attributes with the file system mount operation. To
|
required extended attributes with the filesystem mount operation. To
|
||||||
enable ACLs, two extended attributes must be available in the
|
enable ACLs, two extended attributes must be available in the
|
||||||
EXTATTR_NAMESPACE_SYSTEM namespace: "posix1e.acl_access", which holds
|
EXTATTR_NAMESPACE_SYSTEM namespace: "posix1e.acl_access", which holds
|
||||||
the access ACL, and "posix1e.acl_default" which holds the default ACL
|
the access ACL, and "posix1e.acl_default" which holds the default ACL
|
||||||
for directories. If you're using UFS Extended Attributes, the following
|
for directories. If you're using UFS Extended Attributes, the following
|
||||||
commands may be used to create the necessary EA backing files for
|
commands may be used to create the necessary EA backing files for
|
||||||
ACLs in the file system root of each file system. In these examples,
|
ACLs in the filesystem root of each filesystem. In these examples,
|
||||||
the root file system is used; see README.extattr for more details.
|
the root filesystem is used; see README.extattr for more details.
|
||||||
|
|
||||||
mkdir -p /.attribute/system
|
mkdir -p /.attribute/system
|
||||||
cd /.attribute/system
|
cd /.attribute/system
|
||||||
extattrctl initattr -p / 388 posix1e.acl_access
|
extattrctl initattr -p / 388 posix1e.acl_access
|
||||||
extattrctl initattr -p / 388 posix1e.acl_default
|
extattrctl initattr -p / 388 posix1e.acl_default
|
||||||
|
|
||||||
On the next mount of the root file system, the attributes will be
|
On the next mount of the root filesystem, the attributes will be
|
||||||
automatically started, and ACLs will be enabled.
|
automatically started, and ACLs will be enabled.
|
||||||
|
@ -13,7 +13,7 @@ the form name=value, where name is an nul-terminated string in the style
|
|||||||
of a filename, and value is a binary blob of zero or more bytes. The UFS
|
of a filename, and value is a binary blob of zero or more bytes. The UFS
|
||||||
extended attribute service layers support for extended attributes onto a
|
extended attribute service layers support for extended attributes onto a
|
||||||
backing file, in the style of the quota implementation, meaning that it
|
backing file, in the style of the quota implementation, meaning that it
|
||||||
requires no underlying format changes in the file system. This design
|
requires no underlying format changes in the filesystem. This design
|
||||||
choice exchanges simplicity, usability and easy deployment for
|
choice exchanges simplicity, usability and easy deployment for
|
||||||
performance. When defined, extended attribute names exist in a series of
|
performance. When defined, extended attribute names exist in a series of
|
||||||
disjoint namespaces: currently, two namespaces are defined:
|
disjoint namespaces: currently, two namespaces are defined:
|
||||||
@ -28,12 +28,12 @@ Support for UFS extended attributes may be enabled by adding:
|
|||||||
|
|
||||||
options UFS_EXTATTR
|
options UFS_EXTATTR
|
||||||
|
|
||||||
to your kernel configuration file. This allows UFS-based file systems to
|
to your kernel configuration file. This allows UFS-based filesystems to
|
||||||
support extended attributes, but requires manual administration of EAs
|
support extended attributes, but requires manual administration of EAs
|
||||||
using the extattrctl tool, including the starting of EA support for each
|
using the extattrctl tool, including the starting of EA support for each
|
||||||
file system, and the enabling of individual attributes for the file
|
filesystem, and the enabling of individual attributes for the file
|
||||||
system. The extattrctl utility may be used to initialize backing files
|
system. The extattrctl utility may be used to initialize backing files
|
||||||
before first use, to start and stop EA service on a file system, and to
|
before first use, to start and stop EA service on a filesystem, and to
|
||||||
enable and disable named attributes. The command lines for extattrctl
|
enable and disable named attributes. The command lines for extattrctl
|
||||||
take the following forms:
|
take the following forms:
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ take the following forms:
|
|||||||
extattrctl enable [path] [attrnamespace] [attrname] [attrfile]
|
extattrctl enable [path] [attrnamespace] [attrname] [attrfile]
|
||||||
extattrctl disable [path] [attrnamespace] [attrname]
|
extattrctl disable [path] [attrnamespace] [attrname]
|
||||||
|
|
||||||
In each case, [path] is used to indicate the mounted file system on which
|
In each case, [path] is used to indicate the mounted filesystem on which
|
||||||
to perform the operation. [attrnamespace] refers to the namespace in
|
to perform the operation. [attrnamespace] refers to the namespace in
|
||||||
which the attribute is being manipulated, and may be "system" or "user".
|
which the attribute is being manipulated, and may be "system" or "user".
|
||||||
The [attrname] is the attribute name to use for the operation. The
|
The [attrname] is the attribute name to use for the operation. The
|
||||||
@ -56,10 +56,10 @@ creating a sparse backing file. This prevents attribute operations from
|
|||||||
failing in low disk-space conditions (which can be important when EAs are
|
failing in low disk-space conditions (which can be important when EAs are
|
||||||
used for security purposes), but pre-allocation will consume space
|
used for security purposes), but pre-allocation will consume space
|
||||||
proportional to the product of the defined maximum attribute size and
|
proportional to the product of the defined maximum attribute size and
|
||||||
number of attributes on the specified file system.
|
number of attributes on the specified filesystem.
|
||||||
|
|
||||||
Manual configuration increases administrative overhead, but also
|
Manual configuration increases administrative overhead, but also
|
||||||
introduces the possibility of race conditions during file system mount, if
|
introduces the possibility of race conditions during filesystem mount, if
|
||||||
EAs are used to support other features, as starting the EAs manually is
|
EAs are used to support other features, as starting the EAs manually is
|
||||||
not atomic with the mount operation. To address this problem, an
|
not atomic with the mount operation. To address this problem, an
|
||||||
additional kernel option may be defined to auto-start EAs on a UFS file
|
additional kernel option may be defined to auto-start EAs on a UFS file
|
||||||
@ -68,19 +68,19 @@ system based on special directories at mount-time:
|
|||||||
options UFS_EXTATTR_AUTOSTART
|
options UFS_EXTATTR_AUTOSTART
|
||||||
|
|
||||||
If this option is defined, UFS will search for a ".attribute"
|
If this option is defined, UFS will search for a ".attribute"
|
||||||
sub-directory of the file system root during the mount operation. If it
|
sub-directory of the filesystem root during the mount operation. If it
|
||||||
is found, EA support will be started for the file system. UFS will then
|
is found, EA support will be started for the filesystem. UFS will then
|
||||||
search for "system" and "user" sub-directories of the ".attribute"
|
search for "system" and "user" sub-directories of the ".attribute"
|
||||||
directory for any potential backing files, and enable an EA for each valid
|
directory for any potential backing files, and enable an EA for each valid
|
||||||
backing file with the name of the backing file as the attribute name.
|
backing file with the name of the backing file as the attribute name.
|
||||||
For example, by creating the following tree, the two EAs,
|
For example, by creating the following tree, the two EAs,
|
||||||
posix1e.acl_access and posix1e.acl_default will be enabled in the system
|
posix1e.acl_access and posix1e.acl_default will be enabled in the system
|
||||||
namespace of the root file system, reserving space for attribute data:
|
namespace of the root filesystem, reserving space for attribute data:
|
||||||
|
|
||||||
mkdir -p /.attribute/system
|
mkdir -p /.attribute/system
|
||||||
cd /.attribute/system
|
cd /.attribute/system
|
||||||
extattrctl initattr -p / 388 posix1e.acl_access
|
extattrctl initattr -p / 388 posix1e.acl_access
|
||||||
extattrctl initattr -p / 388 posix1e.acl_default
|
extattrctl initattr -p / 388 posix1e.acl_default
|
||||||
|
|
||||||
On the next mount of the root file system, the attributes will be
|
On the next mount of the root filesystem, the attributes will be
|
||||||
automatically started.
|
automatically started.
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
#define _UFS_UFS_DINODE_H_
|
#define _UFS_UFS_DINODE_H_
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The root inode is the root of the file system. Inode 0 can't be used for
|
* The root inode is the root of the filesystem. Inode 0 can't be used for
|
||||||
* normal purposes and historically bad blocks were linked to inode 1, thus
|
* normal purposes and historically bad blocks were linked to inode 1, thus
|
||||||
* the root inode is 2. (Inode 1 is no longer used for this purpose, however
|
* the root inode is 2. (Inode 1 is no longer used for this purpose, however
|
||||||
* numerous dump tapes make this assumption, so we are stuck with it).
|
* numerous dump tapes make this assumption, so we are stuck with it).
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* Developed by the TrustedBSD Project.
|
* Developed by the TrustedBSD Project.
|
||||||
* Support for extended file system attributes.
|
* Support for extended filesystem attributes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _UFS_UFS_EXTATTR_H_
|
#ifndef _UFS_UFS_EXTATTR_H_
|
||||||
|
@ -242,7 +242,7 @@ ufs_getacl(ap)
|
|||||||
POSIX1E_ACL_ACCESS_EXTATTR_NAME, &len, (char *) ap->a_aclp,
|
POSIX1E_ACL_ACCESS_EXTATTR_NAME, &len, (char *) ap->a_aclp,
|
||||||
ap->a_td);
|
ap->a_td);
|
||||||
switch (error) {
|
switch (error) {
|
||||||
/* XXX: If ufs_getacl() should work on file systems without
|
/* XXX: If ufs_getacl() should work on filesystems without
|
||||||
* the EA configured, add case EOPNOTSUPP here. */
|
* the EA configured, add case EOPNOTSUPP here. */
|
||||||
case ENOATTR:
|
case ENOATTR:
|
||||||
/*
|
/*
|
||||||
@ -301,7 +301,7 @@ ufs_getacl(ap)
|
|||||||
* and an empty ACL, as required by POSIX.1e.
|
* and an empty ACL, as required by POSIX.1e.
|
||||||
*/
|
*/
|
||||||
switch (error) {
|
switch (error) {
|
||||||
/* XXX: If ufs_getacl() should work on file systems without
|
/* XXX: If ufs_getacl() should work on filesystems without
|
||||||
* the EA configured, add case EOPNOTSUPP here. */
|
* the EA configured, add case EOPNOTSUPP here. */
|
||||||
case ENOATTR:
|
case ENOATTR:
|
||||||
bzero(ap->a_aclp, sizeof(*ap->a_aclp));
|
bzero(ap->a_aclp, sizeof(*ap->a_aclp));
|
||||||
@ -434,7 +434,7 @@ ufs_setacl(ap)
|
|||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Map lack of attribute definition in UFS_EXTATTR into lack of
|
* Map lack of attribute definition in UFS_EXTATTR into lack of
|
||||||
* support for ACLs on the file system.
|
* support for ACLs on the filesystem.
|
||||||
*/
|
*/
|
||||||
if (error == ENOATTR)
|
if (error == ENOATTR)
|
||||||
return (EOPNOTSUPP);
|
return (EOPNOTSUPP);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user