Commit Graph

368 Commits

Author SHA1 Message Date
yamt
221616873d merge yamt-readahead branch. 2005-11-29 22:52:02 +00:00
dan
3a01b7a8ba take into account memory used for file cache pages, and wired pages,
when calculating potential free space
2005-11-28 22:28:36 +00:00
dan
cbba09ed4d simplify calculation of free swap space using uvm-exported statistics,
with thanks to yamt@ for useful hints.
2005-11-28 22:06:20 +00:00
yamt
6a17dd42f4 - ignore truncation for VCHR/VBLK/VFIFO as it used to be
before yamt-vop merge.  PR/32049 from Atsushi Onoe.
- reject setattr which attempts to change size of VLNK/VSOCK.
2005-11-11 15:50:57 +00:00
yamt
807ce4c6fc tmpfs_reg_resize: drop swap slots on truncation.
fix a problem pointed by jmmv@.
2005-11-08 23:04:03 +00:00
christos
fe1de4d6e3 PR/32003: Brian Buhrow: msdosfs doesn't properly zero out high cluster data
on non-FAT32 msdos filesystems.
2005-11-04 21:04:20 +00:00
yamt
a748ea88dd merge yamt-vop branch. remove following VOPs.
VOP_BLKATOFF
	VOP_VALLOC
	VOP_BALLOC
	VOP_REALLOCBLKS
	VOP_VFREE
	VOP_TRUNCATE
	VOP_UPDATE
2005-11-02 12:38:58 +00:00
dyoung
ba91bb71cf Bug fix: correct the sense of an if-condition in tmpfs_spec_close:
because VOP_UPDATE() usually succeeded, spec_close() was not usually
called.  Only skip the spec_close() step if VOP_UPDATE() returns
an error result.  Now /dev/watchdog works as expected when /dev/
is a tmpfs; previously, it was impossible to disarm a user-tickled
watchdog.
2005-11-02 05:41:50 +00:00
dyoung
b441f8100f Bug fix: change tmpfs_spec_bwrite from tmpfs_bwrite to vn_bwrite,
per yamt's suggestion.  Previously, if /dev/ was mounted on a tmpfs,
block device buffers were never flushed to disk.  Trying to unmount
a dirty filesystem (umount /dev/wd0e, say) caused an endless stream
of vflushbuf warnings, because tmpfs_bwrite was not flushing buffers.
The fix told to me by yamt solves the problem.
2005-11-02 05:39:16 +00:00
christos
f229ea7f53 make debugging code compile after 64 bit inode changes. 2005-10-23 04:28:53 +00:00
simonb
30ab8089df Update the mod and access times directly from ptyfs_read() and
ptyfs_write() rather than setting a flag and updating these times
through ptyfs_itimes() at some indeterminate time in the future.
However, just use the "time" variable to set the times instead of
using a potentially expensive call to nanotime().  A HZ resolution
on these timestamps is more than enough.

(Possibly incomplete) fix for PR kern/31430.
OK'd be christos@.
2005-10-12 15:23:33 +00:00
jmmv
ab7e099bbc Follow symlinks during lookup (i.e., don't stop too early) so that symlinks
to directories work as expected.  Diagnosed by Greg Oster.
2005-10-03 19:36:42 +00:00
christos
39e9173002 use a counter to prevent from mounting ptyfs twice. Using save_ptm is not
good enough, because if we don't have COMPAT_BSDPTY, then it will stay NULL.
2005-10-01 05:30:12 +00:00
jmmv
38c8dceb4b Explicitly initialize the tn_lockf field. I expect problems in some
situations otherwise...
2005-09-30 14:29:19 +00:00
dyoung
3d52cdeb53 In cd9660_mount, initialize imp to VFSTOISOFS(mp) instead of NULL.
Remove redundant assignments to imp.  This fixes the page fault
panic when the kernel mounts an ISO9660 filesystem, introduced at
revision 1.27.
2005-09-30 08:15:46 +00:00
jmmv
b6d141c71c Implement the tmpfs_advlock operation. Makes "user-level" file locking
work (aka lockf(3)).
2005-09-29 19:48:21 +00:00
christos
3888bec411 Move the duplicate mount check sooner, and fix a leak. 2005-09-29 14:45:56 +00:00
yamt
5ce7d98710 tmpfs_getattr: return up-to-date timestamps. 2005-09-28 23:42:14 +00:00
jmmv
24d12cb7e6 Some style fixes in comments. 2005-09-27 20:35:33 +00:00
jmmv
90260ab291 Handle too big numbers given in the max size argument. 2005-09-26 09:50:08 +00:00
yamt
58e607b974 tmpfs_rename: fix lock/unlock mismatch. 2005-09-26 00:46:59 +00:00
jmmv
9ba32cead7 Follow compat naming tradition: rename compat_export_args to export_args30. 2005-09-25 21:17:05 +00:00
jmmv
c690718c37 Only consider valid flags in the root mode's parameter given by the user.
I doubt the unchecked value could bring us problems, but better to be safe
than sorry.
2005-09-25 16:34:42 +00:00
jmmv
b35a89f13c Sanity check negative values in the maximum size and number of nodes
arguments to avoid a crash while mounting a tmpfs file system.  Add a
regression test for this too.  Noticed by chs@.
2005-09-25 16:28:43 +00:00
jmmv
e230b755b3 Synchronize NFS status with reality. After yamt@ changes (I think with the
implementation of getpages and putpages and the use of UBC in the read and
write operations), the worst problem has gone away which was a panic when
a file's contents were modified in the original file system and then read
through the NFS mount point.

Also remove the entry about optimization.  While tmpfs still has room for
improvement, it has become a lot better lately, thanks to the string pools
and the changes yamt@ did in the anonymous objects handling.
2005-09-23 21:39:29 +00:00
wiz
c31c860ef5 Fix typo, add missing parenthesis. 2005-09-23 20:46:18 +00:00
jmmv
b0085cab71 Kill the tmpfs(9) manual page; it was just documenting internal details of
tmpfs' "API" and was already rotting.

Instead, merge all the relevant comments into the code.  This includes
acknowledgements to Google's Summer of Code 2005 program (they were in the
AUTHORS section of tmpfs(9) before), so all the files need to be changed
to include this sentence alongside the title.  (Note that this was not a
requirement of the program.)
2005-09-23 15:36:15 +00:00
jmmv
f63b58d19d Lock the source directory during the rename operation so that we are safe
to modify it (I hope this is the correct way to go).  Avoids triggering an
assertion in the tmpfs_dir_detach function, shown by the t_rename
regression test.
2005-09-23 14:27:55 +00:00
jmmv
8d09f0278b Start inode numbers on 2 to mimic UFS tradition (and to avoid problems if
some utility relies on this).
2005-09-23 13:59:16 +00:00
jmmv
2a3e5eeb7c Apply the NFS exports list rototill patch:
- Remove all NFS related stuff from file system specific code.
- Drop the vfs_checkexp hook and generalize it in the new nfs_check_export
  function, thus removing redundancy from all file systems.
- Move all NFS export-related stuff from kern/vfs_subr.c to the new
  file sys/nfs/nfs_export.c.  The former was becoming large and its code
  is always compiled, regardless of the build options.  Using the latter,
  the code is only compiled in when NFSSERVER is enabled.  While doing this,
  also make some functions in nfs_subs.c conditional to NFSSERVER.
- Add a new command in nfssvc(2), called NFSSVC_SETEXPORTSLIST, that takes a
  path and a set of export entries.  At the moment it can only clear the
  exports list or append entries, one by one, but it is done in a way that
  allows setting the whole set of entries atomically in the future (see the
  comment in mountd_set_exports_list or in doc/TODO).
- Change mountd(8) to use the nfssvc(2) system call instead of mount(2) so
  that it becomes file system agnostic.  In fact, all this whole thing was
  done to remove a 'XXX' block from this utility!
- Change the mount*, newfs and fsck* userland utilities to not deal with NFS
  exports initialization; done internally by the kernel when initializing
  the NFS support for each file system.
- Implement an interface for VFS (called VFS hooks) so that several kernel
  subsystems can run arbitrary code upon receipt of specific VFS events.
  At the moment, this only provides support for unmount and is used to
  destroy NFS exports lists from the file systems being unmounted, though it
  has room for extension.

Thanks go to yamt@, chs@, thorpej@, wrstuden@ and others for their comments
and advice in the development of this patch.
2005-09-23 12:10:31 +00:00
yamt
bea9347034 fix buffer overrun for symbolic links. PR/31325. 2005-09-17 10:28:26 +00:00
yamt
db59142cb3 tmpfs_dir_getdotdotdent: correct fileid. 2005-09-16 00:18:48 +00:00
yamt
8e6209cffb change the way to handle directory "offsets" so that
they won't be changed when removing entries in the directory.
some applications like cvs rely on this.
2005-09-15 12:34:35 +00:00
yamt
20bb9654a2 tmpfs_getpages: don't create pages past eof. 2005-09-14 20:27:26 +00:00
soda
a74b7aeaeb mention what is the failure case, from FreeBSD revision 1.46 cvs log 2005-09-14 15:13:19 +00:00
christos
fe968d1756 PR/31312: Juan RP: Don't use negative cacheing on msdosfs, because of the
evil case preserving and case sensitive semantics. From FreeBSD.
2005-09-14 15:07:22 +00:00
yamt
7720dda14a tmpfs_read: handle requests past EOF. 2005-09-14 10:40:49 +00:00
jmmv
2ddaf8b92b Nodes cannot use the '0' identifier or they will be skipped by readdir.
E.g., the root node's '.' and '..' directory entries did not appear in
a directory list, because the root node always holds the first id.
2005-09-13 21:30:52 +00:00
jmmv
5f4b660e4e Adapt recent changes to the style of the rest of the file. 2005-09-13 20:02:05 +00:00
yamt
647aa77538 - don't waste/leak kva.
- implement getpages/putpages.  support mmap.
- eliminate meaningless memcpy.
- ubcify.
2005-09-13 14:29:18 +00:00
yamt
a7ca1cc6ef tmpfs_read: return EISDIR rather than EINVAL for non-VREG files.
XXX should we follow nfs, which uses EPERM?
2005-09-13 14:27:29 +00:00
yamt
1873c5428a tmpfs_link: always free pnbuf. 2005-09-13 12:11:27 +00:00
yamt
db9ffe1576 - don't keep a reference to a variable on stack.
- remove a meaningless assumption about the order of structure members.
2005-09-12 19:56:58 +00:00
yamt
ffb84f0f1b fix lock/unlock mismatch. XXX this is not a real fix. 2005-09-12 19:55:22 +00:00
christos
b9c29c4def convert to use it nanotime, but don't call it unless it is necessary. 2005-09-12 16:55:01 +00:00
christos
54705baa2e wrong variable name. 2005-09-12 16:54:35 +00:00
christos
c7d2653a66 use nanotime(). 2005-09-12 16:44:29 +00:00
christos
370f05b81d don't play with ctime directly anymore. 2005-09-12 16:43:38 +00:00
christos
1114655b16 Fix the CHANGE part too. 2005-09-12 16:42:09 +00:00
christos
ce573378a6 propagate itime changes from the other filesystems. 2005-09-12 16:37:13 +00:00
christos
a12024da06 Use nanotime() to update the time fields in filesystems. Convert the code
from macros to real functions. Original patch and review from chuq.
Note: ext2fs only keeps seconds in the on-disk inode, and msdosfs does not
have enough precision for all fields, so this is not very useful for those
two.
2005-09-12 16:24:41 +00:00
jmmv
7164c6807f Remove tmpfs from here, as it doesn't have a Makefile (dunno if it is
needed, yet).  Pointed out by FUKAUMI Naoki in private mail.
2005-09-12 09:11:20 +00:00
jmmv
8e0a777ab1 wiz@ remembers that the preferred way to spell file-system in NetBSD is
file system.
2005-09-10 22:28:57 +00:00
jmmv
ec93365612 Initial addition of tmpfs, an efficient memory file-system. This project
was developed as part of Google's Summer of Code 2005 program.  This
change adds the kernel code, the mount_tmpfs utility, a regression test
suite and does all other related changes to integrate these.

The file-system is still *experimental*.  Therefore, it is disabled by
default in all kernels.  However, as typically done, a commented-out
entry is added in them to ease its setup.

Note that I haven't commited the required mountd(8) changes to be able
to export tmpfs file-systems because NFS support is still very unstable
and because, before enabling it, I'd like to do some other changes.

OK'ed by my project mentor, William Studenmund (wrstuden@).
2005-09-10 19:20:48 +00:00
christos
7b1ec62c27 Make fileno calculations use ino_t variables. 2005-09-10 18:35:56 +00:00
christos
a4b3d5864b PR/23773: Tero Kivinen: Cannot mount msdos filesystems if filesystem size >
128GB
PR/31287: Fabien Devaux: msdosfs now can mount >128MB filesystems
2005-09-10 17:33:45 +00:00
xtraeme
85d3711504 Remove an extra ')' 2005-08-30 19:15:11 +00:00
xtraeme
37ed0ed9df Remove __P() 2005-08-30 19:11:43 +00:00
xtraeme
08fcacf4ed Remove __P() 2005-08-30 19:01:29 +00:00
xtraeme
85be4ce6e8 Remove __P() 2005-08-30 18:47:19 +00:00
xtraeme
47216f8470 Remove __P() 2005-08-29 23:57:35 +00:00
xtraeme
529eaccb6b The maximum file size on MS-DOS filesystems is 4 GB - 1 byte, so
don't bother trying to write files bigger than this.  Just return
EFBIG to caller, rather than panic()ing later.

From OpenBSD.

This closes my PR kern/30864: "panic when copying files of >4GB on msdosfs"
2005-08-29 23:22:05 +00:00
nakayama
d8c6d7b24e statvfs(2) returns bogus result from union mounted file systems with
`-r' option, since it uses uninitialized buffer in the case of no
lower-layer file system.

So, add M_ZERO to malloc(9) flags to initialize the buffer.
2005-08-24 15:21:28 +00:00
christos
5e6a1c8476 fileid is now a quad. 2005-08-19 12:24:54 +00:00
christos
2ebf2b2fc3 namlen is u_int16_t now. 2005-08-19 04:47:55 +00:00
christos
b02ca699ef Add an _ to DIRENT_SIZE 2005-08-19 04:45:47 +00:00
christos
103542d3d7 fix a printf arg. 2005-08-19 04:15:02 +00:00
christos
758a209d23 64 bit inode changes. 2005-08-19 02:03:49 +00:00
jmmv
db4c002235 Fix comment regarding sbp->f_favail (which was a duplicate due to a pasto). 2005-08-05 13:24:18 +00:00
jmmv
e062fbf94f Let this build when MSDOSFS_DEBUG is defined (v_id disappeared a long time
ago but it was still used here).
2005-08-05 11:00:31 +00:00
christos
aa112c89a9 PR/30823: Dave Huang: Panic reading files larger than 4GB on NTFS 2005-07-25 00:48:22 +00:00
yamt
b7bfe82866 update file timestamps for nfsd loaned-read and mmap.
PR/25279.  discussed on tech-kern@.
2005-07-23 12:18:41 +00:00
yamt
44d128fa8e - constify genfs_ops.
- use member designators.
2005-06-28 09:30:37 +00:00
thorpej
e871a0392f Remove the last references to M_NAMEI; everything should be using PNBUF_*()
now (for a long time now).  Remove M_NAMEI, and bump the kernel version to
3.99.7 to reflect its removal.
2005-06-23 17:00:30 +00:00
junyoung
6a5baa993c ANSIfy and de-__P. 2005-06-22 17:34:30 +00:00
atatat
df13e3579e Change the rest of the sysctl subsystem to use const consistently.
The __UNCONST macro is now used only where necessary and the RW macros
are gone.  Most of the changes here are consumers of the
sysctl_createv(9) interface that now takes a pair of const pointers
which used not to be.
2005-06-20 02:49:18 +00:00
christos
a29d4b2515 - rename variables to avoid shadowing.
- add a few const.
2005-05-29 21:00:29 +00:00
christos
44e14add76 Don't print 0x in front of %p. From FreeBSD/OpenBSD 2005-05-22 15:29:33 +00:00
christos
362a4a0bd5 Yes, it was a cool trick >20 years ago to use "0123456789abcdef"[a] to
implement, xtoa(), but I think defining the samestring 50 times is a bit
too much. Defined HEXDIGITS and hexdigits in subr_prf.c and use it...
2005-05-17 04:14:57 +00:00
christos
cd80d2a69d Remove compat code that hard-codes default group and mode for pty creation.
Hi Matt!
2005-05-11 17:38:54 +00:00
thorpej
e633e8b61b - Define a VFS_ATTACH() macro that places a reference to a vfsops structure
into the "vfsops" link set.
- Use VFS_ATTACH() where vfsops are declared for individual file systems.
- In vfsinit(), traverse the "vfsops" link set, rather than vfs_list_initial[].
2005-03-29 02:41:05 +00:00
perry
477853c351 nuke trailing whitespace 2005-02-26 22:58:54 +00:00
jdolecek
28302c221e use MIN()/MAX() rather than min()/max(), to avoid possible truncation
of 64bit values to 'int'
2005-02-13 11:57:47 +00:00
jdolecek
877dee10ba read always single cluster of data, to avoid confusing the buffer
cache; this appears to fix the random file content corruption which
happens when more than one cluster is read at the same time, i.e. for
files > 3*cluster_size

Fixes PR kern/23835

change obtained from FreeBSD ntfs_subr.c rev. 1.31
2005-02-13 11:55:40 +00:00
chs
8975a0856f adjust the UBC mapping code to support non-vnode uvm_objects.
this means we can no longer look at the vnode size to determine how many
pages to request in a fault, which is good since for NFS the size can change
out from under us on the server anyway.  there's also a new flag UBC_UNMAP
for ubc_release(), so that the file system code can make the decision about
whether to cache mappings for files being used as executables.
2005-01-09 16:42:43 +00:00
mycroft
e72fc6717e Whoops -- move the location of the VOP_OPEN()/VOP_CLOSE(), et al, from
foo_mountfs() to foo_mount(), to match the new mountroot API.
Also, for ext2fs and lfs, copy some restructuring from ffs to allow changing
file system parameters without specifying the device name.
(ntfs could use some more work.)
2005-01-09 09:27:17 +00:00
mycroft
0461b30ac3 Rework the mountroot interface so that vfs_mountroot() opens the root device
and just passes it on to the file system functions.  This avoids opening and
closing the device several times.

Mentioned on tech-kern some time ago, IIRC.  I've been running this for a
long time.
2005-01-09 03:11:48 +00:00
christos
603eb38ad9 make this compile again; hi potr 2005-01-02 21:15:48 +00:00
thorpej
1c95472d01 Add the system call and VFS infrastructure for file system extended
attributes.

From FreeBSD.
2005-01-02 16:08:28 +00:00
jdolecek
477f876cd6 size_t police
pointed out by Jesse Off on source-changes@
2004-12-28 01:12:26 +00:00
jdolecek
52c7db3883 change wget_utf8() to not require NUL-terminated string as input,
and adjust callers appropriately. cn_nameptr isn't NUL-terminated
for non-leaf components, so it's incorrect to assume it is always
NUL-terminated.

This fixes previous utf8-ization changes to not panic for cases
like 'echo */*/*.ps' in case the intermediate path components
are not in cache (yet).
2004-12-27 18:47:16 +00:00
jdolecek
2ce9f4516f change wget_utf8() to not require NUL-terminated string as input (added
'size' parameter), and adjust callers appropriately
2004-12-27 18:14:36 +00:00
christos
7c9f4b5736 I don't think that the vgone() in vop_inactive is needed; in fact it might
be the source of my deadlocks.
2004-12-18 05:26:41 +00:00
atatat
c64e485f42 Reorder ptyfs pseudo inode numbers so that 0 and 1 are unused, 2 is
the root of the file system, and slaves and masters alternate starting
at 3.  This means the inode numbers won't be really large until you
really allocate a really lot of ptys.
2004-12-16 05:30:18 +00:00
martin
5b98d0afc6 Declare functions with the proper type they return. While there, replace
some strange type names with their C99 equivalent.
This avoids sign extension of 32bit fields (like the file size) on 64bit
archs.
Based on a patch supplied by Olaf 'Rhialto' Seibert in PR kern/28471;
should fix that PR.
2004-11-30 21:36:28 +00:00
atatat
f9bdf3cd08 Remove the digits() function and simply set va_bytes and va_size to
zero in ptyfs_getattr().  There's no reason to make them something
else and no other devices (except for disk devices) report anything
other than zero here, so why should we be different?
2004-11-29 13:55:59 +00:00
christos
051b79b0c3 Add pty group and mode settings. 2004-11-25 05:15:10 +00:00
atatat
e7eaf9a12d Properly set va_fsid so that st_dev ends up correct. 2004-11-25 03:46:50 +00:00
jdolecek
3b4a395d32 when Joliet extension is in use, encode the Joliet Unicode file names
into UTF-8, rather than filtering them to ISO-8859-1 subset

provide vfs.cd9660.utf8_joliet sysctl to switch to the former
iso-8859-1-only handling, default is to UTF-8 encode
2004-11-21 21:49:08 +00:00
jdolecek
a38a5c8c2b switch to use new utf8 routines in <fs/unicode.h> 2004-11-21 16:29:57 +00:00