Skip to content

Commit 890bd0f

Browse files
swinds24idryomov
authored andcommitted
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: [email protected] URL: https://tracker.ceph.com/issues/23296 URL: https://tracker.ceph.com/issues/36406 Signed-off-by: Jerry Lee <[email protected]> Reviewed-by: Ilya Dryomov <[email protected]> Signed-off-by: Ilya Dryomov <[email protected]>
1 parent 9cb1fd0 commit 890bd0f

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

net/ceph/osd_client.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3649,7 +3649,9 @@ static void handle_reply(struct ceph_osd *osd, struct ceph_msg *msg)
36493649
* supported.
36503650
*/
36513651
req->r_t.target_oloc.pool = m.redirect.oloc.pool;
3652-
req->r_flags |= CEPH_OSD_FLAG_REDIRECTED;
3652+
req->r_flags |= CEPH_OSD_FLAG_REDIRECTED |
3653+
CEPH_OSD_FLAG_IGNORE_OVERLAY |
3654+
CEPH_OSD_FLAG_IGNORE_CACHE;
36533655
req->r_tid = 0;
36543656
__submit_request(req, false);
36553657
goto out_unlock_osdc;

0 commit comments

Comments
 (0)