Subject: CVS commit: src/sys/arch/xen
To: None <source-changes@NetBSD.org>
From: Thor Lancelot Simon <tls@netbsd.org>
List: source-changes
Date: 07/17/2005 08:23:43
Module Name:	src
Committed By:	tls
Date:		Sun Jul 17 08:23:43 UTC 2005

Modified Files:
	src/sys/arch/xen/i386: xen_shm_machdep.c
	src/sys/arch/xen/include: xen_shm.h
	src/sys/arch/xen/xen: xbdback.c

Log Message:
Improvements to xbdback (the domain 0 driver that provides "xbd" virtual
disks to other domains) from Jed Davis, <jld@panix.com>:

	* Issue multiple requests when necessary rather than
	  assuming that arbitrary requests can be mapped into single
	  contiguous virtual address ranges.

	* Don't assume that all data for a request is consecutive
	  in memory.  With some client OSes, it's not.

	The above two changes fix data corruption issues with Linux
	clients with certain filesystem block sizes.

	* Gracefully handle memory or pool allocation failures after
	  beginning to handle a request from the ring.

	* Merge contiguous requests to avoid the "64K turns into 44K + 20K
	  and doubles the transactions per second at the disk" problem
	  caused by the 11-page limit caused by the structure of Xen
	  ring entries.  This causes a very slight performance decrease
	  for sequential 64K I/O if the disk is not already saturated with
	  requests (about 1%) but halves the transactions per second we
	  hit the disk with -- or better.  It even compensates for bizarre
	  Linux behaviour like breaking long requests up into 5.5K pieces.

	* Probably some stuff I forgot to mention.

Disk throughput (though not latency) is now much, much closer to the
"raw hardware" case than it was before.


To generate a diff of this commit:
cvs rdiff -r1.9 -r1.10 src/sys/arch/xen/i386/xen_shm_machdep.c
cvs rdiff -r1.3 -r1.4 src/sys/arch/xen/include/xen_shm.h
cvs rdiff -r1.11 -r1.12 src/sys/arch/xen/xen/xbdback.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.