From 773c6672533f680f51c2632cefb4249a6190d269 Mon Sep 17 00:00:00 2001 From: Fan Yong Date: Thu, 11 Oct 2012 17:42:29 +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: I5b8e9ee51ccbf95ed131b963389c4ecfb92b9035 Reviewed-on: http://review.whamcloud.com/4250 Tested-by: Hudson Tested-by: Maloo Reviewed-by: Bobi Jam Reviewed-by: Andreas Dilger --- 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 7e58c20..352cdb8 100644 --- a/lustre/osd-ldiskfs/osd_scrub.c +++ b/lustre/osd-ldiskfs/osd_scrub.c @@ -950,6 +950,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); @@ -968,16 +971,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