lkml.org 
[lkml]   [2016]   [Aug]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 269/305] xenbus: don't bail early from xenbus_dev_request_and_reply()
    3.16.37-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Jan Beulich <JBeulich@suse.com>

    commit 7469be95a487319514adce2304ad2af3553d2fc9 upstream.

    xenbus_dev_request_and_reply() needs to track whether a transaction is
    open. For XS_TRANSACTION_START messages it calls transaction_start()
    and for XS_TRANSACTION_END messages it calls transaction_end().

    If sending an XS_TRANSACTION_START message fails or responds with an
    an error, the transaction is not open and transaction_end() must be
    called.

    If sending an XS_TRANSACTION_END message fails, the transaction is
    still open, but if an error response is returned the transaction is
    closed.

    Commit 027bd7e89906 ("xen/xenbus: Avoid synchronous wait on XenBus
    stalling shutdown/restart") introduced a regression where failed
    XS_TRANSACTION_START messages were leaving the transaction open. This
    can cause problems with suspend (and migration) as all transactions
    must be closed before suspending.

    It appears that the problematic change was added accidentally, so just
    remove it.

    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    drivers/xen/xenbus/xenbus_xs.c | 3 ---
    1 file changed, 3 deletions(-)

    --- a/drivers/xen/xenbus/xenbus_xs.c
    +++ b/drivers/xen/xenbus/xenbus_xs.c
    @@ -250,9 +250,6 @@ void *xenbus_dev_request_and_reply(struc

    mutex_unlock(&xs_state.request_mutex);

    - if (IS_ERR(ret))
    - return ret;
    -
    if ((msg->type == XS_TRANSACTION_END) ||
    ((req_msg.type == XS_TRANSACTION_START) &&
    (msg->type == XS_ERROR)))
    \
     
     \ /
      Last update: 2016-09-17 09:56    [W:2.443 / U:0.344 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site