Commit Graph

245 Commits

Author SHA1 Message Date
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
cgd ce53653783 make the namei struct members ni_dirp and ni_next, and the componentname
struct member cn_nameptr 'const', since they should never be used to
modify the path name.  (Only the pathname buffer, cn_pnbuf, should be
modified.)  Propagate the const poisoning to code that uses the namei
and componentname structs.
1996-10-25 23:13:58 +00:00
christos 17f5b2a175 backout previous kprintf changes 1996-10-13 04:10:34 +00:00
christos 60d201973e printf -> kprintf, sprintf -> ksprintf 1996-10-10 22:46:11 +00:00
ws 14993c9720 "'" and "^" are allowed in short fat filenames,
"," and ";" are not.
1996-09-20 16:45:45 +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 3d7adb4768 sys/dir.h -> sys/dirent.h 1996-08-10 08:48:24 +00:00
ws 7d29fb5aaa Allow renaming when destination exists.
Fixes PR#2629
1996-07-15 19:12:13 +00:00
ws d1a21707db Free allocated space in directory after error
(While this wasn't technically speaking a bug, it unneccessarily wasted space)
1996-05-25 17:50:41 +00:00
thorpej c761c7d3ca Shut up whining compiler so this will build on a SPARC again (-Wall). 1996-03-20 00:45:40 +00:00