{"push_id":763941528,"size":29,"distinct_size":29,"ref":"refs/heads/wip-sam-proxy-write","head":"9b2339297a58e71752fa1bdc8411f41449bd0446","before":"9853b38a5dbb060448d943d260380b745d9e0648","commits":[{"sha":"f8b3a4098a1b93e4c6f915e73262a80f1508e224","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd: tiering: add proxy write support\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>\n\nConflicts:\n\tsrc/osd/ReplicatedPG.cc","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/f8b3a4098a1b93e4c6f915e73262a80f1508e224"},{"sha":"772617bf92c3421d10a626a593e1757b3a477a59","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd/ReplicatedPG: remove the peer_type assertion in eval_repop\n\nWhen moving to proxy write, this assertion doesn't hold any more.\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>\n\nConflicts:\n\tsrc/osd/ReplicatedPG.cc","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/772617bf92c3421d10a626a593e1757b3a477a59"},{"sha":"90e5f410ee35a614e1d49771226064d012d8b85e","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd: tiering: use proxy write in writeback mode\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>\n\nConflicts:\n\tsrc/osd/ReplicatedPG.cc","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/90e5f410ee35a614e1d49771226064d012d8b85e"},{"sha":"c01d20b60dc60c11caf3ab1928df274f6bfb6590","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd/ReplicatedPG: set the RWORDERED flag for the promote copy-from op\n\nSet the RWORDERED flag when doing promote copy-from op. This is in case\nthere are proxy writes in flight.\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>\n\nConflicts:\n\tsrc/osd/ReplicatedPG.cc","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/c01d20b60dc60c11caf3ab1928df274f6bfb6590"},{"sha":"1099ec23f0a2ca68a36211e5b125417500dc2aec","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd/osd_types: add min_write_recency_for_promote in pg_pool_t\n\nThis field stands for the minimum number of hit sets to check before\npromote on write.\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/1099ec23f0a2ca68a36211e5b125417500dc2aec"},{"sha":"3d5300bde18aa9ccd3bbc1aa3abba982f48298fe","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd/ReplicatedPG: promote on 2nd write\n\nIf min_write_recency_for_promote is\n- 0: Promote when there is a write.\n- 1: Check if the object is in current hit set. Promote if yes.\n- else: Check if the object is in current and other in memory hit sets.\nPromote if yes.\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>\n\nConflicts:\n\tsrc/osd/ReplicatedPG.cc","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/3d5300bde18aa9ccd3bbc1aa3abba982f48298fe"},{"sha":"257c851ec31a6aa4c29f03e967c8d731699633f1","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"mon: add osd pool set/get for min_write_recency_for_promote\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>\n\nConflicts:\n\tsrc/mon/MonCommands.h\n\tsrc/mon/OSDMonitor.cc","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/257c851ec31a6aa4c29f03e967c8d731699633f1"},{"sha":"d836a645a8cc6ed9a08631d698ac3e2332d21dd5","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd/ReplicatedPG: minor updates on proxy write\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/d836a645a8cc6ed9a08631d698ac3e2332d21dd5"},{"sha":"7e27e6152652e44168dcdb814717253b6c5b146a","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd/ReplicatedPG: add helper function check_for_promote\n\nThis function is used to check if we need to initiate a promotion in\nmaybe_handle_cache.\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>\n\nConflicts:\n\tsrc/osd/ReplicatedPG.cc","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/7e27e6152652e44168dcdb814717253b6c5b146a"},{"sha":"ab39e03d598854a3c2fc974d4b48840fc0bacb37","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd/ReplicatedPG: don't check order in finish_proxy_write\n\nWhen proxy write comes back from base tier, the write op may or may not\nsit at the front of the list.\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/ab39e03d598854a3c2fc974d4b48840fc0bacb37"},{"sha":"cb9390dc6f3fee7cb7ee1cc9c2e2e9a2c89fe112","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd/ReplicatedPG: add the proxy write feature bit support\n\nFor older versions which doesn't support proxy write, doing promote.\nOtherwise, we can proxy the write.\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/cb9390dc6f3fee7cb7ee1cc9c2e2e9a2c89fe112"},{"sha":"b9ec7e64b7f59a92343ddc095e0a6b6c0dc50bfb","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd: add proxy write perf counter\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/b9ec7e64b7f59a92343ddc095e0a6b6c0dc50bfb"},{"sha":"0d7759f3e98f9c2437cb90edfb4c522646fa167c","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd: turn on proxy write feature bit by default\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/0d7759f3e98f9c2437cb90edfb4c522646fa167c"},{"sha":"58dd21c09438980970938212e3cfb04d15eef061","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd: add reqid in MOSDOp\n\nThe cache tier needs to set the reqid explicitly to the original reqid\nfrom the client when proxying the write op to the base tier.\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/58dd21c09438980970938212e3cfb04d15eef061"},{"sha":"ff658bd8ea98f67d73f291f7bceb45a23d61a977","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"Objecter: optionally setting the reqid in the mutate interface\n\nThe cache tier needs to set the reqid to the original reqid from client\nwhen proxying the write op.\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/ff658bd8ea98f67d73f291f7bceb45a23d61a977"},{"sha":"bf5d51e2887f465fbb67843303e030faa4efdfbe","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd: explicitly set the reqid when proxying the write op\n\nThis is needed as in the following scenario:\n- Client sends 3 writes and a read on the same object to base tier\n- Set up cache tiering\n- Client retries ops and sends the 3 writes and 1 read to the cache tier\n- The 3 writes finished on the base tier, say with versions v1, v2 and v3\n- Cache tier proxies the 1st write, and start to promote the object for the 2nd\nwrite, the 2nd and 3rd writes and the read are blocked\n- The proxied 1st write finishes on the base tier with version v4, and returns\nto cache tier. But somehow the cache tier fails to send the reply due to socket\nfailure injecting\n- Client retries the writes and the read again, the writes are identified as\ndup ops\n- The promotion finishes, it copies the pg_log entries from the base tier and\nput it in the cache tier's pg_log. This includes the 3 writes on the base tier\nand the proxied write\n- The writes dispatches after the promotion, they are identified as completed\ndup ops. Cache tier replies these write ops with the version from the base tier\n(v1, v2 and v3)\n- In the last, the read dispatches, it reads the version of the proxied write\n(v4) and replies to client\n- Client complains that 'racing read got wrong version'\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/bf5d51e2887f465fbb67843303e030faa4efdfbe"},{"sha":"626c569200f6151cae6c9ef29a40cdafb49d3102","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd: force promote for object overwrites on a ec base pool\n\nWhen doing object overwrites on the ec base pool, the write op can't be\nproxied. Always force promotion in this case.\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/626c569200f6151cae6c9ef29a40cdafb49d3102"},{"sha":"98fff96b8f3748ed8f4dc64963af1fb90b6ff680","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd: rename SKIP_PROMOTE to SKIP_HANDLE_CACHE\n\nTo comply with what it really means.\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/98fff96b8f3748ed8f4dc64963af1fb90b6ff680"},{"sha":"fa5b6e6d5e59c1dc501c834f2e8625efe601df38","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd: skip promotion when proxying a delete op\n\nWhen the object is deleted, there is no need to promote it.\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/fa5b6e6d5e59c1dc501c834f2e8625efe601df38"},{"sha":"aff8aa1a7b408e7a61ecec40c6ebd8b9fe4afe6f","author":{"email":"52768275c89bf63503ccc0eef33f5540eccada30@intel.com","name":"Zhiqiang Wang"},"message":"osd: set the blocked_by relationship when rolling back to a degraded\nobject\n\nIn a scenario like below:\n- A rollback op comes in, and is enqueued.\n- Several other ops on the same object come in, and are enqueued.\n- The rollback op dispatches, and finds the object which it rollbacks to is\ndegraded, then this op is pushbacked into a list to wait for the degraded\nobject to recover.\n- The later ops are handled and responded back to client.\n- The degraded object recovers. The rollback op is enqueued again and finally\nresponded to client.\nThis breaks the op order. Need to set the blocked_by relationship to enqueue\nthe later ops until the degraded object recovers.\n\nSigned-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>","distinct":true,"url":"https://api.github.com/repos/athanatos/ceph/commits/aff8aa1a7b408e7a61ecec40c6ebd8b9fe4afe6f"}]}