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

[Xen-devel] [PATCH 2/2] xen/blkback: Make optional features be really optional.



They were using the xenbus_dev_fatal() function which would
change the state of the connection immediately. Which is not
what we want when we advertise optional features.

So make 'feature-discard','feature-barrier','feature-flush-cache'
optional.

Suggested-by: Jan Beulich <JBeulich@xxxxxxxx>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
---
 drivers/block/xen-blkback/xenbus.c |   25 ++++++++++---------------
 1 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/drivers/block/xen-blkback/xenbus.c 
b/drivers/block/xen-blkback/xenbus.c
index d417c13..d90a39c 100644
--- a/drivers/block/xen-blkback/xenbus.c
+++ b/drivers/block/xen-blkback/xenbus.c
@@ -381,7 +381,7 @@ int xen_blkbk_flush_diskcache(struct xenbus_transaction xbt,
        err = xenbus_printf(xbt, dev->nodename, "feature-flush-cache",
                            "%d", state);
        if (err)
-               xenbus_dev_fatal(dev, err, "writing feature-flush-cache");
+               dev_warn(&dev->dev, "writing feature-flush-cache (%d)", err);
 
        return err;
 }
@@ -400,16 +400,14 @@ int xen_blkbk_discard(struct xenbus_transaction xbt, 
struct backend_info *be)
                        "discard-granularity", "%u",
                        q->limits.discard_granularity);
                if (err) {
-                       xenbus_dev_fatal(dev, err,
-                               "writing discard-granularity");
+                       dev_warn(&dev->dev, "writing discard-granularity (%d)", 
err);
                        goto out;
                }
                err = xenbus_printf(xbt, dev->nodename,
                        "discard-alignment", "%u",
                        q->limits.discard_alignment);
                if (err) {
-                       xenbus_dev_fatal(dev, err,
-                               "writing discard-alignment");
+                       dev_warn(&dev->dev, "writing discard-alignment (%d)", 
err);
                        goto out;
                }
                state = 1;
@@ -418,15 +416,14 @@ int xen_blkbk_discard(struct xenbus_transaction xbt, 
struct backend_info *be)
                                    "discard-secure", "%d",
                                    blkif->vbd.discard_secure);
                if (err) {
-                       xenbus_dev_fatal(dev, err,
-                                       "writting discard-secure");
+                       dev_warn(dev-dev, "writing discard-secure (%d)", err);
                        goto out;
                }
        }
        err = xenbus_printf(xbt, dev->nodename, "feature-discard",
                            "%d", state);
        if (err)
-               xenbus_dev_fatal(dev, err, "writing feature-discard");
+               dev_warn(&dev->dev, "writing feature-discard (%d)", err);
 out:
        return err;
 }
@@ -439,7 +436,7 @@ int xen_blkbk_barrier(struct xenbus_transaction xbt,
        err = xenbus_printf(xbt, dev->nodename, "feature-barrier",
                            "%d", state);
        if (err)
-               xenbus_dev_fatal(dev, err, "writing feature-barrier");
+               dev_warn(&dev->dev, "writing feature-barrier (%d)", err);
 
        return err;
 }
@@ -671,14 +668,12 @@ again:
                return;
        }
 
-       err = xen_blkbk_flush_diskcache(xbt, be, be->blkif->vbd.flush_support);
-       if (err)
-               goto abort;
+       /* If we can't advertise it is OK. */
+       (void)xen_blkbk_flush_diskcache(xbt, be, be->blkif->vbd.flush_support);
 
-       err = xen_blkbk_discard(xbt, be);
+       (void)xen_blkbk_discard(xbt, be);
 
-       /* If we can't advertise it is OK. */
-       err = xen_blkbk_barrier(xbt, be, be->blkif->vbd.flush_support);
+       (void)xen_blkbk_barrier(xbt, be, be->blkif->vbd.flush_support);
 
        err = xenbus_printf(xbt, dev->nodename, "sectors", "%llu",
                            (unsigned long long)vbd_sz(&be->blkif->vbd));
-- 
1.7.9.48.g85da4d


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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