Commit Graph

251 Commits

Author SHA1 Message Date
mikel c1f8034333 ffs_ -> ext2fs_ in warning; art@openbsd.org 1998-06-09 06:33:22 +00:00
ragge 1a66918fc0 Wrong include file order; caused compile error on vax. 1998-06-08 17:59:08 +00:00
scottr d48f258f90 Use the newly-defined opt_quota.h. 1998-06-08 04:27:50 +00:00
kleink 382743ada3 Convert fsync vnode operator implementations and usage from the old `waitfor'
argument and MNT_WAIT/MNT_NOWAIT to `flags' and FSYNC_WAIT.
1998-06-05 19:53:00 +00:00
kleink d4a8052f98 Fix some arithmetics lossage on typeless pointers. 1998-05-08 18:31:13 +00:00
ross ac5774c288 Fix a 64-bit pointer/int warning. 1998-03-19 03:42:35 +00:00
bouyer 091dafd39f Add support for reading/writing FFS in non-native byte order, conditioned
to "options FFS_EI". The superblock and inodes (without blk addr) are
byteswapped at disk read/write time, other metadatas are byteswapped
when used (as they are acceeded directly in the buffer cache).
This required the addition of a "um_flags" field to struct ufsmount.
ffs_bswap.c contains superblock and inode byteswap routines also used
by userland utilities.
1998-03-18 15:57:26 +00:00
kleink 5cf59ee9ad Move the permission check in vfs_syscalls.c::change_owner() back to
ufs_chown() again - the facility required in this context would be a
filesystem-specific super-user determination, which is not available yet.
1998-03-10 11:56:40 +00:00
cgd c35a34ab68 ext2fs_checkoverlap is (or at least seems) unused, and its prototype is
#ifdef DIAGNOSTIC.  Make the function #ifdef DIAGNOSTIC, as well, so we
don't get a warning about the function declaration not being a prototype.
1998-03-04 06:50:25 +00:00
drochner 22dbd3c3da Don't cast the quad_t file size to u_long, this can cause overflows. 1998-03-03 09:02:51 +00:00
fvdl 221505c12f Make this compile again with UVM 1998-03-03 01:49:21 +00:00
fvdl e5209f31b8 A cookie should point to the *next* entry. Grrr. 1998-03-02 22:26:14 +00:00
bouyer 6d339338e6 Close kern/5077: When DIAGNOSTIC is defined, don't complain about
bad magic numbers at a mount attempt. A message is still printed when the
magic number is OK, but the version number or the block size is bad.
Patch from Soren S. Jorvang, but different from the one in the PR.
1998-03-02 16:13:42 +00:00
fvdl d201db498e Remove accidentally enabled lfs_mountroot from vfsops struct. 1998-03-01 22:16:39 +00:00
fvdl 8c7c2ea123 Remove accidentally enabled mfs_mountroot from vfsops struct. 1998-03-01 22:16:01 +00:00
fvdl 7ba6a2daac Remove extraneous files from Lite2 merge. 1998-03-01 13:45:28 +00:00
fvdl e5bc90f40c Merge with Lite2 + local changes 1998-03-01 02:20:01 +00:00
fvdl e8d05f0741 Import 4.4BSD-Lite2 1998-03-01 02:12:49 +00:00
fvdl b50e39fa45 Import 4.4BSD-Lite for reference 1998-03-01 02:09:33 +00:00
thorpej 95e2e3b91b Include the LFS option header. 1998-02-19 00:54:39 +00:00
drochner ba81b6f6df add missing vfsops element 1998-02-18 17:02:20 +00:00
thorpej b5bf2ed6d0 Place a pointer to an array of our vnodeopv_desc *'s in our vfsops
structure, for use by vfs_attach().
1998-02-18 07:05:47 +00:00
kleink e34b0a84a9 Move some permission-checking code for file owner/group changes up to
vfs_syscalls.c::change_owner().  Also, always update the inode's change time
if the operation succeeds.
1998-02-14 19:56:30 +00:00
mrg d90485202c - add defopt's for UVM, UVMHIST and PMAP_NEW.
- remove unnecessary UVMHIST_DECL's.
1998-02-10 14:08:44 +00:00
chs abf50cf8c3 add UVM stuff. 1998-02-07 17:28:18 +00:00
chs f64abc7b4c add flags arg to hashinit(), to pass to malloc(). 1998-02-07 02:44:44 +00:00
mrg 1a8c7604f4 initial import of the new virtual memory system, UVM, into -current.
UVM was written by chuck cranor <chuck@maria.wustl.edu>, with some
minor portions derived from the old Mach code.  i provided some help
getting swap and paging working, and other bug fixes/ideas.  chuck
silvers <chuq@chuq.com> also provided some other fixes.

this is the rest of the MI portion changes.

this will be KNF'd shortly.  :-)
1998-02-05 07:59:28 +00:00
thorpej df7ad322f2 Nuke spurious semicolon, from Konrad Schroder <perseant@hhhh.org>. 1998-01-13 03:30:39 +00:00
bouyer 459fd0e350 When allocating an inode with dtime set, also bzero e2di_blocks[]. 1997-10-27 14:43:41 +00:00
bouyer 89f2b833f4 Uses ext2fs_vinit not ufs_vinit.
In ext2fs, an inode is deleted either when mode == 0 or dtime != 0. If
  dtime != 0, reset others fields before using the inode, or we could end
  up with the wrong v_op in ext2fs_vinit.
While I'm there, kill a unused variable in ext2fs_readwrite
1997-10-23 11:41:16 +00:00
christos e12c721705 Add missing cast for nlink_t 1997-10-17 02:05:34 +00:00
mjacob 949982f2a4 In calculating the f_bavail field, don't take 32 bit quantities and
multiply them by 90 (to be divided by 100) and expect them to be sane
for very large values (I was getting a negative 'avail' count).
1997-10-16 18:29:11 +00:00
enami 499f056402 Backout last change for ufs_readlink. The permission check is now done
in vfs layer.
1997-10-11 00:10:57 +00:00
bouyer f5d86626ec Update for 64 bits directory cookies. 1997-10-10 10:00:12 +00:00
fvdl 6a0575f33e Last arg to VOP_READDIR became off_t. 1997-10-10 02:13:42 +00:00
bouyer 6ab3092b11 Add byte-swapping functions (bswap16, bswap32, bswap64) to libkern.
Only assembly version for i386 bswap16 and bswap32 for now (bswap64 uses
bswap32). Contribution of assembly versions of these are welcome.
Add byte-swapping of ext2fs metadata for big-endian systems.
Tested on i386 and sparc.
1997-10-09 15:42:19 +00:00
enami 164890a9fc In the function ufs_readlink(), check read permission before
reading link.
1997-10-03 16:45:49 +00:00
lukem 319d918511 prototype lfs_cksum ifndef KERNEL 1997-09-15 06:44:48 +00:00
bouyer 09cf6dacdf Fix bad cut&paste from ufs code: we can't align uio_resid to a directory
block size boundary, because size of the returned dir entry may be bigger than
the one read.
1997-08-04 09:11:00 +00:00
bouyer 3bf1a6ad00 ufs_getlbns needs an array of NIADDR+1 struct indir's, and not NIADDR.
This fixes a panic due to stack corruption when reading larges files.
1997-07-24 17:18:03 +00:00
fvdl e351013e56 Fix messed up RCS Id. 1997-07-22 14:36:31 +00:00
fvdl f2377e977b When allocating a new block, store the result obtained through counting
indirect blocks in a 64 bit integer, to prevent overflows when computing
NINDIR^3
1997-07-17 23:40:07 +00:00
bouyer 1d5e0e6e91 Add a lock locking around inode hashing. 1997-07-17 16:56:44 +00:00
fvdl 286a3374b9 Give the hash lock a better name, it's not just ffs that uses it. 1997-07-15 19:08:18 +00:00
fvdl 5d96e77ef6 Get locking around inode hashing right. 1997-07-07 23:37:36 +00:00
fvdl acffafa288 Oops, I messed up the lock. Reverting it until I have time to fix it,
to avoid people getting trouble after the supscan hits.
1997-07-07 11:47:06 +00:00
fvdl b362aa16be Put lock around inode hashing, because getnewvnode or MALLOC might block,
creating race conditions.
1997-07-06 12:43:43 +00:00
drochner 8c0a9bab00 Don't cast 64bit (off_t) file sizes to vm_offset_t (32bit on many
architectures), truncate them intelligently instead.
The truncation is done centralized in vnode_pager.c.
This prevents from wrap-over effects when parts of large (>2^32 byte) files
are mmapped.
Don't allow to mmap above the numerical range of vm_offset_t.
This is considered a temporary solution until the vm system handles the
object sizes/offsets more cleanly.
1997-07-04 20:22:09 +00:00
bouyer 77d5755416 Sync with ufs/ufs:
Avoid panic triggered by rename("foo/", "bar/..") (From Mycroft, via christos)
1997-07-01 07:34:03 +00:00
fvdl 9b30a6a4e5 Return EPERM for an attempt to remove a directory with VOP_REMOVE, not EISDIR. 1997-06-30 20:16:31 +00:00
fvdl 822371a987 Return EPERM, not EISDIR for an attempt to remove a directory. 1997-06-30 20:13:44 +00:00
christos b59135a6fb Avoid panic triggered by rename("foo/", "bar/..") (From Mycroft) 1997-06-26 22:23:17 +00:00
pk 2e8a55e122 TIMESPEC_TO_TIMEVAL => TIMEVAL_TO_TIMESPEC 1997-06-13 08:59:51 +00:00
mrg 295af85e9e remove swap configuration. 1997-06-12 17:12:17 +00:00
bouyer 76c414a957 Add support for ext2fs, this needed a few modifications to ufs/ufs/inode.h:
- added an "union inode_ext" to struct inode, for the per-fs extentions.
  For now only ext2fs uses it.
- i_din is now an union:
	union {
		struct  dinode ffs_din; /* 128 bytes of the on-disk dinode. */
		struct ext2fs_dinode e2fs_din; /* 128 bytes of the on-disk dinode. */
	} i_din
  Added a lot of #define i_ffs_* and i_e2fs_* to access the fields.
- Added two macros: FFS_ITIMES and EXT2FS_ITIMES. ITIMES calls the rigth
  macro, depending on the time of the inode. ITIMES is used where necessary,
  FFS_ITIMES and EXT2FS_ITIMES in other places.
1997-06-11 10:09:37 +00:00
bouyer 9e3c291da4 The ext2fs layer, based on the ffs/ufs one. Uses a few functions from
sys/ufs/ufs/
1997-06-11 09:33:37 +00:00
kleink 9c03d5cf55 When doing a CREATE, RENAME or DELETE w/ DOWHITEOUT and ISWHITEOUT lookup on a
non-existent file and the end of the pathname is reached, and this `current'
directory resides on a read-only mounted file system, don't update/prepare
its inode for the actual operation but return EROFS.
1997-05-12 19:04:16 +00:00
mycroft e3f99a9397 Pass the vnode type to vaccess(), and use it when checking VEXEC. Make sure
that the mode bits passed to vaccess() and returned by foo_getattr() contain
only permission bits.
1997-05-08 16:19:43 +00:00
mycroft 837a72363d VEXEC -> VLOOKUP, as appropriate. 1997-05-08 10:57:17 +00:00
mikel 55f53d7fdb return EPERM from ufs_setattr() if an attempt is made by non-superuser
to change superuser-only file flags; fixes PR kern/3491.
1997-04-23 05:47:54 +00:00
kleink 9c16cd8a46 Implement a POSIX compliant genfs VOP_SEEK() and use it in the appropriate
places; by Chris G. Demetriou and myself.
1997-04-11 21:52:00 +00:00
kleink 2cfcc6c893 Return immediately upon zero byte reads, as updating st_atime in this case
violates POSIX.1 read() semantics.
1997-04-04 14:21:32 +00:00
mikel b81091e992 POSIX.1 specifies that a failed link() to a directory must return EPERM,
and EMLINK was not documented; from Klaus Klein in PR standards/3397.
Also documented EOPNOTSUPP for filesystems that don't support hard links.
1997-03-27 07:30:25 +00:00
mycroft 66c4e32b11 Just increment the generation count. Using the time is bogus and defeats
fsirand(8).
1997-03-10 06:18:28 +00:00
fvdl 8b21bbed9b Implement similar fix as in the NQNFS fix from BSDI, to avoid race conditions
when unmounting. It cleans up the loop a bit too.
1997-02-22 03:25:05 +00:00
thorpej 727078d31e - Add ffs_mountroot to ffs_vfsops.
- Only attempt to mount a root FFS on a DV_DISK class device.
1997-01-31 03:05:31 +00:00
tls d0c43309b5 add support for noatime mount flag 1997-01-30 09:52:26 +00:00
tls 0024ac02cf Correct old inode flag names in comment, and reformat for 80 character screen 1997-01-27 10:30:14 +00:00
cgd 90688fce27 Change the second and third args to struct vfsops' (*vfs_mount)() to
'const char *', and 'void *', respectively.  The second arg is taken directly
from user arguments, and is const there, so must be const in the prototypes
and functions.  The third arg is also taken directly from user arguments.
It doesn't have to be changed, but since it's cleaner to keep the type
the same as the user arg's type, and I'm already making the 'const char *'
change...
1996-12-22 10:10:12 +00:00
is ebe1c82eda Make the struct lfs 512 bytes long on 32bit machines whose compiler doesn't
align 32bit integers. Use explicit sized typing at some other places.

XXX This still won't fix lfs for 64bit machines, as we have some
assumptions about sizeof(pointer)=sizeof(u_int32_t) in here, and (if I
looked right) a misaligned u_int64_t. The right fix (to cite cgd) will
be to seperate on-disk-representation from in-core, but I don't have
the time (at the moment) to do this.
1996-12-05 19:01:46 +00:00
cgd f6e4567c57 cast int64_t-sized types to "long long" before printing them with %qd.
gcc thinks that the 'q' modifier describes a "long long", and so -Wformat
whines when printing with 'q' on the alpha, since int64_t-sized types are
done with variations on "long" rather than "long long".
1996-11-15 23:11:56 +00:00
thorpej 34e2fb3bb6 Performance enhancement from Kirk McKusick <mckusick@McKusick.COM>:
When freeing an indirect block, there is no need to write it (synchronously,
no less!) before tossing it.
1996-11-06 03:02:59 +00:00
christos 90c7de0919 revert previous kprintf changes 1996-10-12 21:58:44 +00:00
christos de1b2b437e printf -> kprintf, sprintf -> ksprintf 1996-10-10 17:16:17 +00:00
christos 2dff852a85 Add prototype for quotactl. 1996-09-28 19:07:06 +00:00
christos 9cdf304505 Make this compile cleanly from userland (fsck_ffs). 1996-09-20 22:14:59 +00:00
mycroft 2bc736661a Implement poll(2). 1996-09-07 12:40:22 +00:00
mycroft c52352c819 Add a set of generic file system operations that most file systems use.
Also, fix some time stamp bogosities.
1996-09-01 23:47:48 +00:00
mycroft 261382c331 Change VOP_UPDATE() semantics:
* Make 2nd and 3rd args timespecs, not timevals.
* Consistently pass a Boolean as the 4th arg (except in LFS).
Also, fix ffs_update() and lfs_update() to actually change the nsec fields.
1996-05-11 18:26:27 +00:00
pk 44af669e3d Appease gcc: unused variables if !QUOTA 1996-03-25 12:53:35 +00:00
christos 48fda0b4ca Fix printf format strings 1996-03-17 02:16:18 +00:00
scottr c9f7e94a5c Remove hack to work around <sys/dirent.h> DIRSIZ conflict 1996-03-09 19:42:41 +00:00
gwr 331e377b30 Need to #undef DIRSIZ from <sys/dirent.h> before we redefine it. 1996-02-29 20:09:56 +00:00
cgd 9c95634273 in mfs_print: mfs_baseoff is a pointer, should be printed as %p, and
should NOT be cast to unsigned int.
1996-02-21 00:06:45 +00:00
christos 7e24291099 Protect include in lfs_cksum.c so that it can be used by userland programs. 1996-02-16 02:22:05 +00:00
christos e2c2c98181 di_size is a quad and needs %qu not %lu 1996-02-12 22:08:47 +00:00
christos 11e9f2ce94 Add fwd declaration for struct ucred 1996-02-12 15:20:12 +00:00
christos fb9b45b582 put back traditional symlink change that somehow got lost. 1996-02-11 02:06:13 +00:00
christos 9fe380e1ab cross that t and dot that i. Typo in last commit. 1996-02-09 23:30:19 +00:00
christos 273fa18bff ufs prototype changes 1996-02-09 22:36:00 +00:00
christos 573481f5fc mfs prototypes 1996-02-09 22:31:27 +00:00
christos 7bd9e243f3 lfs prototypes 1996-02-09 22:28:45 +00:00
christos ec3d880232 ffs prototypes 1996-02-09 22:22:18 +00:00
mycroft 53fccab940 Fix vop_link, vop_symlink, and vop_remove semantics in several ways:
* Change the argument names to vop_link so they actually make sense.
* Implement vop_link and vop_symlink for all file systems, so they do proper
  cleanup.
* Require the file system to decide whether or not linking and unlinking of
  directories is allowed, and disable it for all current file systems.
1996-02-09 14:45:36 +00:00
jtc b73662fea2 Revert to sane symlink semantics. This is something we should have done
long ago.  Fixes many PRs.
1996-02-07 17:01:25 +00:00
jtc dd05bd5124 Rename struct timespec fields to conform to POSIX.1b 1996-02-01 00:04:52 +00:00
cgd b567511c78 Fix from Lite-2: when reloading the file system, save fs_maxcluster and
the old summary structure pointers, and recalculate cluster per cyl. grp.
information.
1995-12-19 23:27:53 +00:00
mycroft 7edc899fdd ffs -> ufs 1995-11-11 22:00:15 +00:00
mycroft 1dde00e8a4 Correct a comment regarding cookies, from Greg Hudson. 1995-10-09 11:19:32 +00:00
thorpej 1955514b6c Make system calls conform to a standard prototype and bring those
prototypes into scope.
1995-09-21 23:39:20 +00:00