lkml.org 
[lkml]   [2014]   [Jan]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2] xen-blkfront: remove type check from blkfront_setup_discard
    Date
    In its initial implementation a check for "type" was added, but only phy
    and file are handled. This breaks advertised discard support for other
    type values such as qdisk.

    Fix and simplify this function: remove the check for "type" as the
    frontend is not supposed to care about this backend detail. Expect
    backends to provide discard-aligment, discard-granularity and
    discard-secure properties because interface specification in blkif.h
    does not list these properties as optional.

    Signed-off-by: Olaf Hering <olaf@aepfle.de>
    ---
    drivers/block/xen-blkfront.c | 33 +++++++++------------------------
    1 file changed, 9 insertions(+), 24 deletions(-)

    diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
    index c4a4c90..6ef63eb 100644
    --- a/drivers/block/xen-blkfront.c
    +++ b/drivers/block/xen-blkfront.c
    @@ -1634,37 +1634,22 @@ blkfront_closing(struct blkfront_info *info)

    static void blkfront_setup_discard(struct blkfront_info *info)
    {
    - int err;
    - char *type;
    unsigned int discard_granularity;
    unsigned int discard_alignment;
    unsigned int discard_secure;

    - type = xenbus_read(XBT_NIL, info->xbdev->otherend, "type", NULL);
    - if (IS_ERR(type))
    + if (xenbus_gather(XBT_NIL, info->xbdev->otherend,
    + "discard-granularity", "%u", &discard_granularity,
    + "discard-alignment", "%u", &discard_alignment,
    + "discard-secure", "%u", &discard_secure,
    + NULL))
    return;

    - info->feature_secdiscard = 0;
    - if (strncmp(type, "phy", 3) == 0) {
    - err = xenbus_gather(XBT_NIL, info->xbdev->otherend,
    - "discard-granularity", "%u", &discard_granularity,
    - "discard-alignment", "%u", &discard_alignment,
    - NULL);
    - if (!err) {
    - info->feature_discard = 1;
    - info->discard_granularity = discard_granularity;
    - info->discard_alignment = discard_alignment;
    - }
    - err = xenbus_gather(XBT_NIL, info->xbdev->otherend,
    - "discard-secure", "%d", &discard_secure,
    - NULL);
    - if (!err)
    - info->feature_secdiscard = discard_secure;
    -
    - } else if (strncmp(type, "file", 4) == 0)
    - info->feature_discard = 1;
    + info->discard_granularity = discard_granularity;
    + info->discard_alignment = discard_alignment;
    + info->feature_secdiscard = !!discard_secure;

    - kfree(type);
    + info->feature_discard = 1;
    }

    static int blkfront_setup_indirect(struct blkfront_info *info)

    \
     
     \ /
      Last update: 2014-01-13 11:41    [W:5.979 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site