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

Re: [Xen-devel] for-4.8/drivers and Linus' tree + staging conflicts?



On Fri, Jul 15, 2016 at 12:19:04PM -0400, Konrad Rzeszutek Wilk wrote:
> Hey Jens,

+your kernel address.

A very gently ping.
> 
> I have some patches for Xen block driver that are based on Linus's tree
> which has:
> 7b427a5     xen-blkfront: save uncompleted reqs in blkfront_resume()
> 
> That particular patch conflicts with your for-4.8/driver branch.
> 
> What I was wondering is if:
> 
>  1) Do you want me to create a branh for you to pull in your
>     for-4.8/drivers that has the above patch (and a resolution)?
>     And along with that the rest of the patches I've for 4.8?
> 
>  2) Or if you are going rebase your 'for-4.8/drivers' branch
>    on top of v4.7-rc7 (which will pull in the above commit?)
> 
>  3) Stash the patches I've in the Xen tip tree (which is
>    based on 4.7-rc7) for 4.8 with me putting your Ack on them?
>    See below log and the full diff.
> 
> Thanks!
> 
> Jan Beulich (4):
>       xen-blkback: really don't leak mode property
>       xen-blkback: prefer xenbus_scanf() over xenbus_gather()
>       xen-blkfront: prefer xenbus_scanf() over xenbus_gather()
>       xen-blkback: constify instance of "struct attribute_group"
> 
> diff --git a/drivers/block/xen-blkback/xenbus.c 
> b/drivers/block/xen-blkback/xenbus.c
> index 3355f1c..4a24121 100644
> --- a/drivers/block/xen-blkback/xenbus.c
> +++ b/drivers/block/xen-blkback/xenbus.c
> @@ -379,7 +379,7 @@ static struct attribute *xen_vbdstat_attrs[] = {
>       NULL
>  };
>  
> -static struct attribute_group xen_vbdstat_group = {
> +static const struct attribute_group xen_vbdstat_group = {
>       .name = "statistics",
>       .attrs = xen_vbdstat_attrs,
>  };
> @@ -715,8 +715,11 @@ static void backend_changed(struct xenbus_watch *watch,
>  
>       /* Front end dir is a number, which is used as the handle. */
>       err = kstrtoul(strrchr(dev->otherend, '/') + 1, 0, &handle);
> -     if (err)
> +     if (err) {
> +             kfree(be->mode);
> +             be->mode = NULL;
>               return;
> +     }
>  
>       be->major = major;
>       be->minor = minor;
> @@ -1022,9 +1025,9 @@ static int connect_ring(struct backend_info *be)
>       pr_debug("%s %s\n", __func__, dev->otherend);
>  
>       be->blkif->blk_protocol = BLKIF_PROTOCOL_DEFAULT;
> -     err = xenbus_gather(XBT_NIL, dev->otherend, "protocol",
> -                         "%63s", protocol, NULL);
> -     if (err)
> +     err = xenbus_scanf(XBT_NIL, dev->otherend, "protocol",
> +                        "%63s", protocol);
> +     if (err <= 0)
>               strcpy(protocol, "unspecified, assuming default");
>       else if (0 == strcmp(protocol, XEN_IO_PROTO_ABI_NATIVE))
>               be->blkif->blk_protocol = BLKIF_PROTOCOL_NATIVE;
> @@ -1036,10 +1039,9 @@ static int connect_ring(struct backend_info *be)
>               xenbus_dev_fatal(dev, err, "unknown fe protocol %s", protocol);
>               return -ENOSYS;
>       }
> -     err = xenbus_gather(XBT_NIL, dev->otherend,
> -                         "feature-persistent", "%u",
> -                         &pers_grants, NULL);
> -     if (err)
> +     err = xenbus_scanf(XBT_NIL, dev->otherend,
> +                        "feature-persistent", "%u", &pers_grants);
> +     if (err <= 0)
>               pers_grants = 0;
>  
>       be->blkif->vbd.feature_gnt_persistent = pers_grants;
> diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
> index fcc5b4e..6672b80 100644
> --- a/drivers/block/xen-blkfront.c
> +++ b/drivers/block/xen-blkfront.c
> @@ -2197,10 +2197,9 @@ static void blkfront_setup_discard(struct 
> blkfront_info *info)
>               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)
> +     err = xenbus_scanf(XBT_NIL, info->xbdev->otherend,
> +                        "discard-secure", "%u", &discard_secure);
> +     if (err > 0)
>               info->feature_secdiscard = !!discard_secure;
>  }
>  
> @@ -2299,9 +2298,8 @@ static void blkfront_gather_backend_features(struct 
> blkfront_info *info)
>  
>       info->feature_flush = 0;
>  
> -     err = xenbus_gather(XBT_NIL, info->xbdev->otherend,
> -                     "feature-barrier", "%d", &barrier,
> -                     NULL);
> +     err = xenbus_scanf(XBT_NIL, info->xbdev->otherend,
> +                        "feature-barrier", "%d", &barrier);
>  
>       /*
>        * If there's no "feature-barrier" defined, then it means
> @@ -2310,38 +2308,35 @@ static void blkfront_gather_backend_features(struct 
> blkfront_info *info)
>        *
>        * If there are barriers, then we use flush.
>        */
> -     if (!err && barrier)
> +     if (err > 0 && barrier)
>               info->feature_flush = REQ_FLUSH | REQ_FUA;
>       /*
>        * And if there is "feature-flush-cache" use that above
>        * barriers.
>        */
> -     err = xenbus_gather(XBT_NIL, info->xbdev->otherend,
> -                     "feature-flush-cache", "%d", &flush,
> -                     NULL);
> +     err = xenbus_scanf(XBT_NIL, info->xbdev->otherend,
> +                        "feature-flush-cache", "%d", &flush);
>  
> -     if (!err && flush)
> +     if (err > 0 && flush)
>               info->feature_flush = REQ_FLUSH;
>  
> -     err = xenbus_gather(XBT_NIL, info->xbdev->otherend,
> -                     "feature-discard", "%d", &discard,
> -                     NULL);
> +     err = xenbus_scanf(XBT_NIL, info->xbdev->otherend,
> +                        "feature-discard", "%d", &discard);
>  
> -     if (!err && discard)
> +     if (err > 0 && discard)
>               blkfront_setup_discard(info);
>  
> -     err = xenbus_gather(XBT_NIL, info->xbdev->otherend,
> -                     "feature-persistent", "%u", &persistent,
> -                     NULL);
> -     if (err)
> +     err = xenbus_scanf(XBT_NIL, info->xbdev->otherend,
> +                        "feature-persistent", "%d", &persistent);
> +     if (err <= 0)
>               info->feature_persistent = 0;
>       else
>               info->feature_persistent = persistent;
>  
> -     err = xenbus_gather(XBT_NIL, info->xbdev->otherend,
> -                         "feature-max-indirect-segments", "%u", 
> &indirect_segments,
> -                         NULL);
> -     if (err)
> +     err = xenbus_scanf(XBT_NIL, info->xbdev->otherend,
> +                        "feature-max-indirect-segments", "%u",
> +                        &indirect_segments);
> +     if (err <= 0)
>               info->max_indirect_segments = 0;
>       else
>               info->max_indirect_segments = min(indirect_segments,

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

 


Rackspace

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