Commit Graph

255 Commits

Author SHA1 Message Date
mrg
bcc4078e32 remove include of <vm/vm.h> 2000-06-28 02:49:15 +00:00
mycroft
4656dfd24f Add a new function to remove extra buffers when truncating a file. This is
more generic than the vinvalbuf(V_SAVEMETA) case, avoiding synchronous
operations when truncating to a non-zero length.
2000-05-28 04:13:56 +00:00
perseant
f0728fdce1 Change the sementics of the last parameter from a boolean ("waitfor") to
a set of flags ("flags").  Two flags are defined, UPDATE_WAIT and
UPDATE_DIROP.

Under the old semantics, VOP_UPDATE would block if waitfor were set,
under the assumption that directory operations should be done
synchronously.  At least LFS and FFS+softdep do not make this
assumption; FFS+softdep got around the problem by enclosing all relevant
calls to VOP_UPDATE in a "if(!DOINGSOFTDEP(vp))", while LFS simply
ignored waitfor, one of the reasons why NFS-serving an LFS filesystem
did not work properly.

Under the new semantics, the UPDATE_DIROP flag is a hint to the
fs-specific update routine that the call comes from a dirop routine, and
should be wait for, or not, accordingly.

Closes PR#8996.
2000-05-13 23:43:06 +00:00
cgd
db4b935691 passs FAT block mask as argument to MSDOSFSEOF(), so that fat.h is
more useful.
2000-05-13 06:04:41 +00:00
jdolecek
40d9f8a709 msdosfs_read(): avoid integer overflow for files > 2GB, when
difference between current read position and file size
	is bigger than 2GB

This fixes problem first noted in FreeBSD PR#15639 and sent
by Martin J. Laubach in kern/9046, though the implementation
differs a bit.
2000-04-22 22:45:37 +00:00
jdolecek
2deec9c018 add a comment regarding FATMIRROR bit usage and restructure the code
slighly to make the check more explicit
2000-04-03 18:12:12 +00:00
augustss
f0f9fcbe61 Remove register declarations. 2000-03-30 12:23:20 +00:00
simonb
f09bb94537 Delete redunctant decls of msdosfs_{mount,start,unmount,root,quotactl,
statfs,sync,fhtovp,checkexp,vptofh}() - they're local to msdosfs_vfsops.c.

XXX: These should be static in msdosfs_vfsops.c - another day...
2000-03-30 02:29:46 +00:00
simonb
f80823211a Delete redundant decl of rootvp - it's in <sys/systm.h>. 2000-03-30 02:27:35 +00:00
jdolecek
07fd899a7f Add new CLUST_END and use it as parameter to pcbmap() when searching
for end cluster, instead of explicitly passing 0xffff. This fixes potential
problem for FAT32, where cluster number may be legally bigger than 0xffff.

Also change clusteralloc() so that fillwith is not explicitly passed by caller
anymore (there is no need to use anything other than CLUST_EOFE).

Reviewed by: Wolfgang Solfrank
2000-03-27 17:40:26 +00:00
jdolecek
b68ecd89bc one more 2000-03-27 10:15:13 +00:00
jdolecek
6b551ba751 one less - async mode support implemented 2000-03-27 09:45:38 +00:00
jdolecek
1d246008e0 Support async option by using delayed writes for metadata when mounted
with async. This increases the speed of my extract-archive test by about
20% on floppy, 10% on ZIP. "You've got the rope."
2000-03-27 09:44:45 +00:00
jdolecek
725f8327fd remove some debugging cruft accidentally left in 2000-03-24 14:37:46 +00:00
jdolecek
82d947ce4d createde(): if an error occurs, make sure to mark all modified directory
slots as deleted - otherwise we would leave bogus slots in
2000-03-22 14:56:56 +00:00
jdolecek
1892cb67c4 cosmetic changes - prettify debug printf's, reformat comments to fit 80 columns,
label:; --> label:
msdosfs_lookup(): in notfound case, update slot* only when it's needed
2000-03-22 14:49:32 +00:00
jdolecek
e2698cd72a Fix definition of MSDOSFSEOF(), which got broken in rev. 1.13.
It's shape is a bit different now than it was in rev 1.12, but is functionally
equivalent. Also add a comment explaining it's sense.

This fixes breakage reported after LP64 fixes in kern/8037, and
also kern/9116 and kern/9206.

Rewieved by: Wolfgang Solfrank, Chris G. Demetriou
2000-03-22 14:33:25 +00:00
jdolecek
2bbd0a8511 one more 2000-03-20 07:30:14 +00:00
jdolecek
8b4b779fa9 couple of remarks of issues I discovered when debugging some MSDOSFS problem 2000-03-19 10:37:04 +00:00
jdolecek
89015c4648 Add new VFS op routine - vfs_done and call it on filesystem detach
in vfs_detach(). vfs_done may free global filesystem's resources,
typically those allocated in respective filesystem's init function.
Needed so those filesystems which went in via LKM have a chance to
clean after themselves before unloading. This fixes random panics
when LKM for filesystem using pools was loaded and unloaded several
times.

For each leaf filesystem, add appropriate vfs_done routine.
2000-03-16 18:08:17 +00:00
soren
95054da1a1 Fix doubled 'the's in comments. 2000-03-13 23:52:25 +00:00
jdolecek
d28bd11715 unix2dostime(), dos2unixtime(): use value of rtc_offset to shift the time value
accordingly

Patch sent by Naoki FUKAUMI in kern/9497.
2000-02-28 10:43:08 +00:00
sommerfeld
3081e1deb7 Fix bogon discovered with LOCKDEBUG:
In msdosfs_hashget, final simple_lock() should have been simple_unlock().
2000-02-26 17:25:17 +00:00
jdolecek
88a4a819b8 When renaming a file, make sure apporpriate vnode cache entry is
purged if a file system entry is removed. Fixes part of kern/8037.

Reviewed by: Wolfgang Solfrank
Tested by: jdolecek
2000-02-01 21:33:57 +00:00
jdolecek
c4d3702f61 msdosfs_lookup(): reformat some debug printf slighly to make them more readable 2000-02-01 13:59:34 +00:00
jdolecek
d69188d4e8 msdosfs_inactive(): correct debug printf to only claim MNT_RDONLY is set
if it's so
2000-02-01 13:55:23 +00:00
jdolecek
0e45514ac9 make compilable with MSDOSFS_DEBUG (adapt to usecount & writecount size change) 2000-02-01 10:33:18 +00:00
fvdl
0b1963121a Add Kirk McKusick's soft updates code to the trunk. Not enabled by
default, as the copyright on the main file (ffs_softdep.c) is such
that is has been put into gnusrc. options SOFTDEP will pull this
in. This code also contains the trickle syncer.

Bump version number to 1.4O
1999-11-15 18:49:07 +00:00
jdolecek
f759642ae2 Fix a problem in previous: we can't blindly assume that we have
wincnt entries available at the offset the file has been found. If the dos
directory entry is not preceded by appropriate number of long name
entries (happens e.g. when the filesystem is corrupted, or when
the filename complies to DOS rules and doesn't use any long name entry),
we would overwrite random directory entries.

There are still some problems, the whole thing has to be revisited and solved
right.
1999-11-05 21:33:21 +00:00
jdolecek
ead528ba12 msdosfs_lookup(): initialize denode's de_fndcnt properly even for
"found" case. This information is important for msdosfs_rename(),
when the target filename is "long" and the file exists -
it gets unlinked and the entries are re-used, but if de_fndcnt was
left zero, createde() thinks there are no entries to store the
long filename of moved file and long filename is "lost".

Fixes PR #5468 by Dave Huang <khym@bga.com>.

Tested by: jdolecek
Reviewed by: Wolfgang Solfrank
1999-11-05 16:49:15 +00:00
jdolecek
fe54414362 msdosfs_readdir(): set iovec offset correctly so that some long filename
entries won't be ignored when contents of the directory don't
fit in user buffer all at once.

Fixes kern/4492 by Rick Byers <rickb@iaw.on.ca>.
1999-11-04 23:08:57 +00:00
enami
fee96e1746 Check if the type of device node isn't VBAD before touching v_specinfo. If
the device vnode is revoked, the field is NULL and touching it causes null
pointer derefercence.
1999-10-20 14:32:09 +00:00
wrstuden
e682a080e9 In spec_close(), if we're not doing a non-blocking close and VXLOCK is
not set, unlock the vnode before calling the device's close routine and
relock it after it returns. tty close routines will sleep waiting for
buffers to drain, which won't happen often times as the other side needs
to grab the vnode lock first.

Make all unmount routines lock the device vnode before calling VOP_CLOSE().
1999-10-16 23:53:26 +00:00
jdolecek
7dfaa17700 Adapt to cache_lookup() changes.
Tested by: jdolecek
Rewieved by: wrstuden
1999-09-05 14:26:32 +00:00
itohy
5de5ad21a2 Revoke revoke(2) bug. 1999-08-19 03:42:23 +00:00
jdolecek
6d72115a23 msdosfs_access(): initialize mode to ap->a_mode instead of 0. Fixes PR 7619.
The bug has been accidentaly introduced in revision 1.56.
msdosfs_setattr(): do ROFS checks as appropriate; while here optimize
	to only call deupdat() if there actually has been any change

Tested by: jdolecek
Rewieved by: wrstuden
1999-08-16 07:43:12 +00:00
wrstuden
169a5eda2d Pull in changes which parallel rev 1.22 -> 1.25 of ufs_lookup(). 1999-08-04 18:40:47 +00:00
wrstuden
0833711f66 Modify msdosfs_getattr() so that it will report archived files (ATTR_ARCHIVE
cleared) as mode S_ARCH1 in addition to having flags SF_ARCHIVED.
1999-08-03 22:02:21 +00:00
wrstuden
3bf14d81e9 Add support for fcntl(2) to generate VOP_FCNTL calls. Any fcntl
call with F_FSCTL set and F_SETFL calls generate calls to a new
fileop fo_fcntl. Add genfs_fcntl() and soo_fcntl() which return 0
for F_SETFL and EOPNOTSUPP otherwise. Have all leaf filesystems
use genfs_fcntl().

Reviewed by: thorpej
Tested by: wrstuden
1999-08-03 20:19:16 +00:00
cgd
a0af6a8443 fix msdosfs export problems which occur on LP64 systems, which were
discovered while investigating PR#8037.
1999-07-27 05:39:10 +00:00
cgd
c1a83a09b0 fix LP64 problems which were the cause of PR#8037. 1999-07-27 05:38:02 +00:00
cgd
16db153ba2 fix MSDOSFS_DEBUG printf arg type 1999-07-26 00:14:27 +00:00
wrstuden
976aedb7ac Adjust mountroot routines to vrele rootvp in case of mount error. Closes
PR 7977 by Neil Carson, <neil@brini.com>.
1999-07-17 01:08:28 +00:00
wrstuden
379a26972f Modify file systems to deal with struct lock in struct vnode. All leaf
fs's other than nfs use genfs_lock() for locking.

Modify lookup routines to set PDIRUNLOCK when they unlock the parrent.
1999-07-08 01:05:58 +00:00
tron
a602deb000 Silently ignore attributes modifications on directories. Fixes
PR kern/7630 by Markus Kurek.
1999-05-24 23:01:13 +00:00
abs
609ddc8c40 Remove spurious call to de_bn2cn(). A "cluster" in MSDOSFS is already
equivalent to a "block" is in FFS. Fixes vnds on MSDOSFS, and should
eliminate a 'getblk: block size invariant failed' panic.
Directly from PR7380 <elric@imrryr.org>.
1999-04-21 17:13:22 +00:00
tron
9020887854 Fix for handling of 8+3 filenames with blanks supplied by Bill Sommerfeld
in PR kern/7229.
1999-03-28 11:05:43 +00:00
mrg
d2397ac5f7 completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
1999-03-24 05:50:49 +00:00
kleink
9ee75a4fcc Add _PC_FILESIZEBITS to pathconf vnop. 1999-03-22 19:21:07 +00:00
tron
c8126918cb Fix too tight check for maximum supported partition size. Now partitions
upto 128GB (instead of 4GB) are allowed.
1999-03-07 13:57:20 +00:00
mycroft
b174019ccc Pass null pointers to VOP_UPDATE rather than having all the callers fetch the
current time themselves.
1999-03-05 21:09:48 +00:00
mycroft
86ed73efb4 Permit the access and modify time pointers passed to VOP_UPDATE to be null,
meaning the current time.
1999-03-05 20:47:06 +00:00
wrstuden
862a56e88b Modify vfsops to seperate vfs_fhtovp() into two routines. vfs_fhtovp() now
only handles the file handle to vnode conversion, and a new call,
vfs_checkexp(), performs the export verification.
1999-02-26 23:44:43 +00:00
leo
8581f9db0d Implement short-term solution for PR#6576 1999-01-07 15:03:36 +00:00
ws
c6b24f68f0 Set the tooffset after renaming even if in root directory. 1998-09-21 15:17:42 +00:00
thorpej
ed45bc1661 Use the pool allocator and the "nointr" pool page allocator for msdosfs
denodes.
1998-09-01 04:04:10 +00:00
thorpej
7cc905f5c8 Add some braces to make egcs happy (ambiguous else warning). 1998-08-18 06:27:01 +00:00
matthias
574106c52b create miscfs/genfs/genfs_vnops.c:genfs_enoioctl and make all the other
filesystems use it instead of a private version.
1998-08-10 08:11:10 +00:00
perry
4522c799a1 bzero->memset, bcopy->memcpy, bcmp->memcmp 1998-08-09 20:51:08 +00:00
kleink
12a866151b Recognize _PC_SYNC_IO. 1998-08-03 14:19:57 +00:00
kleink
933111f98f Implement support for IEEE Std 1003.1b-1993 synchronous I/O:
* in the read vnode operator, check for IO_SYNC being set in the ioflag and
  synchronously update the file's meta-data if appropriate.
* in the write vnode operator, update the appropriate checks for IO_SYNC being
  set in the ioflag to reflect that IO_DSYNC is now inclusive-or'ed into
  IO_SYNC, and require all IO_SYNC bits to be set for operations defined by
  synchronized I/O file integrity completion but not by synchronized I/O data
  integrity completion.
1998-08-02 18:57:23 +00:00
jonathan
d275e56dee * defopt COMPAT_{09,10,11,12,13} and COMPAT_NOMID.
TODO: revisit interaction between native compat and emul compat usage.
1998-07-05 08:49:30 +00:00
thorpej
0f66e53c03 Use genfs_lease_check() 1998-06-25 22:20:39 +00:00
cgd
651b44e211 Rework the way kernel include files are installed. In the new method,
as with user-land programs, include files are installed by each directory
in the tree that has includes to install.  (This allows more flexibility
as to what gets installed, makes 'partial installs' easier, and gives us
more options as to which machines' includes get installed at any given
time.)  The old SYS_INCLUDES={symlinks,copies} behaviours are _both_
still supported, though at least one bug in the 'symlinks' case is
fixed by this change.  Include files can't be build before installation,
so directories that have includes as targets (e.g. dev/pci) have to move
those targets into a different Makefile.
1998-06-12 23:22:30 +00:00
scottr
7171cca4b8 Protect various config(8)-generated files from inclusion while
building LKMs.  Fixes PR 5557.
1998-06-09 07:46:31 +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
thorpej
c4fe0d9f54 Name a simple lock consistently. 1998-05-20 01:45:15 +00:00
thorpej
dc799409ce Fix missing variable increment, which caused writing FAT32 filesystems
to hang.  From Masaru Oki <oki@yk.rim.or.jp>.
1998-05-02 01:47:12 +00:00
fvdl
ebe551c3b3 Guess the number of needed cookies in a better way, and check for
overflow of the cookie array. Pointed out by Wolfgang Solfrank.
1998-04-21 09:37:23 +00:00
ws
761ce530bb unlock the lock we previously locked, not another one! 1998-04-20 16:48:05 +00:00
fvdl
e5bc90f40c Merge with Lite2 + local changes 1998-03-01 02:20:01 +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
mrg
dec29037df make these compile. 1998-02-12 10:12:55 +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
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
ws
4e4c231c15 PR4393: additional fixes of format strings for unsigned parameters
PR4394: be more consistent with other MSDOSFS_DEBUG messages
PR4395: fix generation numbers as in the PR, and fix short name for e.g. x.aaaa
PR4396: easier fix then given in the PR
All PRs by Rick Byers.  Thanks Rick for pointing these out
1997-11-17 15:36:17 +00:00
christos
ceedd58536 PR/4394: Rick Byers: MSDOSFS_DEBUG kernel panics during mount. 1997-11-16 21:50:10 +00:00
christos
96a8d9af7b PR/4393: Rick Byers: MSDOSFS_DEBUG kernel does not compile. 1997-11-16 21:47:27 +00:00
ws
f1be2b6fac Fix lossage with diroffset handling in root dir 1997-11-08 19:18:57 +00:00
ws
f92f4e8ac3 Correct handling of empty files (fixes PR4285 by (and tested by) Dave Huang) 1997-10-18 22:12:27 +00:00
briggs
aead314eea Use bcmp instead of memcmp since we haven't switched to using memcmp elsewhere
in the kernel.
1997-10-18 02:54:57 +00:00
ws
9c1b7cfa37 Add support for FAT32
Don't panic if renaming a file to itself
Don't try to keep access times, there is no place for them
While being here, fix some minor bugs with VFAT handling
1997-10-17 11:23:29 +00:00
christos
7a5c72bb88 Add missing cast to nlink_t 1997-10-16 23:58:05 +00:00
fvdl
fd5433c6bc Bump last argument to VOP_READDIR to off_t (from u_long). 1997-10-10 01:57:31 +00:00
christos
7eaff8a411 Remove bogus `locking by process 0' diagnostic; from Charles. 1997-07-30 03:47:12 +00:00
christos
9c227f4705 Add msdosfs_mountroot; we still have a problem with locking by proc 0,
but it does not seem to affect things.
1997-07-28 23:41:04 +00:00
fvdl
3d85c0c28a Return EPERM for an attempt to remove a directory with VOP_REMOVE. 1997-06-30 20:20:31 +00:00
christos
b59135a6fb Avoid panic triggered by rename("foo/", "bar/..") (From Mycroft) 1997-06-26 22:23:17 +00:00
pk
80bb266e0e NULL => 0 (Arne Juul; PR#3629) 1997-05-17 20:31:15 +00:00
mycroft
f14deb8a73 Need stat.h. 1997-05-08 16:53:06 +00:00
mycroft
5bd3538a41 Fix typo. 1997-05-08 16:43: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
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
perry
b89a3425b7 Eliminate obsolete TIMEZONE and DST options.
Eliminate obsolete global kernel variable "struct timezone tz"
Add RTC_OFFSET option
Add global kernel variable rtc_offset, which is initialized by
RTC_OFFSET at kernel compile time.
on i386, x68k, mac68k, pc532 and arm32, RTC_OFFSET indicates how many
minutes west (east) of GMT the hardware RTC runs. Defaults to 0.
Places where tz variable was used to indicate this in the past have
been replaced with rtc_offset.
Add sysctl interface to rtc_offset.
Kill obsolete DST_* macros in sys/time.h
gettimeofday now always returns zeroed timezone if zone is requested.
settimeofday now ignores and logs attempts to set non-existant kernel
timezone.
1997-01-15 01:28:28 +00:00
cgd
145233fa6e 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:31:41 +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
ws
976b43fd61 Fix panic on mkdir.
Thanks to Dave Huang for finding the bug.
1996-11-08 15:51:49 +00:00