diff mbox

[05/10] block: Reuse reference handling from bdrv_open()

Message ID 1390762963-25538-6-git-send-email-mreitz@redhat.com
State New
Headers show

Commit Message

Max Reitz Jan. 26, 2014, 7:02 p.m. UTC
Remove the reference parameter and the related handling code from
bdrv_file_open(), since it exists in bdrv_open() now as well.

Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 block.c | 33 +++++++--------------------------
 1 file changed, 7 insertions(+), 26 deletions(-)

Comments

Benoît Canet Jan. 27, 2014, 2:56 a.m. UTC | #1
Le Sunday 26 Jan 2014 à 20:02:38 (+0100), Max Reitz a écrit :
> Remove the reference parameter and the related handling code from
> bdrv_file_open(), since it exists in bdrv_open() now as well.
> 
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>  block.c | 33 +++++++--------------------------
>  1 file changed, 7 insertions(+), 26 deletions(-)
> 
> diff --git a/block.c b/block.c
> index c7219cb..6c29115 100644
> --- a/block.c
> +++ b/block.c
> @@ -948,8 +948,7 @@ free_and_fail:
>   * dictionary, it needs to use QINCREF() before calling bdrv_file_open.
>   */
>  static int bdrv_file_open(BlockDriverState **pbs, const char *filename,
> -                          const char *reference, QDict *options, int flags,
> -                          Error **errp)
> +                          QDict *options, int flags, Error **errp)
>  {
>      BlockDriverState *bs = NULL;
>      BlockDriver *drv;
> @@ -958,24 +957,6 @@ static int bdrv_file_open(BlockDriverState **pbs, const char *filename,
>      Error *local_err = NULL;
>      int ret;
>  
> -    if (reference) {
> -        if (filename || qdict_size(options)) {
> -            error_setg(errp, "Cannot reference an existing block device with "
> -                       "additional options or a new filename");
> -            return -EINVAL;
> -        }
> -        QDECREF(options);
> -
> -        bs = bdrv_find(reference);
> -        if (!bs) {
> -            error_setg(errp, "Cannot find block device '%s'", reference);
> -            return -ENODEV;
> -        }
> -        bdrv_ref(bs);
> -        *pbs = bs;
> -        return 0;
> -    }
> -
>      bs = bdrv_new("");
>      bs->options = options;
>      options = qdict_clone_shallow(options);
> @@ -1228,12 +1209,6 @@ int bdrv_open(BlockDriverState **pbs, const char *filename,
>          options = qdict_new();
>      }
>  
> -    if (flags & BDRV_O_PROTOCOL) {
> -        assert(!drv);
> -        return bdrv_file_open(pbs, filename, reference, options,
> -                              flags & ~BDRV_O_PROTOCOL, errp);
> -    }
> -
>      if (reference) {
>          bool options_non_empty = qdict_size(options);
>          QDECREF(options);
> @@ -1260,6 +1235,12 @@ int bdrv_open(BlockDriverState **pbs, const char *filename,
>          return 0;
>      }
>  
> +    if (flags & BDRV_O_PROTOCOL) {
> +        assert(!drv);
> +        return bdrv_file_open(pbs, filename, options, flags & ~BDRV_O_PROTOCOL,
> +                              errp);
> +    }
> +
>      if (*pbs) {
>          bs = *pbs;
>      } else {
> -- 
> 1.8.5.3
> 
> 
Reviewed-by: Benoit Canet <benoit@irqsave.net>
diff mbox

Patch

diff --git a/block.c b/block.c
index c7219cb..6c29115 100644
--- a/block.c
+++ b/block.c
@@ -948,8 +948,7 @@  free_and_fail:
  * dictionary, it needs to use QINCREF() before calling bdrv_file_open.
  */
 static int bdrv_file_open(BlockDriverState **pbs, const char *filename,
-                          const char *reference, QDict *options, int flags,
-                          Error **errp)
+                          QDict *options, int flags, Error **errp)
 {
     BlockDriverState *bs = NULL;
     BlockDriver *drv;
@@ -958,24 +957,6 @@  static int bdrv_file_open(BlockDriverState **pbs, const char *filename,
     Error *local_err = NULL;
     int ret;
 
-    if (reference) {
-        if (filename || qdict_size(options)) {
-            error_setg(errp, "Cannot reference an existing block device with "
-                       "additional options or a new filename");
-            return -EINVAL;
-        }
-        QDECREF(options);
-
-        bs = bdrv_find(reference);
-        if (!bs) {
-            error_setg(errp, "Cannot find block device '%s'", reference);
-            return -ENODEV;
-        }
-        bdrv_ref(bs);
-        *pbs = bs;
-        return 0;
-    }
-
     bs = bdrv_new("");
     bs->options = options;
     options = qdict_clone_shallow(options);
@@ -1228,12 +1209,6 @@  int bdrv_open(BlockDriverState **pbs, const char *filename,
         options = qdict_new();
     }
 
-    if (flags & BDRV_O_PROTOCOL) {
-        assert(!drv);
-        return bdrv_file_open(pbs, filename, reference, options,
-                              flags & ~BDRV_O_PROTOCOL, errp);
-    }
-
     if (reference) {
         bool options_non_empty = qdict_size(options);
         QDECREF(options);
@@ -1260,6 +1235,12 @@  int bdrv_open(BlockDriverState **pbs, const char *filename,
         return 0;
     }
 
+    if (flags & BDRV_O_PROTOCOL) {
+        assert(!drv);
+        return bdrv_file_open(pbs, filename, options, flags & ~BDRV_O_PROTOCOL,
+                              errp);
+    }
+
     if (*pbs) {
         bs = *pbs;
     } else {