when network is up until over mon_osd_blacklist_default_expire,
the ceph-fuse will receive two epoch OSDMap,one include blacklist,
the other one is blacklist recovery,but blacklist_events include recovered blacklist,
then the client is added to the blacklist in error.
the solution is that used the objecter->with_osdmap to determine whether there is a blacklist,
the objecter->with_osdmap has the correct blacklist.
Fixes:https://tracker.ceph.com/issues/37617
Signed-off-by: gengjichao <chaofuwa2008@126.com>
// some PGs were inaccessible.
objecter->op_cancel_writes(-EBLACKLISTED);
- } else if (blacklisted) {
+ }
+
+ if (blacklisted) {
// Handle case where we were blacklisted but no longer are
blacklisted = objecter->with_osdmap([myaddrs](const OSDMap &o){
return o.is_blacklisted(myaddrs);});