Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
LU-12616 obclass: fix MDS start/stop race
[fs/lustre-release.git]
/
lustre
/
lfsck
/
lfsck_internal.h
diff --git
a/lustre/lfsck/lfsck_internal.h
b/lustre/lfsck/lfsck_internal.h
index
3b13041
..
428e28f
100644
(file)
--- a/
lustre/lfsck/lfsck_internal.h
+++ b/
lustre/lfsck/lfsck_internal.h
@@
-20,7
+20,7
@@
* GPL HEADER END
*/
/*
* GPL HEADER END
*/
/*
- * Copyright (c) 2013, 201
6
, Intel Corporation.
+ * Copyright (c) 2013, 201
7
, Intel Corporation.
*/
/*
* lustre/lfsck/lfsck_internal.h
*/
/*
* lustre/lfsck/lfsck_internal.h
@@
-110,6
+110,7
@@
enum lfsck_namespace_trace_flags {
LNTF_CHECK_ORPHAN = 0x08,
LNTF_UNCERTAIN_LMV = 0x10,
LNTF_RECHECK_NAME_HASH = 0x20,
LNTF_CHECK_ORPHAN = 0x08,
LNTF_UNCERTAIN_LMV = 0x10,
LNTF_RECHECK_NAME_HASH = 0x20,
+ LNTF_CHECK_AGENT_ENTRY = 0x40,
LNTF_ALL = 0xff
};
LNTF_ALL = 0xff
};
@@
-278,8
+279,11
@@
struct lfsck_namespace {
/* How many linkEA overflow timestamp have been cleared. */
__u64 ln_linkea_overflow_cleared;
/* How many linkEA overflow timestamp have been cleared. */
__u64 ln_linkea_overflow_cleared;
+ /* How many agent entries have been repaired. */
+ __u64 ln_agent_entries_repaired;
+
/* For further using. 256-bytes aligned now. */
/* For further using. 256-bytes aligned now. */
- __u64 ln_reserved[1
2
];
+ __u64 ln_reserved[1
1
];
};
enum lfsck_layout_inconsistency_type {
};
enum lfsck_layout_inconsistency_type {
@@
-473,6
+477,7
@@
struct lfsck_tgt_desc {
__u32 ltd_layout_gen;
__u32 ltd_namespace_gen;
unsigned int ltd_dead:1,
__u32 ltd_layout_gen;
__u32 ltd_namespace_gen;
unsigned int ltd_dead:1,
+ ltd_retry_start:1,
ltd_layout_done:1,
ltd_namespace_done:1,
ltd_synced_failures:1;
ltd_layout_done:1,
ltd_namespace_done:1,
ltd_synced_failures:1;
@@
-616,7
+621,8
@@
struct lfsck_lmv {
ll_lmv_updated:1,
ll_inline:1,
ll_failed:1,
ll_lmv_updated:1,
ll_inline:1,
ll_failed:1,
- ll_ignore:1;
+ ll_ignore:1,
+ ll_counted:1;
struct lfsck_slave_lmv_rec *ll_lslr; /* may be vmalloc'd */
};
struct lfsck_slave_lmv_rec *ll_lslr; /* may be vmalloc'd */
};
@@
-669,6
+675,7
@@
struct lfsck_instance {
atomic_t li_ref;
atomic_t li_double_scan_count;
struct ptlrpc_thread li_thread;
atomic_t li_ref;
atomic_t li_double_scan_count;
struct ptlrpc_thread li_thread;
+ struct task_struct *li_task;
/* The time for last checkpoint, seconds */
time64_t li_time_last_checkpoint;
/* The time for last checkpoint, seconds */
time64_t li_time_last_checkpoint;
@@
-743,7
+750,8
@@
struct lfsck_instance {
li_drop_dryrun:1, /* Ever dryrun, not now. */
li_master:1, /* Master instance or not. */
li_current_oit_processed:1,
li_drop_dryrun:1, /* Ever dryrun, not now. */
li_master:1, /* Master instance or not. */
li_current_oit_processed:1,
- li_start_unplug:1;
+ li_start_unplug:1,
+ li_stopping:1;
struct lfsck_rec_lmv_save li_rec_lmv_save[LFSCK_REC_LMV_MAX_DEPTH];
};
struct lfsck_rec_lmv_save li_rec_lmv_save[LFSCK_REC_LMV_MAX_DEPTH];
};
@@
-847,13
+855,16
@@
struct lfsck_assistant_data {
int lad_prefetched;
int lad_assistant_status;
int lad_post_result;
int lad_prefetched;
int lad_assistant_status;
int lad_post_result;
- unsigned int lad_to_post:1,
- lad_to_double_scan:1,
- lad_in_double_scan:1,
- lad_exit:1,
- lad_incomplete:1;
+ unsigned long lad_flags;
bool lad_advance_lock;
};
bool lad_advance_lock;
};
+enum {
+ LAD_TO_POST = 0,
+ LAD_TO_DOUBLE_SCAN = 1,
+ LAD_IN_DOUBLE_SCAN = 2,
+ LAD_EXIT = 3,
+ LAD_INCOMPLETE = 4,
+};
#define LFSCK_TMPBUF_LEN 64
#define LFSCK_TMPBUF_LEN 64
@@
-895,7
+906,7
@@
struct lfsck_thread_info {
struct ldlm_res_id lti_resid;
struct filter_fid lti_ff;
struct dt_allocation_hint lti_hint;
struct ldlm_res_id lti_resid;
struct filter_fid lti_ff;
struct dt_allocation_hint lti_hint;
- struct lu_orphan_rec_v
2
lti_rec;
+ struct lu_orphan_rec_v
3
lti_rec;
struct lov_user_md lti_lum;
struct dt_insert_rec lti_dt_rec;
struct lu_object_conf lti_conf;
struct lov_user_md lti_lum;
struct dt_insert_rec lti_dt_rec;
struct lu_object_conf lti_conf;
@@
-915,6
+926,10
@@
int lfsck_ibits_lock(const struct lu_env *env, struct lfsck_instance *lfsck,
struct dt_object *obj, struct lustre_handle *lh,
__u64 bits, enum ldlm_mode mode);
void lfsck_ibits_unlock(struct lustre_handle *lh, enum ldlm_mode mode);
struct dt_object *obj, struct lustre_handle *lh,
__u64 bits, enum ldlm_mode mode);
void lfsck_ibits_unlock(struct lustre_handle *lh, enum ldlm_mode mode);
+int lfsck_remote_lookup_lock(const struct lu_env *env,
+ struct lfsck_instance *lfsck,
+ struct dt_object *pobj, struct dt_object *obj,
+ struct lustre_handle *lh, enum ldlm_mode mode);
int lfsck_lock(const struct lu_env *env, struct lfsck_instance *lfsck,
struct dt_object *obj, const char *name,
struct lfsck_lock_handle *llh, __u64 bits, enum ldlm_mode mode);
int lfsck_lock(const struct lu_env *env, struct lfsck_instance *lfsck,
struct dt_object *obj, const char *name,
struct lfsck_lock_handle *llh, __u64 bits, enum ldlm_mode mode);
@@
-1040,7
+1055,9
@@
int lfsck_namespace_setup(const struct lu_env *env,
/* lfsck_striped_dir.c */
void lfsck_lmv_put(const struct lu_env *env, struct lfsck_lmv *llmv);
/* lfsck_striped_dir.c */
void lfsck_lmv_put(const struct lu_env *env, struct lfsck_lmv *llmv);
-int lfsck_read_stripe_lmv(const struct lu_env *env, struct dt_object *obj,
+int lfsck_read_stripe_lmv(const struct lu_env *env,
+ struct lfsck_instance *lfsck,
+ struct dt_object *obj,
struct lmv_mds_md_v1 *lmv);
int lfsck_shard_name_to_index(const struct lu_env *env, const char *name,
int namelen, __u16 type,
struct lmv_mds_md_v1 *lmv);
int lfsck_shard_name_to_index(const struct lu_env *env, const char *name,
int namelen, __u16 type,
@@
-1049,6
+1066,7
@@
bool lfsck_is_valid_slave_name_entry(const struct lu_env *env,
struct lfsck_lmv *llmv,
const char *name, int namelen);
int lfsck_namespace_check_name(const struct lu_env *env,
struct lfsck_lmv *llmv,
const char *name, int namelen);
int lfsck_namespace_check_name(const struct lu_env *env,
+ struct lfsck_instance *lfsck,
struct dt_object *parent,
struct dt_object *child,
const struct lu_name *cname);
struct dt_object *parent,
struct dt_object *child,
const struct lu_name *cname);
@@
-1087,12
+1105,6
@@
extern const char *lfsck_flags_names[];
extern const char *lfsck_param_names[];
extern struct lu_context_key lfsck_thread_key;
extern const char *lfsck_param_names[];
extern struct lu_context_key lfsck_thread_key;
-static inline bool name_is_dot_or_dotdot(const char *name, int namelen)
-{
- return name[0] == '.' &&
- (namelen == 1 || (namelen == 2 && name[1] == '.'));
-}
-
static inline struct dt_device *lfsck_obj2dev(struct dt_object *obj)
{
return container_of0(obj->do_lu.lo_dev, struct dt_device, dd_lu_dev);
static inline struct dt_device *lfsck_obj2dev(struct dt_object *obj)
{
return container_of0(obj->do_lu.lo_dev, struct dt_device, dd_lu_dev);
@@
-1428,7
+1440,7
@@
static inline void lfsck_lad_set_bitmap(const struct lu_env *env,
if (likely(bitmap->size > index)) {
cfs_bitmap_set(bitmap, index);
if (likely(bitmap->size > index)) {
cfs_bitmap_set(bitmap, index);
-
lad->lad_incomplete = 1
;
+
set_bit(LAD_INCOMPLETE, &lad->lad_flags)
;
} else if (com->lc_type == LFSCK_TYPE_NAMESPACE) {
struct lfsck_namespace *ns = com->lc_file_ram;
} else if (com->lc_type == LFSCK_TYPE_NAMESPACE) {
struct lfsck_namespace *ns = com->lc_file_ram;
@@
-1496,6
+1508,8
@@
static inline void lfsck_lmv_header_le_to_cpu(struct lmv_mds_md_v1 *dst,
dst->lmv_master_mdt_index = le32_to_cpu(src->lmv_master_mdt_index);
dst->lmv_hash_type = le32_to_cpu(src->lmv_hash_type);
dst->lmv_layout_version = le32_to_cpu(src->lmv_layout_version);
dst->lmv_master_mdt_index = le32_to_cpu(src->lmv_master_mdt_index);
dst->lmv_hash_type = le32_to_cpu(src->lmv_hash_type);
dst->lmv_layout_version = le32_to_cpu(src->lmv_layout_version);
+ dst->lmv_migrate_offset = le32_to_cpu(src->lmv_migrate_offset);
+ dst->lmv_migrate_hash = le32_to_cpu(src->lmv_migrate_hash);
}
static inline void lfsck_lmv_header_cpu_to_le(struct lmv_mds_md_v1 *dst,
}
static inline void lfsck_lmv_header_cpu_to_le(struct lmv_mds_md_v1 *dst,
@@
-1506,6
+1520,8
@@
static inline void lfsck_lmv_header_cpu_to_le(struct lmv_mds_md_v1 *dst,
dst->lmv_master_mdt_index = cpu_to_le32(src->lmv_master_mdt_index);
dst->lmv_hash_type = cpu_to_le32(src->lmv_hash_type);
dst->lmv_layout_version = cpu_to_le32(src->lmv_layout_version);
dst->lmv_master_mdt_index = cpu_to_le32(src->lmv_master_mdt_index);
dst->lmv_hash_type = cpu_to_le32(src->lmv_hash_type);
dst->lmv_layout_version = cpu_to_le32(src->lmv_layout_version);
+ dst->lmv_migrate_offset = cpu_to_le32(src->lmv_migrate_offset);
+ dst->lmv_migrate_hash = cpu_to_le32(src->lmv_migrate_hash);
}
static inline struct lfsck_assistant_object *
}
static inline struct lfsck_assistant_object *