purge_queue.update_op_limit(*mdsmap);
}
+ if (scrubstack->is_scrubbing()) {
+ if (mdsmap->get_max_mds() > 1) {
+ auto c = new C_MDSInternalNoop;
+ scrubstack->scrub_abort(c);
+ }
+ }
mdcache->handle_mdsmap(*mdsmap);
}
cmd_getval(g_ceph_context, cmdmap, "scrubops", scrubop_vec);
cmd_getval(g_ceph_context, cmdmap, "path", path);
+ /* Multiple MDS scrub is not currently supported. See also: https://tracker.ceph.com/issues/12274 */
+ if (mdsmap->get_max_mds() > 1) {
+ ss << "Scrub is not currently supported for multiple active MDS. Please reduce max_mds to 1 and then scrub.";
+ return true;
+ }
+
C_SaferCond cond;
command_scrub_start(f, path, "", scrubop_vec, &cond);
cond.wait();
*/
void scrub_status(Formatter *f);
+ bool is_scrubbing() const { return !inode_stack.empty(); }
+
private:
// scrub abort is _not_ a state, rather it's an operation that's
// performed after in-progress scrubs are finished.