Commit Graph

401 Commits

Author SHA1 Message Date
bde
605f4cb33b Quick fix for breakage of read clustering on non-IDE drives. Read
clustering is obsolescent technology so hardly anyone noticed.  On
a DORS 32160 SCSI drive with 4 tags, read clustering makes very
little difference even for huge sequential reads.  However, on a
ZIP SCSI drive with 0 tags, the minimum overhead per block is about
40 msec, so very large clusters must be used to get anywhere near
the maximum transfer rate.  Using clusters consisting of 1 8K block
reduces the transfer rate to about 250K/sec.  Under msdosfs, missing
read clustering is normal and a cluster size of 1 512 byte block
reduces the transfer rate to about 25K/sec.

Broken in:	rev.1.18
1998-08-18 03:54:39 +00:00
bde
4e2d834c27 Removed unused includes. 1998-08-17 19:09:36 +00:00
msmith
64b624ba3e "The releaseing of the reference and lock is not temporary and belongs
where it is.  The reference and lock(s) are acquired just above the
 code in VREF() and relookup()."

Submitted by:	Michael Hancock <michaelh@cet.co.jp>
1998-08-12 21:42:54 +00:00
julian
4c11bd9897 Handle the case of moving a directory onto the top of a sibling's
child of the same name.

Submitted by:	Kirk Mckusick with fixes from luoqi Chen
Obtained from:   Whistle test tree.
1998-08-12 20:46:47 +00:00
bde
0c1764387c Used daddr_t's, not ints, to store disk block numbers. Updated printf
formats and args to match.  Fixed old printf format errors (all related;
most were hidden by calling printf indirectly).

This change somehow avoids compiler bugs for 64-bit longs on i386's,
although it increases the number of 64-bit calculations.
1998-07-28 18:25:51 +00:00
bde
1881ba1352 Made lazy syncing of timestamps for special files non-optional. 1998-07-27 15:37:00 +00:00
bde
863d5c8b68 Cast pointers to uintptr_t/intptr_t instead of to u_long/long,
respectively.  Most of the longs should probably have been
u_longs, but this changes is just to prevent warnings about
casts between pointers and integers of different sizes, not
to fix poorly chosen types.
1998-07-15 02:32:35 +00:00
bde
f0b863f4b5 Fixed printf format errors. 1998-07-11 07:46:16 +00:00
julian
3032208d42 Add code missed in the initial Soft updates integration.
Make the unallocated parts of a directry have a know state
in case we need it later.
1998-07-10 00:10:20 +00:00
julian
c520e2ce97 Don't update superblock if mounted readonly,
also fixes some problems with softupdates on root.
More cleanups are needed here..
Submitted by: Luoqi Chen <luoqi@watermarkgroup.com>
1998-07-08 23:52:27 +00:00
julian
78a155ddaf Catch a few corner cases where FreeBSD differs enough from BSD 4.4 to
confuse Soft updates..
Should solve several "dangling deps" panics.
1998-07-08 01:04:33 +00:00
julian
4363221ba2 VOP_STRATEGY grows an (struct vnode *) argument
as the value in b_vp is often not really what you want.
(and needs to be frobbed). more cleanups will follow this.
Reviewed by: Bruce Evans <bde@freebsd.org>
1998-07-04 20:45:42 +00:00
bde
cd727ef682 Restored revs.1.89-1.90 which I somehow clobbered in rev.1.91. 1998-07-03 22:37:43 +00:00
bde
660e6408e6 Sync timestamp changes for inodes of special files to disk as late
as possible (when the inode is reclaimed).  Temporarily only do
this if option UFS_LAZYMOD configured and softupdates aren't enabled.
UFS_LAZYMOD is intentionally left out of /sys/conf/options.

This is mainly to avoid almost useless disk i/o on battery powered
machines.  It's silly to write to disk (on the next sync or when the
inode becomes inactive) just because someone hit a key or something
wrote to the screen or /dev/null.

PR:		5577
Previous version reviewed by:	phk
1998-07-03 22:17:03 +00:00
bde
dfd9848c30 Centralized in-core inode update. Update the in-core inode directly
in ufs_setattr() so that there is no need to pass timestamps to
UFS_UPDATE() (everything else just needs the current time).  Ignore
the passed-in timestamps in UFS_UPDATE() and always call ufs_itimes()
(was: itimes()) to do the update.  The timestamps are still passed
so that all the callers don't need to be changed yet.
1998-07-03 18:46:52 +00:00
phk
9905e9d2e7 Make vprint() print dev_t in hex also. 1998-06-27 07:28:49 +00:00
phk
3354f8d129 Report the type from the inode, not the vnode. 1998-06-27 06:45:04 +00:00
jkh
cfe1e92767 Flesh this document out just a little in response to some user
questions and also recommend linking over copying since, at this stage,
a stale copy is a real concern.
1998-06-26 10:35:55 +00:00
bde
403bdcb97b Removed unused includes. 1998-06-21 14:53:44 +00:00
julian
fb17974b6a Slight change to directory cleanup
Makes soft updates a bit cleaner. Eliminates some warnings about
'corrupted directories' from fsck.
1998-06-14 19:31:28 +00:00
julian
e30abc2a08 Note which version of Kirk's sources this corresponds to. 1998-06-12 21:21:26 +00:00
julian
6b27bc7737 Fix the case when renaming to a file that you've just created and deleted,
that had an inode that has not yet been written to disk, when the inode of the
new file is also not yet written to disk, and your old directory entry is not
yet on disk but you need to remove it and the new name exists in memory
but has been deleted but the transaction to write the deleted name to disk
exists and has not yet been cancelled by the request to delete the non
existant name.  I don't know how kirk could have missed such a glaring
problem for so long. :-) Especially since the inconsitency survived on
the disk for a whole 4 second on average before being fixed by other code.
This was not a crashing bug but just led to filesystem inconsitencies
if you crashed.

Submitted by: Kirk McKusick (mckusick@mckusick.com)
1998-06-12 20:48:30 +00:00
julian
19e664debc Add B_NOCACHE to several cases where BSD4.4 only required a B_INVAL.
Change worked out by john and kirk in consort.
1998-06-11 17:44:32 +00:00
julian
21ee11979f Fix for "live inode" panic.
Submitted by: Kirk McKusick <mckusick@McKusick.COM>
Reviewed by: yeah right...
1998-06-10 20:45:46 +00:00
julian
ab4debc1cf Remove buggy debugging code. 1998-06-10 20:03:16 +00:00
julian
27341c23aa Back out John's changes 1.45 -> 1.46
Kirk confirms that the original semantic was what he wanted...
(well, a very slight difference)
May fix "dangling deps" panic with soft updates.
1998-06-10 19:27:56 +00:00
julian
b4e8c144c1 The version of the softdep changes in FreeBSD broke the
(doingdirectory && !newparent) case of ufs_rename().
rename("D1/X/", "D2/Y/") gives a wrong link count for D2.

Submitted by: Bruce Evans <bde@zeta.org.au>
Reviewed by: Kirk McKusick <mckusick@McKusick.COM>
1998-06-08 23:55:33 +00:00
bde
b8ca4196f1 Null change. Forgot to mention in previous log message that MNT_NOATIME
is now ignored for special files, so that mounting root with option
noatime doesn't break reporting of idle times in programs like `w'.
The problem of execessive disk updates just to stamp atimes will be
handled for special files by only writing atimes to disk when inodes
become active.  This works well because special files are relatively
uncommon and their atimes are even more disposable at panic time than
regular files' atimes.
1998-06-07 11:04:26 +00:00
bde
0af8745beb Fixed some longstanding timestamp bugs:
1. mark atimes and mtimes of special files and fifos for update upon
   successful completion of non-null i/o, not at the beginning of the
   syscall.
2. never update file times for readonly filesystems.  They were updated
   for stats and closes but not for syncs.  The updates were of course
   only in-core and were thrown away when the inode was uncached, so
   the times sometimes appeared to go backwards.

Improved comments in code related to (1) (mostly by removing them).

Unmacroized ITIMES().  The test in (2) bloated it even more.  Don't
call getmicrotime() in the function version of it when we only need
the time in seconds.
1998-06-07 10:49:18 +00:00
dfr
3879235125 Use size_t instead of u_int for sizes. 1998-06-04 17:21:39 +00:00
dfr
491642ca32 If the filesystem blocksize is less than the VM page size, use the generic
getpages code.  This happens for filesystems with 4k pages on the alpha since
the normal alpha pagesize is 8k.
1998-06-04 17:04:44 +00:00
dfr
56e5ba84df Don't cast a pointer to an int in DQHASH. 1998-06-04 17:03:16 +00:00
julian
1464500611 Add a reference to the original softupdates paper 1998-06-02 01:30:51 +00:00
julian
3fd4b55938 Add a reference to the Ganger/Patt paper 1998-06-02 01:27:27 +00:00
julian
0086b00b30 A fix to a debug test from Kirk. 1998-05-27 03:32:23 +00:00
julian
92e0f9da97 Ensure that there is enough information here, so that people can use
soft updates should they desire.
1998-05-19 23:18:37 +00:00
julian
44ee923017 Bring up-to-date with Whistle's current version
Includes some debugging code.
1998-05-19 23:07:25 +00:00
julian
988e3e4a34 Merge with Kirk's version as of Feb 20
His version 9.23 == our version 1.5 of ffs_softdep.c
His version 9.5 ==  our version 1.4 of softdep.c
1998-05-19 22:54:53 +00:00
julian
0cc808ba0d Merge in Kirk's changes to stop softupdates from hogging all of memory. 1998-05-19 21:45:53 +00:00
julian
99669d2e37 Change to stop a silly panic. This should be understood better.
Change a buffer swizzle trick to a bcopy. It would be nice if the efficient
trick could be used in the future.
1998-05-19 20:50:41 +00:00
julian
ad8fcbb0ce First published FreeBSD version of soft updates Feb 5. 1998-05-19 20:18:42 +00:00
julian
9ae1fc57cc This commit was generated by cvs2svn to compensate for changes in r36206,
which included commits to RCS files with non-trunk default branches.
1998-05-19 20:03:29 +00:00
julian
6df1279ada Import the next version received from kirk after some
FreeBSD feedback.
1998-05-19 20:03:29 +00:00
julian
26ab4eddcb This commit was generated by cvs2svn to compensate for changes in r36201,
which included commits to RCS files with non-trunk default branches.
1998-05-19 19:47:22 +00:00
julian
f9429f2998 Import the earliest version of the soft update code that I have. 1998-05-19 19:47:22 +00:00
julian
617abff051 try stop the user from using mount -u to set the async flag on
a filesystem currently using soft updates.
Also needs a new copy of ffs_softdep.c to complete the fix.
1998-05-18 06:38:18 +00:00
phk
86337bf437 s/nanoruntime/nanouptime/g
s/microruntime/microuptime/g

Reviewed by:	bde
1998-05-17 11:53:46 +00:00
julian
0e5c83ad6b Add missing splx()
Submitted by: Luoqi Chen <luoqi@chen.ml.org>
1998-05-11 21:41:13 +00:00
julian
879312610d Submitted by: abial@nask.pl
Minor fix to support SLICE in MFS...
1998-05-11 19:27:18 +00:00
msmith
964ce778b1 In the words of the submitter:
---------
Make callers of namei() responsible for releasing references or locks
instead of having the underlying filesystems do it.  This eliminates
redundancy in all terminal filesystems and makes it possible for stacked
transport layers such as umapfs or nullfs to operate correctly.

Quality testing was done with testvn, and lat_fs from the lmbench suite.

Some NFS client testing courtesy of Patrik Kudo.

vop_mknod and vop_symlink still release the returned vpp.  vop_rename
still releases 4 vnode arguments before it returns.  These remaining cases
will be corrected in the next set of patches.
---------

Submitted by:	Michael Hancock <michaelh@cet.co.jp>
1998-05-07 04:58:58 +00:00