libceph: ignore pool overlay and cache logic on redirects
OSD client should ignore cache/overlay flag if got redirect reply. Otherwise, the client hangs when the cache tier is in forward mode. [ idryomov: Redirects are effectively deprecated and no longer used or tested. The original tiering modes based on redirects are inherently flawed because redirects can race and reorder, potentially resulting in data corruption. The new proxy and readproxy tiering modes should be used instead of forward and readforward. Still marking for stable as obviously correct, though. ] Cc: stable@vger.kernel.org URL: https://tracker.ceph.com/issues/23296 URL: https://tracker.ceph.com/issues/36406 Signed-off-by: Jerry Lee <leisurelysw24@gmail.com> Reviewed-by: Ilya Dryomov <idryomov@gmail.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
9cb1fd0efd
commit
890bd0f899
|
@ -3649,7 +3649,9 @@ static void handle_reply(struct ceph_osd *osd, struct ceph_msg *msg)
|
|||
* supported.
|
||||
*/
|
||||
req->r_t.target_oloc.pool = m.redirect.oloc.pool;
|
||||
req->r_flags |= CEPH_OSD_FLAG_REDIRECTED;
|
||||
req->r_flags |= CEPH_OSD_FLAG_REDIRECTED |
|
||||
CEPH_OSD_FLAG_IGNORE_OVERLAY |
|
||||
CEPH_OSD_FLAG_IGNORE_CACHE;
|
||||
req->r_tid = 0;
|
||||
__submit_request(req, false);
|
||||
goto out_unlock_osdc;
|
||||
|
|
Loading…
Reference in New Issue