if (thread_is_running(&scrub->os_thread)) {
result = -EINPROGRESS;
} else if (!dev->od_noscrub) {
- result = osd_scrub_start(dev);
+ /* Since we do not know the right OI mapping,
+ * we have to trigger OI scrub to scan the
+ * whole device. */
+ result = osd_scrub_start(dev, SS_AUTO_FULL |
+ SS_CLEAR_DRYRUN | SS_CLEAR_FAILOUT);
LCONSOLE_WARN("%.16s: trigger OI scrub by RPC "
"for "DFID", rc = %d [1]\n",
osd_name(dev), PFID(fid),result);
}
if (!dev->od_noscrub && ++once == 1) {
- rc = osd_scrub_start(dev);
+ rc = osd_scrub_start(dev, SS_AUTO_PARTIAL | SS_CLEAR_DRYRUN |
+ SS_CLEAR_FAILOUT);
LCONSOLE_WARN("%.16s: trigger OI scrub by RPC for "DFID
", rc = %d [2]\n",
LDISKFS_SB(osd_sb(dev))->s_es->s_volume_name,
PFID(fid), rc);
- if (rc == 0)
+ if (rc == 0 || rc == -EALREADY)
goto again;
}
if (server_name_is_ost(o->od_svname))
o->od_is_ost = 1;
+ o->od_full_scrub_ratio = OFSR_DEFAULT;
+ o->od_full_scrub_speed = FULL_SCRUB_SPEED_DEFULT;
rc = osd_mount(env, o, cfg);
if (rc != 0)
GOTO(out_capa, rc);