sf->sf_items_updated_prior++;
else
sf->sf_items_updated++;
-
- /* The target has been changed, need to be re-loaded. */
- lu_object_purge(info->oti_env, osd2lu_dev(dev), fid);
}
GOTO(out, rc);
struct l_wait_info lwi;
lwi = LWI_TIMEOUT(cfs_time_seconds(cfs_fail_val), NULL, NULL);
- l_wait_event(thread->t_ctl_waitq,
- !list_empty(&scrub->os_inconsistent_items) ||
- !thread_is_running(thread),
- &lwi);
+ if (likely(lwi.lwi_timeout > 0))
+ l_wait_event(thread->t_ctl_waitq,
+ !list_empty(&scrub->os_inconsistent_items) ||
+ !thread_is_running(thread),
+ &lwi);
}
if (OBD_FAIL_CHECK(OBD_FAIL_OSD_SCRUB_CRASH)) {
{ "PENDING", { 0, 0, 0 }, 0, NULL, NULL },
/* ROOT */
- { "ROOT", { FID_SEQ_ROOT, 1, 0 },
+ { "ROOT", { FID_SEQ_ROOT, FID_OID_ROOT, 0 },
OLF_SCAN_SUBITEMS | OLF_HIDE_FID, osd_ios_ROOT_scan, NULL },
/* changelog_catalog */
.oifb_info = info,
.oifb_dev = dev,
.oifb_dentry = dentry };
- struct file *filp = &info->oti_it_ea.oie_file;
+ struct file *filp = &info->oti_file;
struct inode *inode = dentry->d_inode;
const struct file_operations *fops = inode->i_fop;
int rc;
again:
if (thread_is_running(thread)) {
spin_unlock(&scrub->os_lock);
- if (!scrub->os_partial_scan || flags & SS_AUTO_PARTIAL)
+ if (!(scrub->os_file.sf_flags & SF_AUTO) ||
+ (flags & (SS_AUTO_FULL | SS_AUTO_PARTIAL)))
RETURN(-EALREADY);
osd_scrub_join(dev, flags, false);