[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[win-pv-devel] [PATCH] Force SectorSize to 512



Bad things happen when the backend tries to indicate 4k sectors.
4k sectors will not fit into the block protocol, and some backends
pass sector-size as 4k, but the sector count in 512b. Force sector
size to 512, and warn when the backend is attempring to use 4k
sectors.

Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
 src/xendisk/pdo.c     | 4 ++++
 src/xenvbd/frontend.c | 5 +++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/xendisk/pdo.c b/src/xendisk/pdo.c
index 07f4cfd..d927834 100644
--- a/src/xendisk/pdo.c
+++ b/src/xendisk/pdo.c
@@ -348,6 +348,10 @@ __PdoQueryProperty(
 
     Descriptor = Irp->AssociatedIrp.SystemBuffer;
     Pdo->SectorSize = Descriptor->BytesPerLogicalSector;
+    if (Pdo->SectorSize != 512) {
+        Error("%p : %u bytes per sector is invalid\n", Pdo->Dx->DeviceObject, 
Pdo->SectorSize);
+        Pdo->SectorSize = 512;
+    }
     Verbose("%p : %u bytes per sector\n", Pdo->Dx->DeviceObject, 
Pdo->SectorSize);
 
 done:
diff --git a/src/xenvbd/frontend.c b/src/xenvbd/frontend.c
index 94e7f5b..85a03f8 100644
--- a/src/xenvbd/frontend.c
+++ b/src/xenvbd/frontend.c
@@ -749,8 +749,9 @@ __ReadDiskInfo(
     if (Frontend->DiskInfo.DiskInfo & VDISK_CDROM) {
         Warning("Target[%d] : DiskInfo contains VDISK_CDROM flag!\n", 
Frontend->TargetId);
     }
-    if (Frontend->DiskInfo.SectorSize == 0) {
-        Error("Target[%d] : Invalid SectorSize!\n", Frontend->TargetId);
+    if (Frontend->DiskInfo.SectorSize != 512) {
+        Error("Target[%d] : Invalid SectorSize (%u)!\n", Frontend->TargetId, 
Frontend->DiskInfo.SectorSize);
+        Frontend->DiskInfo.SectorSize = 512;
     }
     if (Frontend->DiskInfo.SectorCount == 0) {
         Error("Target[%d] : Invalid SectorCount!\n", Frontend->TargetId);
-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.