Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Jan 17, 2013
  1. @gregkh

    Linux 3.4.26

    gregkh authored
  2. @gregkh

    USB: fix endpoint-disabling for failed config changes

    Alan Stern authored gregkh committed
    commit 36caff5 upstream.
    
    This patch (as1631) fixes a bug that shows up when a config change
    fails for a device under an xHCI controller.  The controller needs to
    be told to disable the endpoints that have been enabled for the new
    config.  The existing code does this, but before storing the
    information about which endpoints were enabled!  As a result, any
    second attempt to install the new config is doomed to fail because
    xhci-hcd will refuse to enable an endpoint that is already enabled.
    
    The patch optimistically initializes the new endpoints' device
    structures before asking the device to switch to the new config.  If
    the request fails then the endpoint information is already stored, so
    we can use usb_hcd_alloc_bandwidth() to disable the endpoints with no
    trouble.  The rest of the error path is slightly more complex now; we
    have to disable the new interfaces and call put_device() rather than
    simply deallocating them.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: Matthias Schniedermeyer <ms@citd.de>
    CC: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  3. @ian-abbott @gregkh

    staging: comedi: Kconfig: COMEDI_NI_AT_A2150 should select COMEDI_FC

    ian-abbott authored gregkh committed
    commit 34ffb33 upstream.
    
    The 'ni_at_a2150' module links to `cfc_write_to_buffer` in the
    'comedi_fc' module, so selecting 'COMEDI_NI_AT_A2150' in the kernel config
    needs to also select 'COMEDI_FC'.
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  4. @ian-abbott @gregkh

    staging: comedi: don't hijack hardware device private data

    ian-abbott authored gregkh committed
    commit c43435d upstream.
    
    comedi_auto_config() associates a Comedi minor device number with an
    auto-configured hardware device and comedi_auto_unconfig() disassociates
    it.  Currently, these use the hardware device's private data pointer to
    point to some allocated storage holding the minor device number.  This
    is a bit of a waste of the hardware device's private data pointer,
    preventing it from being used for something more useful by the low-level
    comedi device drivers.  For example, it would make more sense if
    comedi_usb_auto_config() was passed a pointer to the struct
    usb_interface instead of the struct usb_device, but this cannot be done
    currently because the low-level comedi drivers already use the private
    data pointer in the struct usb_interface for something more useful.
    
    This patch stops the comedi core hijacking the hardware device's private
    data pointer.  Instead, comedi_auto_config() stores a pointer to the
    hardware device's struct device in the struct comedi_device_file_info
    associated with the minor device number, and comedi_auto_unconfig()
    calls new function comedi_find_board_minor() to recover the minor device
    number associated with the hardware device.
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  5. @gregkh

    libceph: Unlock unprocessed pages in start_read() error path

    David Zafman authored gregkh committed
    Function start_read() can get an error before processing all pages.
    It must not only release the remaining pages, but unlock them too.
    
    This fixes http://tracker.newdream.net/issues/3370
    
    Signed-off-by: David Zafman <david.zafman@inktank.com>
    Reviewed-by: Alex Elder <elder@inktank.com>
    (cherry picked from commit 8884d53)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  6. @gregkh

    ceph: call handle_cap_grant() for cap import message

    Yan, Zheng authored gregkh committed
    If client sends cap message that requests new max size during
    exporting caps, the exporting MDS will drop the message quietly.
    So the client may wait for the reply that updates the max size
    forever. call handle_cap_grant() for cap import message can
    avoid this issue.
    
    Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 0e5e177)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  7. @gregkh

    ceph: Fix __ceph_do_pending_vmtruncate

    Yan, Zheng authored gregkh committed
    we should set i_truncate_pending to 0 after page cache is truncated
    to i_truncate_size
    
    Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit a85f50b)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  8. @gregkh

    ceph: Don't add dirty inode to dirty list if caps is in migration

    Yan, Zheng authored gregkh committed
    Add dirty inode to cap_dirty_migrating list instead, this can avoid
    ceph_flush_dirty_caps() entering infinite loop.
    
    Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 0685235)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  9. @gregkh

    ceph: Fix infinite loop in __wake_requests

    Yan, Zheng authored gregkh committed
    __wake_requests() will enter infinite loop if we use it to wake
    requests in the session->s_waiting list. __wake_requests() deletes
    requests from the list and __do_request() adds requests back to
    the list.
    
    Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit ed75ec2)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  10. @gregkh

    ceph: Don't update i_max_size when handling non-auth cap

    Yan, Zheng authored gregkh committed
    The cap from non-auth mds doesn't have a meaningful max_size value.
    
    Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 5e62ad3)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  11. @alexelder @gregkh

    rbd: do not allow remove of mounted-on image

    alexelder authored gregkh committed
    There is no check in rbd_remove() to see if anybody holds open the
    image being removed.  That's not cool.
    
    Add a simple open count that goes up and down with opens and closes
    (releases) of the device, and don't allow an rbd image to be removed
    if the count is non-zero.
    
    Protect the updates of the open count value with ctl_mutex to ensure
    the underlying rbd device doesn't get removed while concurrently
    being opened.
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (based on commit 42382b7)
  12. @alexelder @gregkh

    rbd: fix bug in rbd_dev_id_put()

    alexelder authored gregkh committed
    In rbd_dev_id_put(), there's a loop that's intended to determine
    the maximum device id in use.  But it isn't doing that at all,
    the effect of how it's written is to simply use the just-put id
    number, which ignores whole purpose of this function.
    
    Fix the bug.
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
    (cherry picked from commit b213e0b)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  13. @liewegas @gregkh

    rbd: BUG on invalid layout

    liewegas authored gregkh committed
    This shouldn't actually be possible because the layout struct is
    constructed from the RBD header and validated then.
    
    [elder@inktank.com: converted BUG() call to equivalent rbd_assert()]
    
    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Alex Elder <elder@inktank.com>
    (based on commit 6cae371)
  14. @alexelder @gregkh

    rbd: remove linger unconditionally

    alexelder authored gregkh committed
    In __unregister_linger_request(), the request is being removed
    from the osd client's req_linger list only when the request
    has a non-null osd pointer.  It should be done whether or not
    the request currently has an osd.
    
    This is most likely a non-issue because I believe the request
    will always have an osd when this function is called.
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 61c7403)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  15. @alexelder @gregkh

    ceph: don't reference req after put

    alexelder authored gregkh committed
    In __unregister_request(), there is a call to list_del_init()
    referencing a request that was the subject of a call to
    ceph_osdc_put_request() on the previous line.  This is not
    safe, because the request structure could have been freed
    by the time we reach the list_del_init().
    
    Fix this by reversing the order of these lines.
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 7d5f248)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  16. @liewegas @gregkh

    libceph: remove 'osdtimeout' option

    liewegas authored gregkh committed
    This would reset a connection with any OSD that had an outstanding
    request that was taking more than N seconds.  The idea was that if the
    OSD was buggy, the client could compensate by resending the request.
    
    In reality, this only served to hide server bugs, and we haven't
    actually seen such a bug in quite a while.  Moreover, the userspace
    client code never did this.
    
    More importantly, often the request is taking a long time because the
    OSD is trying to recover, or overloaded, and killing the connection
    and retrying would only make the situation worse by giving the OSD
    more work to do.
    
    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Alex Elder <elder@inktank.com>
    (cherry picked from commit 83aff95)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  17. @alexelder @gregkh

    rbd: kill notify_timeout option

    alexelder authored gregkh committed
    The "notify_timeout" rbd device option is never used, so get rid of
    it.
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
    (cherry picked from commit 84d34dc)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  18. @alexelder @gregkh

    rbd: add read_only rbd map option

    alexelder authored gregkh committed
    Add the ability to map an rbd image read-only, by specifying either
    "read_only" or "ro" as an option on the rbd "command line."  Also
    allow the inverse to be explicitly specified using "read_write" or
    "rw".
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
    (based on commit cc0538b)
  19. @alexelder @gregkh

    rbd: kill create_snap sysfs entry

    alexelder authored gregkh committed
    Josh proposed the following change, and I don't think I could
    explain it any better than he did:
    
        From: Josh Durgin <josh.durgin@inktank.com>
        Date: Tue, 24 Jul 2012 14:22:11 -0700
        To: ceph-devel <ceph-devel@vger.kernel.org>
        Message-ID: <500F1203.9050605@inktank.com>
        From: Josh Durgin <josh.durgin@inktank.com>
    
    
        Right now the kernel still has one piece of rbd management
        duplicated from the rbd command line tool: snapshot creation.
        There's nothing special about snapshot creation that makes it
        advantageous to do from the kernel, so I'd like to remove the
        create_snap sysfs interface.  That is,
    	/sys/bus/rbd/devices/<id>/create_snap
        would be removed.
    
        Does anyone rely on the sysfs interface for creating rbd
        snapshots?  If so, how hard would it be to replace with:
    
    	rbd snap create pool/image@snap
    
        Is there any benefit to the sysfs interface that I'm missing?
    
        Josh
    
    This patch implements this proposal, removing the code that
    implements the "snap_create" sysfs interface for rbd images.
    As a result, quite a lot of other supporting code goes away.
    
    [elder@inktank.com: commented out rbd_req_sync_exec() to avoid warning]
    
    Suggested-by: Josh Durgin <josh.durgin@inktank.com>
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
    (based on commit 02cdb02)
  20. @alexelder @gregkh

    libceph: avoid using freed osd in __kick_osd_requests()

    alexelder authored gregkh committed
    If an osd has no requests and no linger requests, __reset_osd()
    will just remove it with a call to __remove_osd().  That drops
    a reference to the osd, and therefore the osd may have been free
    by the time __reset_osd() returns.  That function offers no
    indication this may have occurred, and as a result the osd will
    continue to be used even when it's no longer valid.
    
    Change__reset_osd() so it returns an error (ENODEV) when it
    deletes the osd being reset.  And change __kick_osd_requests() so it
    returns immediately (before referencing osd again) if __reset_osd()
    returns *any* error.
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 685a755)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  21. @liewegas @gregkh

    libceph: fix osdmap decode error paths

    liewegas authored gregkh committed
    Ensure that we set the err value correctly so that we do not pass a 0
    value to ERR_PTR and confuse the calling code.  (In particular,
    osd_client.c handle_map() will BUG(!newmap)).
    
    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Alex Elder <elder@inktank.com>
    (cherry picked from commit 0ed7285)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  22. @liewegas @gregkh

    libceph: fix protocol feature mismatch failure path

    liewegas authored gregkh committed
    We should not set con->state to CLOSED here; that happens in
    ceph_fault() in the caller, where it first asserts that the state
    is not yet CLOSED.  Avoids a BUG when the features don't match.
    
    Since the fail_protocol() has become a trivial wrapper, replace
    calls to it with direct calls to reset_connection().
    
    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Alex Elder <elder@inktank.com>
    (cherry picked from commit 0fa6ebc)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  23. @alexelder @gregkh

    libceph: WARN, don't BUG on unexpected connection states

    alexelder authored gregkh committed
    A number of assertions in the ceph messenger are implemented with
    BUG_ON(), killing the system if connection's state doesn't match
    what's expected.  At this point our state model is (evidently) not
    well understood enough for these assertions to trigger a BUG().
    Convert all BUG_ON(con->state...) calls to be WARN_ON(con->state...)
    so we learn about these issues without killing the machine.
    
    We now recognize that a connection fault can occur due to a socket
    closure at any time, regardless of the state of the connection.  So
    there is really nothing we can assert about the state of the
    connection at that point so eliminate that assertion.
    
    Reported-by: Ugis <ugis22@gmail.com>
    Tested-by: Ugis <ugis22@gmail.com>
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 122070a)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  24. @alexelder @gregkh

    libceph: always reset osds when kicking

    alexelder authored gregkh committed
    When ceph_osdc_handle_map() is called to process a new osd map,
    kick_requests() is called to ensure all affected requests are
    updated if necessary to reflect changes in the osd map.  This
    happens in two cases:  whenever an incremental map update is
    processed; and when a full map update (or the last one if there is
    more than one) gets processed.
    
    In the former case, the kick_requests() call is followed immediately
    by a call to reset_changed_osds() to ensure any connections to osds
    affected by the map change are reset.  But for full map updates
    this isn't done.
    
    Both cases should be doing this osd reset.
    
    Rather than duplicating the reset_changed_osds() call, move it into
    the end of kick_requests().
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit e6d50f6)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  25. @alexelder @gregkh

    libceph: move linger requests sooner in kick_requests()

    alexelder authored gregkh committed
    The kick_requests() function is called by ceph_osdc_handle_map()
    when an osd map change has been indicated.  Its purpose is to
    re-queue any request whose target osd is different from what it
    was when it was originally sent.
    
    It is structured as two loops, one for incomplete but registered
    requests, and a second for handling completed linger requests.
    As a special case, in the first loop if a request marked to linger
    has not yet completed, it is moved from the request list to the
    linger list.  This is as a quick and dirty way to have the second
    loop handle sending the request along with all the other linger
    requests.
    
    Because of the way it's done now, however, this quick and dirty
    solution can result in these incomplete linger requests never
    getting re-sent as desired.  The problem lies in the fact that
    the second loop only arranges for a linger request to be sent
    if it appears its target osd has changed.  This is the proper
    handling for *completed* linger requests (it avoids issuing
    the same linger request twice to the same osd).
    
    But although the linger requests added to the list in the first loop
    may have been sent, they have not yet completed, so they need to be
    re-sent regardless of whether their target osd has changed.
    
    The first required fix is we need to avoid calling __map_request()
    on any incomplete linger request.  Otherwise the subsequent
    __map_request() call in the second loop will find the target osd
    has not changed and will therefore not re-send the request.
    
    Second, we need to be sure that a sent but incomplete linger request
    gets re-sent.  If the target osd is the same with the new osd map as
    it was when the request was originally sent, this won't happen.
    This can be fixed through careful handling when we move these
    requests from the request list to the linger list, by unregistering
    the request *before* it is registered as a linger request.  This
    works because a side-effect of unregistering the request is to make
    the request's r_osd pointer be NULL, and *that* will ensure the
    second loop actually re-sends the linger request.
    
    Processing of such a request is done at that point, so continue with
    the next one once it's been moved.
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit ab60b16)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  26. @alexelder @gregkh

    libceph: register request before unregister linger

    alexelder authored gregkh committed
    In kick_requests(), we need to register the request before we
    unregister the linger request.  Otherwise the unregister will
    reset the request's osd pointer to NULL.
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit c89ce05)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  27. @alexelder @gregkh

    libceph: don't use rb_init_node() in ceph_osdc_alloc_request()

    alexelder authored gregkh committed
    The red-black node in the ceph osd request structure is initialized
    in ceph_osdc_alloc_request() using rbd_init_node().  We do need to
    initialize this, because in __unregister_request() we call
    RB_EMPTY_NODE(), which expects the node it's checking to have
    been initialized.  But rb_init_node() is apparently overkill, and
    may in fact be on its way out.  So use RB_CLEAR_NODE() instead.
    
    For a little more background, see this commit:
        4c199a9 rbtree: empty nodes have no color"
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit a978fa2)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  28. @alexelder @gregkh

    libceph: init event->node in ceph_osdc_create_event()

    alexelder authored gregkh committed
    The red-black node node in the ceph osd event structure is not
    initialized in create_osdc_create_event().  Because this node can
    be the subject of a RB_EMPTY_NODE() call later on, we should ensure
    the node is initialized properly for that.
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 3ee5234)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  29. @alexelder @gregkh

    libceph: init osd->o_node in create_osd()

    alexelder authored gregkh committed
    The red-black node node in the ceph osd structure is not initialized
    in create_osd().  Because this node can be the subject of a
    RB_EMPTY_NODE() call later on, we should ensure the node is
    initialized properly for that.  Add a call to RB_CLEAR_NODE()
    initialize it.
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit f407731)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  30. @alexelder @gregkh

    libceph: report connection fault with warning

    alexelder authored gregkh committed
    When a connection's socket disconnects, or if there's a protocol
    error of some kind on the connection, a fault is signaled and
    the connection is reset (closed and reopened, basically).  We
    currently get an error message on the log whenever this occurs.
    
    A ceph connection will attempt to reestablish a socket connection
    repeatedly if a fault occurs.  This means that these error messages
    will get repeatedly added to the log, which is undesirable.
    
    Change the error message to be a warning, so they don't get
    logged by default.
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 2836298)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  31. @alexelder @gregkh

    libceph: socket can close in any connection state

    alexelder authored gregkh committed
    A connection's socket can close for any reason, independent of the
    state of the connection (and without irrespective of the connection
    mutex).  As a result, the connectino can be in pretty much any state
    at the time its socket is closed.
    
    Handle those other cases at the top of con_work().  Pull this whole
    block of code into a separate function to reduce the clutter.
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 7bb21d6)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  32. @liewegas @gregkh

    ceph: propagate layout error on osd request creation

    liewegas authored gregkh committed
    If we are creating an osd request and get an invalid layout, return
    an EINVAL to the caller.  We switch up the return to have an error
    code instead of NULL implying -ENOMEM.
    
    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Alex Elder <elder@inktank.com>
    (cherry picked from commit 6816282)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  33. @alexelder @gregkh

    rbd: drop dev reference on error in rbd_open()

    alexelder authored gregkh committed
    If a read-only rbd device is opened for writing in rbd_open(), it
    returns without dropping the just-acquired device reference.
    
    Fix this by moving the read-only check before getting the reference.
    
    Signed-off-by: Alex Elder <elder@inktank.com>
    Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
    Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
    (cherry picked from commit 340c7a2)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  34. @liewegas @gregkh

    ceph: tolerate (and warn on) extraneous dentry from mds

    liewegas authored gregkh committed
    If the MDS gives us a dentry and we weren't prepared to handle it,
    WARN_ON_ONCE instead of crashing.
    
    Reported-by: Yan, Zheng <zheng.z.yan@intel.com>
    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Alex Elder <elder@inktank.com>
    (cherry picked from commit 6c5e50f)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  35. @jdurgin @gregkh

    rbd: send header version when notifying

    jdurgin authored gregkh committed
    Previously the original header version was sent. Now, we update it
    when the header changes.
    
    Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
    Reviewed-by: Alex Elder <elder@inktank.com>
    (cherry picked from commit a71b891)
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Something went wrong with that request. Please try again.