Protocol changes:
* There is a new operation (BLKIF_OP_WRITE_BARRIER)
to pass on barrier requests.
* There is a new state (BLKIF_RSP_EOPNOTSUPP) to indicate
unsupported operations (barrier writes may fail depending
on the underlying block device).
* A new xenstore node named "feature-barrier" indicates the
backend is able to handle barrier writes. The value can
be 1 (all is fine) or 0 (underlying block device doesn't
support barriers).
blkback changes: Add "feature-barrier" node to indicate barrier
support, pass incoming barrier requests to the block layer using
submit_bio(WRITE_BARRIER, bio). Some error handling fixes to
properly pass through barrier write failures, so the frontend
can turn off barriers then.
blkfront changes: Check if the backend sets "feature-barrier", if
present switch to QUEUE_ORDERED_DRAIN mode. Send off barrier
requests to the backend using the new BLKIF_OP_WRITE_BARRIER
operation. Also some error handling for the EOPNOTSUPP case.
Background: Barriers are needed to make journaling filesystems work
reliable. For some requests they need order constrains to make the
transactions work correctly. Barrier requests are used to pass that
ordering information to the block layer and/or to the device, so the
constrains are obeyed when reordering requests for better write
performance.
Signed-off-by: Gerd Hoffmann <kraxel@suse.de>
- Tapdisk updates rsp_cons by ioctl(). on the other hand xvd daemon
reads rsp_cons in do_block_io_op() with RING_FULL().
Copy request and memory barrier before updating rsp_cons.
- Tapdisk access req_prod_pvt with select(). on the other hand xvd
daemon updates it in do_block_io_op().
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
- remove magic number 8 and 64.
page size / sector size is 8 on x86, however on ia64 page size is
16kb.
blkring size is 64 on x86. however it's 128 on ia64.
- replace 0xFFFF with INVALID_GRANT_HANDLE
- don't map io ring into user space with uncachable.
kernel access the page with cacable and tapdisk uses memory barrier
so that it isn't necessary.
- remove printk warning and inserted new line.
- remove unused variable, page.
- add one BUG()
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
include/asm-{i386,x86_64}/mach-xen/asm/fixmap.h was needlessly
including include/xen/gnttab.h. Removing this made necessary explicit
inclusion of that header in tpm_xen.c, the build of which should not
have succeeded on non-x86 architectures before.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
older kernels.
On some older kernels the CHECKSUM_UNNECESSARY flag on received
skbuffs is not honoured by all subsystems, specifically netfilter
under 2.6.9-42.EL
To work around this we need to ensure that the correct checksum is
calculated at some point. We can cause the backend to do this for us
by advertising to the backend that we cannot support checksum offload.
The correlation of this issue with the presence of NETIF_F_TSO is not
100% but it is a good first approximation.
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
call_usermodehelper_keys() was not available until 2.6.13 but since we
pass session_keyring as NULL we may as well use call_usermodehelper()
anyway.
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
domains with PV drivers loaded. This patch creates a new PV-on-HVM
module, reboot.ko, which, when loaded, creates control/reboot_module
in the store. The tools notice this, and disable the watch which would
normally destroy HVM domains which are the target of an xm shutdown
command, allowing the reboot module to shut the domain down cleanly.
Signed-off-by: Tetsu Yamamoto <yamamoto.tetsu@jp.fujitsu.com>
(Checkin comments by Steven Smith <sos22@cam.ac.uk>)
Probably still not catching all possible cases, but using static
(where not already the case) makes the code size smaller, and using __initdata
has the usual advantages.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
This will now be used only by older guests who do not understand
the feature-rx-{copy,flip} feature flags.
Signed-off-by: Keir Fraser <keir@xensource.com>
support PV-on-HVM drivers for older kernel releases.
The compatability code is included in the xen-platform-pci module
since this module underpins all the others.
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
Signed-off-by: K. Y. Srinivasan <ksrinivasan@novell.com>
Signed-off-by: Tsunehisa Doi <Doi.Tsunehisa@jp.fujitsu.com>
non-privileged guest.
This is useful for PV-on-HVM because it removes code which would
otherwise require extra code in the compatability shim.
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
only build it when CONFIG_XEN_BACKEND is set.
This removes unused code from frontend only configurations and also
makes PV-on-HVM drivers on older kernels simpler by removing code
which would otherwise require extra code in the compatability shim.
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
files rather than relying on them being included indirectly.
This is required because these headers are not pulled in indirectly on
older kernels.
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
As it stands grant entries for the actual data are mapped in bulk.
If one of the earlier entries fail to be mapped, it can cause all
subsequent entries to be leaked if they were successfully mapped.
This patch changes it so that we will continue to reap grant entries
even when an error is detected.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Information is located under /sys/devices/system/memory.
Original patch from Satoshi UCHIDA <s-uchida@ap.jp.nec.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
interface is blocked for longer than 500ms. This avoids deadlock
situations where interfaces cannot be destroyed because some other
dormant interface is holding resources.
Signed-off-by: Christopher Clark <christopher.clark@cl.cam.ac.uk>
Signed-off-by: Keir Fraser <keir@xensource.com>
The blkback code checks first_sect by computing last_sect - first_sect
+ 1. If this is not positive then the request is
rejected. Unfortunately, the calculation is stored in an unsigned
integer before the check is made so negative values will not be
rejected.
This patch fixes this by explicitly comparing first_sect with
last_sect.
The blktap code is similar but it stores the difference in a signed
integer so it's okay.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
As it is blkback verifies the metadata from the frontend in place.
This means we run the risk of the frontend changing the data after
we've verified it. This patch copies the data onto the stack before
verifying and using it to ensure we see a consistent snapshot.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
As it stands grant entries for the actual data are mapped in bulk.
If one of the earlier entries fail to be mapped, it can cause all
subsequent entries to be leaked if they were successfully mapped.
This patch changes it so that we will continue to reap grant entries
even when an error is detected.
There is still a potential leak if create_lookup_pte_addr fails
in fast_flush_area. This leak is not affected by this patch.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>