Many of these conditions are copied over from is_active() — we should try and unify that as much as possible so we don't need to remember and update both of them for the same issues (at least now that we're implicitly calling is_active() anyway — reducing those duplicate calls might also make is_write_ready() as a separate thing less useful?).