[PATCH] RPC over UDP congestion control updates [8/8]
When determining who gets access to the socket, give priority to
requests that are being resent. Despite the fact that congestion
control now applies to resends, we still want to ensure that resends
get ACKed as soon as possible (and before we start sending off new
requests).
[PATCH] RPC over UDP congestion control updates [7/8]
- Divorce the allocation of free request slots and the congestion
control. Make the congestion control apply only to when we
actually send data over the wire. This means that we *do* apply
congestion control to resent requests: if a timeout has occured,
and there are too many requests on the wire, delay resending until
the congestion algorithm allows it.
- Improve spinlocking by putting the congestion avoidance algoritm
under xprt->sock_lock. This lock has to be taken *anyway* in
(almost) all cases where we are updating the congestion control
data.
[PATCH] RPC over UDP congestion control updates [6/8]
Eliminate the arbitrary timeouts in xprt_adjust_cwnd(). Strict
enforcement of the congestion avoidance algorithm as detailed in Van
Jacobson's 1998 paper http://www-nrg.ee.lbl.gov/nrg-papers.html
Congestion Avoidance and Control.
[PATCH] RPC over UDP congestion control updates [4/8]
Cleanups for the socket locking mechanism.
Improve RPC request ordering by ensuring that RPC tasks that are
already queued on xprt->sending get sent before tasks that happen to
get scheduled just when there is a free slot.
In case the socket send buffer is full, queue the tasks on
xprt->pending rather than xprt->sending in order to eliminate the risk
of accidental wakeups from xprt_release_write() and xprt_write_space().
[PATCH] RPC over UDP congestion control updates [3/8]
Improve the response to timeouts. As requests time out, we delay
timing out the remaining requests (in fact we follow exponential
backoff). This is done because we assume either that the round trip
time has been underestimated, or that the network/server is congested,
and we need to back off the resending of new requests.
[PATCH] RPC over UDP congestion control updates [2/8]
Implement a count of the number of timeouts that have occured since
we last recorded a successful reply from the server.
For the moment this information is merely used in order to improve the
estimate of whether or not the server is down. It will be used in
patch 3/8 in order to improve the timeout backoff algorithm.
[PATCH] RPC over UDP congestion control updates [1/8]
Implement the basic round trip timing algorithm in order to adapt the
timeout values for the most common NFS operations to the server's
rate of response.
Algorithm is described in Van Jacobson's paper 1998 paper
on http://www-nrg.ee.lbl.gov/nrg-papers.html, and is the same as is
used for most TCP stacks.
Following the *BSD code, we implement separate rtt timers for GETATTR,
LOOKUP, READ/READDIR/READLINK, and WRITE. In addition to this, there
is one extra timer for the COMMIT operation.
All the remaining RPC calls use the current system in which a fixed
timeout value gets set by the 'timeo' mount option.
In case of a timeout, the current exponential backoff algoritm is
implemented. Subsequent patches will improve this...
The following patch fixes a bug in xdr_kunmap() that has been known to
deadlock TCP mounts on highmem systems. It also removes an unnecessary
call to flush_page_to_ram().
David Brownell [Mon, 15 Jul 2002 10:47:21 +0000 (03:47 -0700)]
[PATCH] ohci misc
This patch includes the innocuous bits from a larger one that
I'm still working on (mostly unlink fixes):
- updates comments
- flags TDs that were seen in the donelist
- removes some bogus whitespace (at EOL etc) and tabs
- checks for an enumeration issue that might cause trouble
- delays IRQs a bit more aggressively
- shortens TD submit paths a smidgeon (smaller ".o")
- updates some of the debug output
- sanitizes usb_make_path() output on the SA-1111
Matthew Dharm [Mon, 15 Jul 2002 10:19:17 +0000 (03:19 -0700)]
[PATCH] usb-storage: catch bad commands
The purpose of this patch is to trap all commands which have a bogus
request_bufflen. Much logic is devoted to calculating the proper length of
the transfer, but according to discussions I've had on linux-scsi, this is
really a bug in whatever is originating the bad command.
Hopefully, after people use this patch for a while, we'll eliminate all the
offending sources and can remove quite a bit of logic from the driver.
NTFS: 2.0.21 - Check for, and refuse to work with too large files/directories/volumes.
- Limit volume size at mount time to 2TiB on architectures where
unsigned long is 32-bits (fs/ntfs/super.c::parse_ntfs_boot_sector()).
This is the most we can do without overflowing the 32-bit limit of
the block device size imposed on us by sb_bread() and sb_getblk()
for the time being.
- Limit file/directory size at open() time to 16TiB on architectures
where unsigned long is 32-bits (fs/ntfs/file.c::ntfs_file_open() and
fs/ntfs/dir.c::ntfs_dir_open()). This is the most we can do without
overflowing the page cache page index.
Use of the $ARCH variable is undocumented; the sparc and sparc64 ports
define the bool constants CONFIG_SPARC32 and CONFIG_SPARC64 respectively
for this purpose.
Use of the $ARCH variable is undocumented; the sparc and sparc64 ports
define the bool constants CONFIG_SPARC32 and CONFIG_SPARC64 respectively
for this purpose.
Use of the $ARCH variable is undocumented; the sparc and sparc64 ports
define the bool constants CONFIG_SPARC32 and CONFIG_SPARC64 respectively
for this purpose.
Use of the $ARCH variable is undocumented; the sparc and sparc64 ports
define the bool constants CONFIG_SPARC32 and CONFIG_SPARC64 respectively
for this purpose.
Some instances of the "bool" statement have what appear to be
dependencies like "dep_bool" after the 2nd argument, which are
silently ignored by all current parsers. I have either trimmed
the arguments or converted the "bool" to "dep_bool" as seemed
appropriate.
Use of the $ARCH variable is undocumented; the sparc and sparc64 ports
define the bool constants CONFIG_SPARC32 and CONFIG_SPARC64 respectively
for this purpose.
Five symbols CONFIG_ACER_PICA_61, CONFIG_MIPS_EV96100, CONFIG_MIPS_EV64120,
CONFIG_MIPS_ATLAS, and CONFIG_MIPS_MALTA depend on CONFIG_EXPERIMENTAL but
do not say so in their banners.
Tom Rini [Mon, 15 Jul 2002 05:59:21 +0000 (22:59 -0700)]
[PATCH] Don't always ask about Intel RNGs
Hello. The following patch hides the option for Intel (i8x0) RNG
support when it's not a useful option. This is based off of a patch
That was accepted in 2.4.19-pre6. While I suspect this is an ia32-only
option, it is possible that it's used on ia64 as well, so we test for
both before offering Intel i8x0 RNG support.
Use of the $ARCH variable is undocumented; the sparc and sparc64 ports
define the bool constants CONFIG_SPARC32 and CONFIG_SPARC64 respectively
for this purpose.
Use of the $ARCH variable is undocumented; the sparc and sparc64 ports
define the bool constants CONFIG_SPARC32 and CONFIG_SPARC64 respectively
for this purpose.
Andreas Dilger [Mon, 15 Jul 2002 05:54:15 +0000 (22:54 -0700)]
[PATCH] 2.5 i_size_high fixup
this patch is a minor fixup to ext2/inode.c to avoid displaying the
high 32 bits of the size for anything other than regular files. For
sockets, pipes, symlinks, etc it doesn't make sense to have a value
larger than 2GB, and this has already been fixed in ext3 and e2fsprogs.
Documentation/DocBook/kernel-api.tmpl includes code that has no
documentation on 2.5.24, the empty sections mess up the sgml. Comment
out these sections until sombody adds docs to the code.
Robert Kuebel [Mon, 15 Jul 2002 05:52:41 +0000 (22:52 -0700)]
[PATCH] namespace.c - compiler warning
init_rootfs() (from ramfs) doesn't appear in any header file. I didn't
see any that looked like a good home, so lets put a prototype at the top
of fs/namespace.c. This only use of this function is in namespace.c.
The arch-determining symbol CONFIG_SH in drivers/mtd/maps/Config.in
should be CONFIG_SUPERH.
[Rusty: this is a resend of 'PATCH 2.5: kconfig wrong arch symbol';
it should apply now that my earlier patch which trod on the context
has been merged into 2.5.24]