return cache_result_t::BLOCKED_FULL;
}
- if (!hit_set && (must_promote || !op->need_skip_promote())) {
+ if (must_promote || (!hit_set && !op->need_skip_promote())) {
promote_object(obc, missing_oid, oloc, op, promote_obc);
return cache_result_t::BLOCKED_PROMOTE;
- } else if (op->may_write() || op->may_cache()) {
- if (can_proxy_write && !must_promote) {
+ }
+
+ if (op->may_write() || op->may_cache()) {
+ if (can_proxy_write) {
do_proxy_write(op, missing_oid);
} else {
// promote if can't proxy the write
return cache_result_t::HANDLED_PROXY;
} else {
bool did_proxy_read = false;
- if (can_proxy_read && !must_promote) {
+ if (can_proxy_read) {
do_proxy_read(op);
did_proxy_read = true;
} else {