This is a note to let you know that I've just added the patch titled

    libceph: always reset osds when kicking

to the 3.7-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     0008-libceph-always-reset-osds-when-kicking.patch
and it can be found in the queue-3.7 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From 8cc1491a5d9e720f0b6f69244fc1548597bb868b Mon Sep 17 00:00:00 2001
From: Alex Elder <[email protected]>
Date: Wed, 26 Dec 2012 14:31:40 -0600
Subject: libceph: always reset osds when kicking

From: Alex Elder <[email protected]>

(cherry picked from commit e6d50f67a6b1a6252a616e6e629473b5c4277218)

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 <[email protected]>
Reviewed-by: Sage Weil <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
 net/ceph/osd_client.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -1308,7 +1308,7 @@ static void reset_changed_osds(struct ce
  * Requeue requests whose mapping to an OSD has changed.  If requests map to
  * no osd, request a new map.
  *
- * Caller should hold map_sem for read and request_mutex.
+ * Caller should hold map_sem for read.
  */
 static void kick_requests(struct ceph_osd_client *osdc, int force_resend)
 {
@@ -1383,6 +1383,7 @@ static void kick_requests(struct ceph_os
                dout("%d requests for down osds, need new map\n", needmap);
                ceph_monc_request_next_osdmap(&osdc->client->monc);
        }
+       reset_changed_osds(osdc);
 }
 
 
@@ -1439,7 +1440,6 @@ void ceph_osdc_handle_map(struct ceph_os
                                osdc->osdmap = newmap;
                        }
                        kick_requests(osdc, 0);
-                       reset_changed_osds(osdc);
                } else {
                        dout("ignoring incremental map %u len %d\n",
                             epoch, maplen);


Patches currently in stable-queue which might be from [email protected] are

queue-3.7/0007-libceph-move-linger-requests-sooner-in-kick_requests.patch
queue-3.7/0009-libceph-WARN-don-t-BUG-on-unexpected-connection-stat.patch
queue-3.7/0005-libceph-don-t-use-rb_init_node-in-ceph_osdc_alloc_re.patch
queue-3.7/0004-libceph-init-event-node-in-ceph_osdc_create_event.patch
queue-3.7/0008-libceph-always-reset-osds-when-kicking.patch
queue-3.7/0002-libceph-report-connection-fault-with-warning.patch
queue-3.7/0003-libceph-init-osd-o_node-in-create_osd.patch
queue-3.7/0001-libceph-socket-can-close-in-any-connection-state.patch
queue-3.7/0006-libceph-register-request-before-unregister-linger.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to