From 6daa2b3f3841eaccbc88c6ff184ab573f654b054 Mon Sep 17 00:00:00 2001 From: Fan Yong Date: Thu, 11 Oct 2012 19:19:28 +0800 Subject: [PATCH] LU-2142 scrub: reset completed scrub position if retrigger If former OI scrub has been completed, and the user wants to run the OI scrub again, then reset the OI scrub to make it to rescan the device from the beginning. Signed-off-by: Fan Yong Change-Id: I9b067f50df81461702c7f3db0eadd2bf3ebf5699 Reviewed-on: http://review.whamcloud.com/4252 Tested-by: Hudson Reviewed-by: Andreas Dilger Reviewed-by: Bobi Jam Tested-by: Maloo --- lustre/osd-ldiskfs/osd_scrub.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lustre/osd-ldiskfs/osd_scrub.c b/lustre/osd-ldiskfs/osd_scrub.c index 8f57596..f532f5a 100644 --- a/lustre/osd-ldiskfs/osd_scrub.c +++ b/lustre/osd-ldiskfs/osd_scrub.c @@ -955,6 +955,9 @@ again: } cfs_spin_unlock(&scrub->os_lock); + if (scrub->os_file.sf_status == SS_COMPLETED) + flags |= SS_RESET; + scrub->os_start_flags = flags; thread_set_flags(thread, 0); rc = cfs_create_thread(osd_scrub_main, dev, 0); @@ -973,16 +976,12 @@ again: int osd_scrub_start(struct osd_device *dev) { - __u32 flags = SS_AUTO; - int rc; + int rc; ENTRY; - if (dev->od_scrub.os_file.sf_status == SS_COMPLETED) - flags |= SS_RESET; - /* od_otable_mutex: prevent curcurrent start/stop */ cfs_mutex_lock(&dev->od_otable_mutex); - rc = do_osd_scrub_start(dev, flags); + rc = do_osd_scrub_start(dev, SS_AUTO); cfs_mutex_unlock(&dev->od_otable_mutex); RETURN(rc == -EALREADY ? 0 : rc); -- 1.8.3.1