[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [win-pv-devel] [PATCH] Add registry overrides for features (v2)
> -----Original Message----- > From: Martin Cerveny [mailto:martin@xxxxxxxxx] > Sent: 03 February 2017 19:41 > To: Paul Durrant <Paul.Durrant@xxxxxxxxxx> > Cc: Owen Smith <owen.smith@xxxxxxxxxx>; win-pv- > devel@xxxxxxxxxxxxxxxxxxxx > Subject: Re: [win-pv-devel] [PATCH] Add registry overrides for features (v2) > > Hello. > > What is difference between this patch > >>> "HKLM\System\CCS\Services\XenVbd\Parameters" "feature-discard" 0 > >>> will prevent the frontend issuing BLKIF_OP_DISCARDs > > and patch 76ac7c5 ? > [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\xenvbd\Para > meters] > "InterceptTrim"=dword:00000000 > Well actually I think you meant: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\xendisk\Parameters] "InterceptTrim"=dword:00000000 (since xenvbd would ignore that parameter) You are correct that this would have the same effect in the case of trim requested, but Owen's patch also allows other features to be overridden, such as indirect and flush, so it is more general... which is the reason I decided to back-port it into staging-8.2. Cheers, Paul > Thanks, Martin Cerveny > > On Fri, 3 Feb 2017, Paul Durrant wrote: > > >> -----Original Message----- > >> From: win-pv-devel [mailto:win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx] > On > >> Behalf Of Paul Durrant > >> Sent: 03 February 2017 12:42 > >> To: Owen Smith <owen.smith@xxxxxxxxxx>; win-pv- > >> devel@xxxxxxxxxxxxxxxxxxxx > >> Cc: Owen Smith <owen.smith@xxxxxxxxxx> > >> Subject: Re: [win-pv-devel] [PATCH] Add registry overrides for features > (v2) > >> > >>> -----Original Message----- > >>> From: win-pv-devel [mailto:win-pv-devel- > bounces@xxxxxxxxxxxxxxxxxxxx] > >> On > >>> Behalf Of owen.smith@xxxxxxxxxx > >>> Sent: 03 February 2017 12:39 > >>> To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx > >>> Cc: Owen Smith <owen.smith@xxxxxxxxxx> > >>> Subject: [win-pv-devel] [PATCH] Add registry overrides for features (v2) > >>> > >>> From: Owen Smith <owen.smith@xxxxxxxxxx> > >>> > >>> * Add a REG_DWORD to XenVbd's Parameters key, with names based > >>> on the features, as per xenstore value, and set to 0 to > >>> override use of that feature. > >>> > >>> Changes over v1: > >>> * removed check on DriverGerParametersKey() return value, as its > >>> guaranteed to be valid (failure to get the key results in > >>> DriverEntry failing) > >>> > >>> For example, > >>> "HKLM\System\CCS\Services\XenVbd\Parameters" "feature-barrier" 0 > >>> will prevent the frontend issuing BLKIF_OP_WRITE_BARRIERs > >>> "HKLM\System\CCS\Services\XenVbd\Parameters" "feature-discard" 0 > >>> will prevent the frontend issuing BLKIF_OP_DISCARDs > >>> > >>> Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> > >> > >> LGTM. > >> > >> Acked-by: Paul Durrant <paul.durrant@xxxxxxxxxx> > >> > > > > Now that it has built I'm also going to cherry-pick this back onto > > staging-8.2 > as it should be very useful. > > > > Paul > > > >>> --- > >>> src/xenvbd/driver.c | 16 ++++++++++++++++ > >>> src/xenvbd/driver.h | 5 +++++ > >>> src/xenvbd/frontend.c | 29 +++++++++++++++++++++++++++++ > >>> 3 files changed, 50 insertions(+) > >>> > >>> diff --git a/src/xenvbd/driver.c b/src/xenvbd/driver.c > >>> index 114c740..1f713c4 100644 > >>> --- a/src/xenvbd/driver.c > >>> +++ b/src/xenvbd/driver.c > >>> @@ -82,6 +82,22 @@ __DriverParseOption( > >>> RegistryFreeSzValue(Option); > >>> } > >>> > >>> +static FORCEINLINE HANDLE > >>> +__DriverGetParametersKey( > >>> + VOID > >>> + ) > >>> +{ > >>> + return Driver.ParametersKey; > >>> +} > >>> + > >>> +HANDLE > >>> +DriverGetParametersKey( > >>> + VOID > >>> + ) > >>> +{ > >>> + return __DriverGetParametersKey(); > >>> +} > >>> + > >>> NTSTATUS > >>> DriverDispatchPnp( > >>> IN PDEVICE_OBJECT DeviceObject, > >>> diff --git a/src/xenvbd/driver.h b/src/xenvbd/driver.h > >>> index cf55330..e7730a9 100644 > >>> --- a/src/xenvbd/driver.h > >>> +++ b/src/xenvbd/driver.h > >>> @@ -57,6 +57,11 @@ typedef struct _XENVBD_PARAMETERS { > >>> > >>> extern XENVBD_PARAMETERS DriverParameters; > >>> > >>> +extern HANDLE > >>> +DriverGetParametersKey( > >>> + VOID > >>> + ); > >>> + > >>> extern NTSTATUS > >>> DriverDispatchPnp( > >>> IN PDEVICE_OBJECT DeviceObject, > >>> diff --git a/src/xenvbd/frontend.c b/src/xenvbd/frontend.c > >>> index 11e9121..e65a3b0 100644 > >>> --- a/src/xenvbd/frontend.c > >>> +++ b/src/xenvbd/frontend.c > >>> @@ -30,6 +30,7 @@ > >>> */ > >>> > >>> #include "frontend.h" > >>> +#include "registry.h" > >>> #include "driver.h" > >>> #include "fdo.h" > >>> #include "pdoinquiry.h" > >>> @@ -621,6 +622,7 @@ FrontendReadFeature( > >>> { > >>> NTSTATUS status; > >>> PCHAR Buffer; > >>> + ULONG Override; > >>> BOOLEAN Old = *Value; > >>> > >>> status = XENBUS_STORE(Read, > >>> @@ -637,6 +639,15 @@ FrontendReadFeature( > >>> Frontend->Store, > >>> Buffer); > >>> > >>> + // check registry for disable-override > >>> + status = RegistryQueryDwordValue(DriverGetParametersKey(), > >>> + Name, > >>> + &Override); > >>> + if (NT_SUCCESS(status)) { > >>> + if (Override == 0) > >>> + *Value = FALSE; > >>> + } > >>> + > >>> return Old != *Value; > >>> } > >>> > >>> @@ -644,11 +655,13 @@ static FORCEINLINE BOOLEAN > >>> FrontendReadValue32( > >>> IN PXENVBD_FRONTEND Frontend, > >>> IN PCHAR Name, > >>> + IN BOOLEAN AllowOverride, > >>> IN PULONG Value > >>> ) > >>> { > >>> NTSTATUS status; > >>> PCHAR Buffer; > >>> + ULONG Override; > >>> ULONG Old = *Value; > >>> > >>> status = XENBUS_STORE(Read, > >>> @@ -665,6 +678,16 @@ FrontendReadValue32( > >>> Frontend->Store, > >>> Buffer); > >>> > >>> + // check registry for disable-override > >>> + if (AllowOverride) { > >>> + status = RegistryQueryDwordValue(DriverGetParametersKey(), > >>> + Name, > >>> + &Override); > >>> + if (NT_SUCCESS(status)) { > >>> + *Value = Override; > >>> + } > >>> + } > >>> + > >>> return Old != *Value; > >>> } > >>> > >>> @@ -727,12 +750,15 @@ __ReadDiskInfo( > >>> > >>> Changed |= FrontendReadValue32(Frontend, > >>> "info", > >>> + FALSE, > >>> &Frontend->DiskInfo.DiskInfo); > >>> Changed |= FrontendReadValue32(Frontend, > >>> "sector-size", > >>> + FALSE, > >>> &Frontend->DiskInfo.SectorSize); > >>> Changed |= FrontendReadValue32(Frontend, > >>> "physical-sector-size", > >>> + FALSE, > >>> &Frontend->DiskInfo.PhysSectorSize); > >>> Changed |= FrontendReadValue64(Frontend, > >>> "sectors", > >>> @@ -780,6 +806,7 @@ FrontendReadFeatures( > >>> &Frontend->Caps.Removable); > >>> Changed |= FrontendReadValue32(Frontend, > >>> "feature-max-indirect-segments", > >>> + TRUE, > >>> &Frontend->Features.Indirect); > >>> Changed |= FrontendReadFeature(Frontend, > >>> "feature-persistent", > >>> @@ -821,9 +848,11 @@ FrontendReadDiskInfo( > >>> &Frontend->DiskInfo.DiscardSecure); > >>> Changed |= FrontendReadValue32(Frontend, > >>> "discard-alignment", > >>> + TRUE, > >>> &Frontend->DiskInfo.DiscardAlignment); > >>> Changed |= FrontendReadValue32(Frontend, > >>> "discard-granularity", > >>> + TRUE, > >>> > >>> &Frontend->DiskInfo.DiscardGranularity); > >>> > >>> if (!Changed) > >>> -- > >>> 2.8.3 > >>> > >>> > >>> _______________________________________________ > >>> win-pv-devel mailing list > >>> win-pv-devel@xxxxxxxxxxxxxxxxxxxx > >>> https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel > >> _______________________________________________ > >> win-pv-devel mailing list > >> win-pv-devel@xxxxxxxxxxxxxxxxxxxx > >> https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel > > _______________________________________________ > > win-pv-devel mailing list > > win-pv-devel@xxxxxxxxxxxxxxxxxxxx > > https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel > > _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |