X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=sidebyside;f=lustre%2Fobdclass%2Fscrub.c;h=fabb7bf64b39ca962586cd5acbbb6d913f440a39;hb=ebc793d7d4407177a7876e03776fc3727c174ff1;hp=b2e93c6dcc4087ea29a2a5949b7d670681f6f72f;hpb=6e9b8f592bfc4f51141e2c6bff663c079fcd2c1b;p=fs%2Flustre-release.git diff --git a/lustre/obdclass/scrub.c b/lustre/obdclass/scrub.c index b2e93c6..fabb7bf 100644 --- a/lustre/obdclass/scrub.c +++ b/lustre/obdclass/scrub.c @@ -41,12 +41,13 @@ static inline struct dt_device *scrub_obj2dev(struct dt_object *obj) { - return container_of0(obj->do_lu.lo_dev, struct dt_device, dd_lu_dev); + return container_of_safe(obj->do_lu.lo_dev, struct dt_device, + dd_lu_dev); } static void scrub_file_to_cpu(struct scrub_file *des, struct scrub_file *src) { - memcpy(des->sf_uuid, src->sf_uuid, 16); + uuid_copy(&des->sf_uuid, &src->sf_uuid); des->sf_flags = le64_to_cpu(src->sf_flags); des->sf_magic = le32_to_cpu(src->sf_magic); des->sf_status = le16_to_cpu(src->sf_status); @@ -80,7 +81,7 @@ static void scrub_file_to_cpu(struct scrub_file *des, struct scrub_file *src) static void scrub_file_to_le(struct scrub_file *des, struct scrub_file *src) { - memcpy(des->sf_uuid, src->sf_uuid, 16); + uuid_copy(&des->sf_uuid, &src->sf_uuid); des->sf_flags = cpu_to_le64(src->sf_flags); des->sf_magic = cpu_to_le32(src->sf_magic); des->sf_status = cpu_to_le16(src->sf_status); @@ -112,18 +113,18 @@ static void scrub_file_to_le(struct scrub_file *des, struct scrub_file *src) memcpy(des->sf_oi_bitmap, src->sf_oi_bitmap, SCRUB_OI_BITMAP_SIZE); } -void scrub_file_init(struct lustre_scrub *scrub, __u8 *uuid) +void scrub_file_init(struct lustre_scrub *scrub, uuid_t uuid) { struct scrub_file *sf = &scrub->os_file; memset(sf, 0, sizeof(*sf)); - memcpy(sf->sf_uuid, uuid, 16); + uuid_copy(&sf->sf_uuid, &uuid); sf->sf_magic = SCRUB_MAGIC_V1; sf->sf_status = SS_INIT; } EXPORT_SYMBOL(scrub_file_init); -void scrub_file_reset(struct lustre_scrub *scrub, __u8 *uuid, __u64 flags) +void scrub_file_reset(struct lustre_scrub *scrub, uuid_t uuid, u64 flags) { struct scrub_file *sf = &scrub->os_file; @@ -131,7 +132,7 @@ void scrub_file_reset(struct lustre_scrub *scrub, __u8 *uuid, __u64 flags) "%#llx, add flags = %#llx\n", scrub->os_name, sf->sf_flags, flags); - memcpy(sf->sf_uuid, uuid, 16); + uuid_copy(&sf->sf_uuid, &uuid); sf->sf_status = SS_INIT; sf->sf_flags |= flags; sf->sf_flags &= ~SF_AUTO; @@ -275,7 +276,6 @@ int scrub_start(int (*threadfn)(void *data), struct lustre_scrub *scrub, void *data, __u32 flags) { struct ptlrpc_thread *thread = &scrub->os_thread; - struct l_wait_info lwi = { 0 }; struct task_struct *task; int rc; ENTRY; @@ -290,9 +290,8 @@ again: if (unlikely(thread_is_stopping(thread))) { spin_unlock(&scrub->os_lock); - l_wait_event(thread->t_ctl_waitq, - thread_is_stopped(thread), - &lwi); + wait_event_idle(thread->t_ctl_waitq, + thread_is_stopped(thread)); goto again; } spin_unlock(&scrub->os_lock); @@ -317,9 +316,8 @@ again: RETURN(rc); } - l_wait_event(thread->t_ctl_waitq, - thread_is_running(thread) || thread_is_stopped(thread), - &lwi); + wait_event_idle(thread->t_ctl_waitq, + thread_is_running(thread) || thread_is_stopped(thread)); RETURN(0); } @@ -328,7 +326,6 @@ EXPORT_SYMBOL(scrub_start); void scrub_stop(struct lustre_scrub *scrub) { struct ptlrpc_thread *thread = &scrub->os_thread; - struct l_wait_info lwi = { 0 }; /* os_lock: sync status between stop and scrub thread */ spin_lock(&scrub->os_lock); @@ -336,9 +333,8 @@ void scrub_stop(struct lustre_scrub *scrub) thread_set_flags(thread, SVC_STOPPING); spin_unlock(&scrub->os_lock); wake_up_all(&thread->t_ctl_waitq); - l_wait_event(thread->t_ctl_waitq, - thread_is_stopped(thread), - &lwi); + wait_event_idle(thread->t_ctl_waitq, + thread_is_stopped(thread)); /* Do not skip the last lock/unlock, which can guarantee that * the caller cannot return until the OI scrub thread exit. */ spin_lock(&scrub->os_lock); @@ -380,7 +376,7 @@ static void scrub_bits_dump(struct seq_file *m, int bits, const char *names[], seq_printf(m, "%s:%c", prefix, bits != 0 ? ' ' : '\n'); - for (i = 0, flag = 1; bits != 0; i++, flag = 1 << i) { + for (i = 0, flag = 1; bits != 0; i++, flag = BIT(i)) { if (flag & bits) { bits &= ~flag; seq_printf(m, "%s%c", names[i], @@ -479,7 +475,7 @@ void scrub_dump(struct seq_file *m, struct lustre_scrub *scrub) seq_printf(m, "run_time: %lld seconds\n" "average_speed: %lld objects/sec\n" - "real-time_speed: %lld objects/sec\n" + "real_time_speed: %lld objects/sec\n" "current_position: %llu\n" "scrub_in_prior: %s\n" "scrub_full_speed: %s\n" @@ -492,9 +488,9 @@ void scrub_dump(struct seq_file *m, struct lustre_scrub *scrub) } else { if (sf->sf_run_time != 0) speed = div_s64(speed, sf->sf_run_time); - seq_printf(m, "run_time: %ld seconds\n" + seq_printf(m, "run_time: %d seconds\n" "average_speed: %lld objects/sec\n" - "real-time_speed: N/A\n" + "real_time_speed: N/A\n" "current_position: N/A\n", sf->sf_run_time, speed); }