]> xenbits.xensource.com Git - pvdrivers/win/xenvbd.git/log
pvdrivers/win/xenvbd.git
8 years agoUse new monitor request key
Paul Durrant [Tue, 9 Aug 2016 14:19:29 +0000 (15:19 +0100)]
Use new monitor request key

The monitor service now uses a request key in registry under HKLM/SOFTWARE.
This patch modifies __DriverRequestReboot() to use the new key, which is
now set as a parameter by the INF file.

This patch also takes this opportunity to update the registry source module
to being it up to date with the XENBUS source base, and make wider use of it.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
8 years agoClean up the xenstore frontend area when hibernating/crashing
Paul Durrant [Tue, 2 Aug 2016 09:58:28 +0000 (10:58 +0100)]
Clean up the xenstore frontend area when hibernating/crashing

The frontend code in XENCRSH needs to clean up to avoid fooling the backend
into thinking it handles multi-page rings.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
8 years agoDon't send a NUL terminator to QEMU's debug port
Paul Durrant [Tue, 2 Aug 2016 09:56:23 +0000 (10:56 +0100)]
Don't send a NUL terminator to QEMU's debug port

Logging a NUL terminator via QEMU's debug port seems to upset upstream
QEMU. It's also unnecessary anyway as QEMU will break log lines at a
newline character.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
8 years agoRemove reboot request from the co-installer...
Paul Durrant [Fri, 22 Jul 2016 09:37:12 +0000 (10:37 +0100)]
Remove reboot request from the co-installer...

...and use the XENBUS_MONITOR service instead.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
8 years agoAdd the missing package name to the INF file
Paul Durrant [Thu, 21 Jul 2016 11:08:18 +0000 (12:08 +0100)]
Add the missing package name to the INF file

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
8 years agoRevert "Remove PdoPnpSrb, since StorPort doesn't call for targets"
Ben Chalmers [Tue, 12 Jul 2016 08:03:53 +0000 (09:03 +0100)]
Revert "Remove PdoPnpSrb, since StorPort doesn't call for targets"

This reverts commit 0f9f5421099d1dabed11d988b3144fb8f6bfed3b.

It appears that this code is called when determining if Windows
can remove a PV disk.  Without it Windows will not know the
disk is removable and will refuse to allow it to be removed

Signed-off-by: Ben.Chalmers@citrix.com
8 years agoOnly break FrontendBackend thread loop when alerted
Ben Chalmers [Mon, 11 Jul 2016 13:29:04 +0000 (14:29 +0100)]
Only break FrontendBackend thread loop when alerted

Returns a missed '!' character without which the FrontendBackend
thread exits immediately - rather than when we Alert the thread
that we wish it to exit

Signed-off-by : Ben.Chalmers@citrix.com

9 years agoFix compile errors
Paul Durrant [Mon, 9 May 2016 12:41:19 +0000 (13:41 +0100)]
Fix compile errors

Two variables were being initialized but not used, leading to a compiler
warning.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoRemove logging from failed Pdo Pnp IRPs
Owen Smith [Fri, 22 Apr 2016 10:29:31 +0000 (11:29 +0100)]
Remove logging from failed Pdo Pnp IRPs

Logging fail codes for unhandled Pnp IRPs is unneccesary and adds
significant noise with multiple VBDs. Its unlikely the return value
from storport is going to add significant insight to diagnose
problems.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoChange enumeration function to take PANSI_STRING array...
Owen Smith [Wed, 20 Apr 2016 15:43:11 +0000 (16:43 +0100)]
Change enumeration function to take PANSI_STRING array...

...to simplify parsing of the data returned by STORE(Directory)

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoWrap all driver.c globals in a struct
Owen Smith [Wed, 20 Apr 2016 14:30:20 +0000 (15:30 +0100)]
Wrap all driver.c globals in a struct

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoCreate a seperate thread per VBD to handle backend change watches
Owen Smith [Tue, 19 Apr 2016 15:50:08 +0000 (16:50 +0100)]
Create a seperate thread per VBD to handle backend change watches

Using a single thread for all backend watch events pust unneccesary
strain on xenstore when multiple vbds are in use, as each change
causes XenVbd to check several values in all backend areas.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoDont create Pdo for emulated devices
Owen Smith [Tue, 19 Apr 2016 14:25:31 +0000 (15:25 +0100)]
Dont create Pdo for emulated devices

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoRework enumeration code to work at PASSIVE_LEVEL in the scan thread
Owen Smith [Tue, 19 Apr 2016 14:12:38 +0000 (15:12 +0100)]
Rework enumeration code to work at PASSIVE_LEVEL in the scan thread

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoRefactor Pnp/Power handlers
Owen Smith [Tue, 19 Apr 2016 10:28:15 +0000 (11:28 +0100)]
Refactor Pnp/Power handlers

Moves the mapping of DeviceObject to Pdo into the Fdo code

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoSimplify StorPort entry points
Owen Smith [Tue, 19 Apr 2016 09:30:05 +0000 (10:30 +0100)]
Simplify StorPort entry points

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoMove __FdoNotifyInstaller to DriverNotifyInstaller
Owen Smith [Tue, 19 Apr 2016 09:09:01 +0000 (10:09 +0100)]
Move __FdoNotifyInstaller to DriverNotifyInstaller

Removes extern from DriverStatusKey

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoGet rid of InitSafeBootMode veto
Paul Durrant [Tue, 1 Mar 2016 14:16:52 +0000 (14:16 +0000)]
Get rid of InitSafeBootMode veto

This should no longer be necessary since XENVBD gracefully deactivates if
emulated devices are present, which they will be in safe mode.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoAdd POOL_NX_OPTIN=1 to all drivers
Owen Smith [Mon, 29 Feb 2016 16:51:55 +0000 (16:51 +0000)]
Add POOL_NX_OPTIN=1 to all drivers

Win10's verifier asserts that all non-paged pool allocations are
made from the non-paged no-execute pool

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoOverride PartMgr SanPolicy
Paul Durrant [Mon, 29 Feb 2016 10:20:50 +0000 (10:20 +0000)]
Override PartMgr SanPolicy

This patch makes sure that PartMgr's SanPolicy is 1 after XENVBD
installation, which means that newly plugged VBDs will come online as most
admins will expect.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoAvoid evaluating assertion expressions in free builds
Paul Durrant [Fri, 22 Jan 2016 17:08:59 +0000 (17:08 +0000)]
Avoid evaluating assertion expressions in free builds

The evaluations are pointless and the warnings generated by not evaluating
can be squashed with a couple of #pragmas.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoFixed improper SCSI UNMAP request implementation
Dave Buches [Fri, 22 Jan 2016 04:30:03 +0000 (20:30 -0800)]
Fixed improper SCSI UNMAP request implementation

The XenDisk disk class filter driver was generating requests
that did not adhere to the t10 SBC-3 SCSI specification for UNMAP
operations.  Specifically, the data length and block descriptor data
length fields were not populated properly per the spec.

Although the XenVBD miniport driver handled these malformed
requests correctly, it failed to handle *properly* formed requests,
which would result in unpredictable behavior.

Additionally, the XenDisk filter wasn't properly responding to
StorageDeviceTrimProperty queries per the MSDN spec. Specifically,
the DEVICE_TRIM_DESCRIPTOR::Version structure member needs to be set
to sizeof(DEVICE_TRIM_DESCRIPTOR).

Signed-off-by: David Buches <davebuch@amazon.com>
9 years agoUse correct FdoD0ToD3 function.
Mark Syms [Fri, 8 Jan 2016 11:50:22 +0000 (11:50 +0000)]
Use correct FdoD0ToD3 function.

Signed-off-by: Mark Syms <mark.syms@citrix.com>
9 years agoTurn off ASSERTions in free builds
Paul Durrant [Mon, 4 Jan 2016 15:33:42 +0000 (15:33 +0000)]
Turn off ASSERTions in free builds

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoDon't use C runtime version of toupper()
Paul Durrant [Thu, 10 Dec 2015 11:39:37 +0000 (11:39 +0000)]
Don't use C runtime version of toupper()

It seems that, despite its trivial functionality, the runtime implementation
insists on converting to Unicode! This means the function is actually only
safe at PASSIVE_LEVEL.
This patch implements __toupper() as a replacement with no such hidden
nastiness and modifies callers to use that.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoRemove BlockRing.Outstanding / BlockRingAbort
Owen Smith [Wed, 2 Dec 2015 15:16:49 +0000 (15:16 +0000)]
Remove BlockRing.Outstanding / BlockRingAbort

The BlockRing Outstanding stat is duplicated by SubmittedReqs.Count.
Remove BlockRing.Outstanding and the BlockRingAbort function as the
stat is not useful, and can trigger ASSERTion failures when requests
are stuck outstanding on a broken ring that is being destroyed.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoNULL the SuspendCallback context when going to D3...
Paul Durrant [Wed, 2 Dec 2015 15:31:27 +0000 (15:31 +0000)]
NULL the SuspendCallback context when going to D3...

...otherwise going back to D0 will hit an ASSERTion failure.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoFix SDV build
Paul Durrant [Wed, 25 Nov 2015 13:59:00 +0000 (13:59 +0000)]
Fix SDV build

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoPublish distribution information and hotplug capability to xenstore
Paul Durrant [Tue, 24 Nov 2015 17:47:59 +0000 (17:47 +0000)]
Publish distribution information and hotplug capability to xenstore

My recent patch series to Xen added a documented path and format for
publishing information about PV driver distributions and hotplug
capability to xenstore.

This patch adds code to populate the documented paths (should they exist)
with information about the XENVBD driver package and the driver's ability
to handle hotplug events.

Suggested-by: Owen Smith <owen.smith@citrix.com>
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoRework indirect context structure
Owen Smith [Tue, 27 Oct 2015 11:15:46 +0000 (11:15 +0000)]
Rework indirect context structure

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoAdd Get/Put for request, segment and indirect(pages)
Owen Smith [Tue, 27 Oct 2015 11:15:45 +0000 (11:15 +0000)]
Add Get/Put for request, segment and indirect(pages)

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoPrepare calls only need to return success/failure, not an error code
Owen Smith [Tue, 27 Oct 2015 11:15:44 +0000 (11:15 +0000)]
Prepare calls only need to return success/failure, not an error code

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoRefactor - move more functions
Owen Smith [Tue, 27 Oct 2015 11:15:43 +0000 (11:15 +0000)]
Refactor - move more functions

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoRemove PdoPnpSrb, since StorPort doesn't call for targets
Owen Smith [Tue, 27 Oct 2015 11:15:42 +0000 (11:15 +0000)]
Remove PdoPnpSrb, since StorPort doesn't call for targets

Signed-off-by: Owen Smith <owen.smith@citrix.com>
SRB_FUNCTION_PNP case removed.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoRefactor - hide default Pnp/Power function pointers
Owen Smith [Tue, 27 Oct 2015 11:15:41 +0000 (11:15 +0000)]
Refactor - hide default Pnp/Power function pointers

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoRefactor - reorder functions in pdo.c
Owen Smith [Tue, 27 Oct 2015 11:15:40 +0000 (11:15 +0000)]
Refactor - reorder functions in pdo.c

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoSRB_FUNCTION_RESET_DEVICE should succeed... otherwise the entire controller is reset.
Owen Smith [Tue, 27 Oct 2015 11:15:39 +0000 (11:15 +0000)]
SRB_FUNCTION_RESET_DEVICE should succeed... otherwise the entire controller is reset.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoKick notifier DPC directly.
Owen Smith [Thu, 22 Oct 2015 13:13:48 +0000 (14:13 +0100)]
Kick notifier DPC directly.

EVTCHN(Trigger, ...) was changed with the FiFo event channel
implementation, which led to a performance regression. Kicking
the notifier does not require triggering the local end of the
event channel, so shortcut this process by queueing the notifier
DPC directly.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoAdd a registry override to veto driver installations
Paul Durrant [Thu, 22 Oct 2015 14:55:20 +0000 (15:55 +0100)]
Add a registry override to veto driver installations

There are certain cases where a local installer package may wish to
prevent Windows Update installations of drivers. This can be achieved by
having the co-installer check for a registry value and fail it's pre-install
phase if the value is present.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoChange coinstaller log level to TXTLOG_WARNING
Paul Durrant [Thu, 22 Oct 2015 13:54:55 +0000 (14:54 +0100)]
Change coinstaller log level to TXTLOG_WARNING

Windows 10 does not enable logging of TXTLOG_DETAILS in setupapi.dev.log by
default, so use TXTLOG_WARNING to make sure the messages appear.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoParameterize vendor prefix and PCI device id
Paul Durrant [Tue, 8 Sep 2015 16:36:00 +0000 (17:36 +0100)]
Parameterize vendor prefix and PCI device id

The XenServer PV vendor prefix ('XS') and PCI device (C000) are still
hard-coded into the XENVBD package. These need to be stripped out and
replaced by values that can be customized at build time. This patch does
that.

The patch also reverts to building version.h and customizing xenvbd.inf
directly in build.py.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoUpdate to 8.2.0
Paul Durrant [Fri, 4 Sep 2015 15:18:49 +0000 (16:18 +0100)]
Update to 8.2.0

I also removed CHANGELOG as it's pretty useless and will likely become
misleading.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoClear unplug requests from co-installer 8.1.0-rc1
Paul Durrant [Thu, 3 Sep 2015 16:36:43 +0000 (17:36 +0100)]
Clear unplug requests from co-installer

When XENVBD is uninstalled there is no suitable notification in kernel
which can be used to clear any remaining unplug requests. This leads to
a certain 0x7B bugcheck on reboot. This patch therefore does the job
from the co-installer since this seems to be the only way.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoSimplify unplug request
Paul Durrant [Thu, 3 Sep 2015 16:22:35 +0000 (17:22 +0100)]
Simplify unplug request

Since the PDO driver in XENVBD's case is in-box, we don't need to defer
requesting emulated device unplug to when PDOs are started, we can do it
when the FDO is started.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoReduce the number of registered watches per target
Paul Durrant [Tue, 11 Aug 2015 08:09:01 +0000 (09:09 +0100)]
Reduce the number of registered watches per target

XENVBD registers watches for changes in various per-VBD backend quantities,
e.g. state. All these watches, however, trigger one common event and so it
is wasteful of the guest's watch quota. Instead register a single watch on
the backend key, which will fire if any key below it is modified. This may
cause the event to be set slightly more often, but saves 3 watches per
target.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoAdd missing parameter to log statement
Paul Durrant [Fri, 7 Aug 2015 16:57:40 +0000 (17:57 +0100)]
Add missing parameter to log statement

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoSet per-disk queue depth
Paul Durrant [Fri, 7 Aug 2015 16:03:16 +0000 (17:03 +0100)]
Set per-disk queue depth

Windows apparently defaults to a queue depth of 20, which is a bit on the
small side. This patch sets the value to the maximum possible, which is
apparently 254 instead of the documented 255.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoUpdate docs and set version to 8.1.0
Paul Durrant [Fri, 24 Jul 2015 11:49:44 +0000 (12:49 +0100)]
Update docs and set version to 8.1.0

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoFix build warning
Paul Durrant [Thu, 23 Jul 2015 14:18:35 +0000 (15:18 +0100)]
Fix build warning

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoRemove Relations->Count assertion
Paul Durrant [Thu, 23 Jul 2015 14:04:36 +0000 (15:04 +0100)]
Remove Relations->Count assertion

It's bogus in the case of block-detach

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoDon't drop FDO mutex between PDO enumeration and Relations Count check
Paul Durrant [Thu, 23 Jul 2015 11:11:19 +0000 (12:11 +0100)]
Don't drop FDO mutex between PDO enumeration and Relations Count check

A PDO can disappear between these two, leading to an assertion failure so
keep the lock held to stop the list from being changed.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoAdd missing unplug request
Paul Durrant [Wed, 22 Jul 2015 15:44:49 +0000 (16:44 +0100)]
Add missing unplug request

If a new target is enumerated during a device relations query then no
request is made for unplug, or reboot. This patch adds the necessary code
to rectify this issue.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoForce a re-enumeration of PDOs after filter destruction
Paul Durrant [Wed, 22 Jul 2015 12:25:11 +0000 (13:25 +0100)]
Force a re-enumeration of PDOs after filter destruction

If the underlying PDO has not gone away then we need to create a fresh
filter object.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoRemove interface subscription and unplug code from the co-installed...
Paul Durrant [Mon, 20 Jul 2015 09:02:58 +0000 (10:02 +0100)]
Remove interface subscription and unplug code from the co-installed...

...and use the new XENBUS_UNPLUG interface to request unplug.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoIgnore failures when closing the frontend
Paul Durrant [Fri, 10 Jul 2015 16:29:23 +0000 (17:29 +0100)]
Ignore failures when closing the frontend

The backend may disappear when this happens but we must always carry on
and disconnect the frontend regardless.

From: Owen Smith <owen.smith@citrix.com>
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoRemove PDO set/is-missing logic from XENDISK
Paul Durrant [Fri, 10 Jul 2015 16:09:13 +0000 (17:09 +0100)]
Remove PDO set/is-missing logic from XENDISK

It's all completely unnecessary for a filter driver

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoUse inline functions to acquire/release FDO mutex...
Paul Durrant [Wed, 8 Jul 2015 17:04:59 +0000 (18:04 +0100)]
Use inline functions to acquire/release FDO mutex...

...rather then open-coded acquires and releases.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoREMOVE_DEVICE must set device to Deleted
Owen Smith [Mon, 29 Jun 2015 13:45:53 +0000 (14:45 +0100)]
REMOVE_DEVICE must set device to Deleted

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoFix target enumeration
Owen Smith [Mon, 29 Jun 2015 10:13:50 +0000 (11:13 +0100)]
Fix target enumeration

Issues were found when enumeration races with plug/unplug. This patch
should fix these problems.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoUpdate bindings
Paul Durrant [Wed, 8 Jul 2015 13:36:06 +0000 (14:36 +0100)]
Update bindings

Refresh the interface headers and add the XENBUS major version into
the top byte of the revision, since this is now used to avoid namespace
conflicts.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoAccount for rewinding requests
Owen Smith [Mon, 15 Jun 2015 11:05:19 +0000 (12:05 +0100)]
Account for rewinding requests

When requests are rewound to the fresh queue during resume from suspend,
decrement the Outstanding stat so that an ASSERT is not triggered.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoFix device relations in xendisk filter
Paul Durrant [Mon, 15 Jun 2015 11:10:45 +0000 (12:10 +0100)]
Fix device relations in xendisk filter

Incorrect handling breaks device removal. The crucial point is that a
PDO in the case of a filter should always disappear when an
IRP_MN_REMOVE_DEVICE comes down the stack. It does not need to stick around
in some cases, like a true PDO.

Signed-off-by: Ghiya, Murtaza <murtazg@amazon.com>
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
9 years agoFix ASSERT
Owen Smith [Thu, 11 Jun 2015 11:30:31 +0000 (12:30 +0100)]
Fix ASSERT

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoFix ASSERT, s/Recieved/Received
Owen Smith [Thu, 11 Jun 2015 11:30:30 +0000 (12:30 +0100)]
Fix ASSERT, s/Recieved/Received

Signed-off-by: Owen Smith <owen.smith@citrix.com>
9 years agoCalculate size of DEVICE_RELATIONS
Owen Smith [Thu, 11 Jun 2015 11:30:29 +0000 (12:30 +0100)]
Calculate size of DEVICE_RELATIONS

Signed-off-by: Owen Smith <owen.smith@citrix.com>
10 years agoSet script file execute permissions
Paul Durrant [Thu, 12 Mar 2015 11:33:00 +0000 (11:33 +0000)]
Set script file execute permissions

The lack of execute persmission causes clones done using cygwin git to
leave scripts in a non-executable state.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoA further VS2013 SDV fix
Paul Durrant [Tue, 3 Mar 2015 10:28:33 +0000 (10:28 +0000)]
A further VS2013 SDV fix

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoFix VS2013 SDV failures
Paul Durrant [Mon, 2 Mar 2015 17:25:57 +0000 (17:25 +0000)]
Fix VS2013 SDV failures

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoFix austere allocator when small heap list head is NULL
Owen Smith [Wed, 25 Feb 2015 15:05:12 +0000 (15:05 +0000)]
Fix austere allocator when small heap list head is NULL

Signed-off-by: Owen Smith <owen.smith@citrix.com>
10 years agoAttempt to reset event channel ABI to 2-Layer
Owen Smith [Wed, 25 Feb 2015 15:05:11 +0000 (15:05 +0000)]
Attempt to reset event channel ABI to 2-Layer

Signed-off-by: Owen Smith <owen.smith@citrix.com>
10 years agoFix HvmGetParameter/HvmSetParameter
Owen Smith [Wed, 25 Feb 2015 15:05:10 +0000 (15:05 +0000)]
Fix HvmGetParameter/HvmSetParameter

Signed-off-by: Owen Smith <owen.smith@citrix.com>
10 years agoMake sure we only use the first 32 (-8) grant entries for crash kernel
Paul Durrant [Tue, 24 Feb 2015 11:50:38 +0000 (11:50 +0000)]
Make sure we only use the first 32 (-8) grant entries for crash kernel

XENBUS only uses grant entries 32 onwards so that the first 32 (minus the 8
reserved entries) are clean for the crash kernel. This patch makes sure that
the crash kernel does not go over that limit.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoInsertion into head of austere heap misses setting reverse link
Paul Durrant [Fri, 30 Jan 2015 13:44:42 +0000 (13:44 +0000)]
Insertion into head of austere heap misses setting reverse link

The heap is maintained as a doubly linked list of objects but both
__AllocSmall() and __FreeSmall() are missing setup of the reverse link when
a new object is inserted at the head. This patch adds the necessary fix.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Reported-by: Gregory Jacklin <jackling@amazon.com>
10 years agoUpdate to EVTCHN version 3
Paul Durrant [Fri, 30 Jan 2015 13:21:56 +0000 (13:21 +0000)]
Update to EVTCHN version 3

Take the opportunity to refresh all imported headers though as there's a
small doxygen tweak in each of them too.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoProtect BackendPath from race using StateLock
Ben Chalmers [Tue, 20 Jan 2015 14:27:19 +0000 (14:27 +0000)]
Protect BackendPath from race using StateLock

The BackendPath can change as part of PDO state transitions, leading
to a race with the frontend thread.  Since the frontend state lock is
locked through state transitions, taking the lock is sufficient to
avoid the race

Signed-off-by: Ben Chalmers <Ben.Chalmers@citrix.com>
10 years agoIgnore invalid devices
Owen Smith [Tue, 20 Jan 2015 13:54:01 +0000 (13:54 +0000)]
Ignore invalid devices

When a floppy drive is attached, the device id string cannot be parsed
into a valid xvd, sd? or hd? format. Report the error instead of asserting
and return the invalid value to ignore the device in question.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
10 years agoMove interface subscription code into co-installer
Paul Durrant [Tue, 13 Jan 2015 17:53:28 +0000 (17:53 +0000)]
Move interface subscription code into co-installer

Interface subscription is better handled at package installation time and
therefore the co-installer is the right place for it to live.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoHandle storage query ioctls properly
Paul Durrant [Thu, 8 Jan 2015 13:44:15 +0000 (13:44 +0000)]
Handle storage query ioctls properly

Both the ioctls we care about are METHOD_BUFFERED so ASSERT that and then
use the associated IRP SystemBuffer, remembering to verify input and output
sizes.
Also we should only return (or expect returned) data in the case of a full
query, as opposed to an existence query.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoMake sure INF gets re-built each time
Paul Durrant [Fri, 19 Dec 2014 15:43:40 +0000 (15:43 +0000)]
Make sure INF gets re-built each time

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoMake sure version header gets re-built each time
Paul Durrant [Fri, 19 Dec 2014 13:14:32 +0000 (13:14 +0000)]
Make sure version header gets re-built each time

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoAdd XenDisk device upper filter.
Owen Smith [Tue, 28 Oct 2014 11:27:24 +0000 (11:27 +0000)]
Add XenDisk device upper filter.

XenDisk intercepts and translates IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES
into SCSIOP_UNMAP SRBs. Storport will pass on these SCSIOP_UNMAP requests
to XenVbd, which will create the appropriate BLKIF_OP_DISCARD requests.
XenDisk is only neccessary because Storport does not do the translation
to SCSIOP_UNMAPs.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
Acked-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoRun XenVbd SDV after XenCrsh SDV
Owen Smith [Tue, 28 Oct 2014 11:27:23 +0000 (11:27 +0000)]
Run XenVbd SDV after XenCrsh SDV

XenVbd's SDV build requires output from XenCrsh's SDV build.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
Acked-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoPrepare SCSIOP_UNMAP correctly
Owen Smith [Tue, 28 Oct 2014 11:27:22 +0000 (11:27 +0000)]
Prepare SCSIOP_UNMAP correctly

SCSIOP_UNMAP requests contain a list of extents to discard
and each BLKIF_OP_DISCARD only handles a single extent.
Break a SRB doen into multiple ring requests as necessary.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
Acked-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoReduce spam from build.py
Paul Durrant [Thu, 25 Sep 2014 15:17:01 +0000 (16:17 +0100)]
Reduce spam from build.py

We don't the verbose prints when deciding whether we're using vs2012 or 2013.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoDon't use universal_newlines=True in subprocess.Popen()
Paul Durrant [Thu, 25 Sep 2014 14:06:31 +0000 (15:06 +0100)]
Don't use universal_newlines=True in subprocess.Popen()

For some versions of python this appears to cause corruption of the
output byte string by forcibly decoding with the wrong encoding.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoRe-read features after Connect
Owen Smith [Thu, 4 Sep 2014 08:28:05 +0000 (09:28 +0100)]
Re-read features after Connect

blkback incorrectly writes features before setting Connected instead
of before setting InitWait. Re-read these values after backend goes
Connected, to get the current value.
Note: Some values *must* be written before setting Connected, as
blkback can only discover these values by connecting to the underlying
storage.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
10 years agoFix BLKIF_OP_INDIRECT protocol requests
Owen Smith [Thu, 4 Sep 2014 08:19:40 +0000 (09:19 +0100)]
Fix BLKIF_OP_INDIRECT protocol requests

Fixes an issue with indirect requests that arose due to changes in
XenBus's (7.x) grant table interface (v3 to v4). Refactored for the
8.0 version of XenBus.

Rework internal request structures to contain a list of segments.
Number of segments determines the difference between direct and
indirect operations.
blkback is limited to 256 segments per indirect request, XenVbd
reports support for 175 physical breaks (i.e. segments).

Signed-off-by: Owen Smith <owen.smith@citrix.com>
10 years agoAdd support for Visual Studio 2013 & WDK 8.1
Ben Chalmers [Fri, 22 Aug 2014 15:05:27 +0000 (16:05 +0100)]
Add support for Visual Studio 2013 & WDK 8.1

Signed-off-by: Ben Chalmers <ben.chalmers@citrix.com>
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoActually put 8.0.0 in the CHANGELOG rather than just saying I did
Paul Durrant [Fri, 15 Aug 2014 08:43:50 +0000 (09:43 +0100)]
Actually put 8.0.0 in the CHANGELOG rather than just saying I did

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoUpdate branding
Paul Durrant [Thu, 14 Aug 2014 16:46:39 +0000 (17:46 +0100)]
Update branding

Remove the use of the 'XenServer' product name except where it is
still appropriate.
Remove use of 'Citrix' from all places except source file
copyrights.
Allow company and product name to be set at build time.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoImplement new API version scheme
Paul Durrant [Wed, 23 Jul 2014 08:40:54 +0000 (09:40 +0100)]
Implement new API version scheme

This patch changes the way APIs work in an incompatible way. (See README.md
for details).
The patch also includes a *lot* of code tidying and movement and as such
is not really suitable for review as a patch; the resulting code should
itself be reviewed.
Given the scale of the change, the major version number has been revised to
8 and other version numbers reset to zero.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
10 years agoMerge pull request #34 from OwenSmith/fix-reset
Ben Chalmers [Fri, 20 Jun 2014 08:59:35 +0000 (09:59 +0100)]
Merge pull request #34 from OwenSmith/fix-reset

Fix reset

Approved-By: Ben.Chalmers@citrix.com
10 years agoAdd extra state to frontend transition to allow reset to cleanup
Owen Smith [Thu, 19 Jun 2014 14:35:34 +0000 (15:35 +0100)]
Add extra state to frontend transition to allow reset to cleanup
requests after CLOSED transition but before disconnecting granter

Signed-off-by: Owen Smith <owen.smith@citrix.com>
10 years agoCleanup PreparedReqs before closing the ring
Owen Smith [Wed, 18 Jun 2014 13:38:37 +0000 (14:38 +0100)]
Cleanup PreparedReqs before closing the ring

To unprepare reqs, the granter is required, which can only operate
when the frontend is connected.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
10 years agoForce calling BlockRingPoll as DPC may not run.
Owen Smith [Wed, 18 Jun 2014 13:21:39 +0000 (14:21 +0100)]
Force calling BlockRingPoll as DPC may not run.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
10 years agoMerge pull request #33 from OwenSmith/coinstaller-disk-timeout
Paul Durrant [Wed, 18 Jun 2014 08:29:12 +0000 (09:29 +0100)]
Merge pull request #33 from OwenSmith/coinstaller-disk-timeout

Coinstaller disk timeout

10 years agoFix service key name
Owen Smith [Tue, 17 Jun 2014 15:29:17 +0000 (16:29 +0100)]
Fix service key name

Signed-off-by: Owen Smith <owen.smith@citrix.com>
10 years agoIncrease disk timeout during co-installer to a minimum of 120 seconds
Owen Smith [Tue, 17 Jun 2014 14:19:45 +0000 (15:19 +0100)]
Increase disk timeout during co-installer to a minimum of 120 seconds
to match timeout in backend(s)

Signed-off-by: Owen Smith <owen.smith@citrix.com>
10 years agoMerge pull request #32 from OwenSmith/pdoreset
Paul Durrant [Thu, 12 Jun 2014 11:33:09 +0000 (12:33 +0100)]
Merge pull request #32 from OwenSmith/pdoreset

Prevent an assertion by triggering the DPC to poll frontend during pause...

10 years agoPrevent an assertion by triggering the DPC to poll frontend during pause.
Owen Smith [Thu, 12 Jun 2014 11:26:06 +0000 (12:26 +0100)]
Prevent an assertion by triggering the DPC to poll frontend during pause.

Signed-off-by: Owen Smith <owen.smith@citrix.com>