[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 02/23] block: allow filenames with colons again for
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 02/23] block: allow filenames with colons again for host devices |
Date: |
Fri, 2 Jul 2010 18:38:11 +0200 |
From: Christoph Hellwig <address@hidden>
Before the raw/file split we used to allow filenames with colons for host
device only. While this was more by accident than by design people rely
on it, so we need to bring it back.
So move the host device probing to be before the protocol detection
again.
Signed-off-by: Christoph Hellwig <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
block.c | 29 ++++++++++++++++++-----------
1 files changed, 18 insertions(+), 11 deletions(-)
diff --git a/block.c b/block.c
index e71a771..0aaec3b 100644
--- a/block.c
+++ b/block.c
@@ -288,23 +288,30 @@ BlockDriver *bdrv_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 */
+ /*
+ * XXX(hch): we really should not let host device detection
+ * override an explicit protocol specification, but moving this
+ * later breaks access to device names with colons in them.
+ * Thanks to the brain-dead persistent naming schemes on udev-
+ * based Linux systems those actually are quite common.
+ */
+ drv1 = find_hdev_driver(filename);
+ if (drv1) {
+ return drv1;
+ }
+
#ifdef _WIN32
- is_drive = is_windows_drive(filename) ||
- is_windows_drive_prefix(filename);
-#else
- is_drive = 0;
+ if (is_windows_drive(filename) ||
+ is_windows_drive_prefix(filename))
+ return bdrv_find_format("file");
#endif
+
p = strchr(filename, ':');
- if (!p || is_drive) {
- drv1 = find_hdev_driver(filename);
- if (!drv1) {
- drv1 = bdrv_find_format("file");
- }
- return drv1;
+ if (!p) {
+ return bdrv_find_format("file");
}
len = p - filename;
if (len > sizeof(protocol) - 1)
--
1.6.6.1
- [Qemu-devel] [PULL 00/23] Block patches, Kevin Wolf, 2010/07/02
- [Qemu-devel] [PATCH 01/23] qcow2: Fix error handling during metadata preallocation, Kevin Wolf, 2010/07/02
- [Qemu-devel] [PATCH 02/23] block: allow filenames with colons again for host devices,
Kevin Wolf <=
- [Qemu-devel] [PATCH 03/23] scsi: scsi_bus_legacy_handle_cmdline() can fail, fix callers, Kevin Wolf, 2010/07/02
- [Qemu-devel] [PATCH 06/23] Don't reset bs->is_temporary in bdrv_open_common, Kevin Wolf, 2010/07/02
- [Qemu-devel] [PATCH 10/23] blockdev: drive_get_by_id() is no longer used, remove, Kevin Wolf, 2010/07/02
- [Qemu-devel] [PATCH 11/23] block: Catch attempt to attach multiple devices to a blockdev, Kevin Wolf, 2010/07/02
- [Qemu-devel] [PATCH 19/23] ide: Make PIIX and ISA IDE init functions return the qdev, Kevin Wolf, 2010/07/02
- [Qemu-devel] [PATCH 20/23] pc: Fix CMOS info for drives defined with -device, Kevin Wolf, 2010/07/02
- [Qemu-devel] [PATCH 22/23] block: Fix early failure in multiwrite, Kevin Wolf, 2010/07/02
- [Qemu-devel] [PATCH 23/23] block: Handle multiwrite errors only when all requests have completed, Kevin Wolf, 2010/07/02
- [Qemu-devel] [PATCH 21/23] qemu-img: avoid calling exit(1) to release resources properly, Kevin Wolf, 2010/07/02
- [Qemu-devel] [PATCH 15/23] blkdebug: Initialize state as 1, Kevin Wolf, 2010/07/02