summaryrefslogtreecommitdiffstats
path: root/COPYING
diff options
context:
space:
mode:
authorIlya Dryomov2015-05-11 16:53:10 +0200
committerIlya Dryomov2015-05-20 20:02:14 +0200
commitb0494532214bdfbf241e94fabab5dd46f7b82631 (patch)
tree0e0a3057667e958118daf8ef835cb7f996b8ad8a /COPYING
parentLinux 4.1-rc4 (diff)
downloadkernel-qcow2-linux-b0494532214bdfbf241e94fabab5dd46f7b82631.tar.gz
kernel-qcow2-linux-b0494532214bdfbf241e94fabab5dd46f7b82631.tar.xz
kernel-qcow2-linux-b0494532214bdfbf241e94fabab5dd46f7b82631.zip
libceph: request a new osdmap if lingering request maps to no osd
This commit does two things. First, if there are any homeless lingering requests, we now request a new osdmap even if the osdmap that is being processed brought no changes, i.e. if a given lingering request turned homeless in one of the previous epochs and remained homeless in the current epoch. Not doing so leaves us with a stale osdmap and as a result we may miss our window for reestablishing the watch and lose notifies. MON=1 OSD=1: # cat linger-needmap.sh #!/bin/bash rbd create --size 1 test DEV=$(rbd map test) ceph osd out 0 rbd map dne/dne # obtain a new osdmap as a side effect (!) sleep 1 ceph osd in 0 rbd resize --size 2 test # rbd info test | grep size -> 2M # blockdev --getsize $DEV -> 1M N.B.: Not obtaining a new osdmap in between "osd out" and "osd in" above is enough to make it miss that resize notify, but that is a bug^Wlimitation of ceph watch/notify v1. Second, homeless lingering requests are now kicked just like those lingering requests whose mapping has changed. This is mainly to recognize that a homeless lingering request makes no sense and to preserve the invariant that a registered lingering request is not sitting on any of r_req_lru_item lists. This spares us a WARN_ON, which commit ba9d114ec557 ("libceph: clear r_req_lru_item in __unregister_linger_request()") tried to fix the _wrong_ way. Cc: stable@vger.kernel.org # 3.10+ Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Sage Weil <sage@redhat.com>
Diffstat (limited to 'COPYING')
0 files changed, 0 insertions, 0 deletions