Patchwork block: Fix protocol detection for Windows devices

login
register
mail settings
Submitter Kevin Wolf
Date May 6, 2010, 12:56 p.m.
Message ID <1273150598-1749-1-git-send-email-kwolf@redhat.com>
Download mbox | patch
Permalink /patch/51828/
State New
Headers show

Comments

Kevin Wolf - May 6, 2010, 12:56 p.m.
We can't assume the file protocol for Windows devices, they need the same
detection as other files for which an explicit protocol is not specified.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)
Christoph Hellwig - May 6, 2010, 7:52 p.m.
On Thu, May 06, 2010 at 02:56:38PM +0200, Kevin Wolf wrote:
> We can't assume the file protocol for Windows devices, they need the same
> detection as other files for which an explicit protocol is not specified.

Looks good,


Reviewed-by: Christoph Hellwig <hch@lst.de>

Patch

diff --git a/block.c b/block.c
index 10a2b31..adb3e5d 100644
--- a/block.c
+++ b/block.c
@@ -287,16 +287,18 @@  static BlockDriver *find_protocol(const char *filename)
     char protocol[128];
     int len;
     const char *p;
+    int is_drive;
 
     /* TODO Drivers without bdrv_file_open must be specified explicitly */
 
 #ifdef _WIN32
-    if (is_windows_drive(filename) ||
-        is_windows_drive_prefix(filename))
-        return bdrv_find_format("file");
+    is_drive = is_windows_drive(filename) ||
+        is_windows_drive_prefix(filename);
+#else
+    is_drive = 0;
 #endif
     p = strchr(filename, ':');
-    if (!p) {
+    if (!p || is_drive) {
         drv1 = find_hdev_driver(filename);
         if (!drv1) {
             drv1 = bdrv_find_format("file");