X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flustre_lfsck.h;h=64b0d559218973d24954f4df1e3518666bbf830c;hb=4c2514f4832801374092f3a48c755248af345566;hp=ee7d7839f8b4e69238a249b436385b6360d2dfcc;hpb=6871453b053d5756aba2321122db4564df5c1c57;p=fs%2Flustre-release.git diff --git a/lustre/include/lustre_lfsck.h b/lustre/include/lustre_lfsck.h index ee7d783..64b0d559 100644 --- a/lustre/include/lustre_lfsck.h +++ b/lustre/include/lustre_lfsck.h @@ -20,7 +20,7 @@ * GPL HEADER END */ /* - * Copyright (c) 2013, 2014, Intel Corporation. + * Copyright (c) 2013, 2017, Intel Corporation. */ /* * lustre/include/lustre_lfsck.h @@ -33,7 +33,7 @@ #ifndef _LUSTRE_LFSCK_H # define _LUSTRE_LFSCK_H -#include +#include #include #include #include @@ -51,6 +51,28 @@ enum lfsck_pv_status { LPVS_INCONSISTENT_TOFIX = 2, }; +enum lfsck_events_local { + LEL_FID_ACCESSED = 1, + LEL_PAIRS_VERIFY_LOCAL = 2, +}; + +struct lfsck_req_local { + __u32 lrl_event; + __u32 lrl_status; + __u16 lrl_active; + __u16 lrl_padding0; + __u32 lrl_padding1; + struct lu_fid lrl_fid; + struct filter_fid lrl_ff_client; + struct filter_fid lrl_ff_local; +}; + +struct lfsck_layout_dangling_key { + struct lu_fid lldk_fid; + __u32 lldk_comp_id; + __u32 lldk_ea_off; +}; + typedef int (*lfsck_out_notify)(const struct lu_env *env, void *data, enum lfsck_events event); @@ -71,27 +93,38 @@ int lfsck_start(const struct lu_env *env, struct dt_device *key, struct lfsck_start_param *lsp); int lfsck_stop(const struct lu_env *env, struct dt_device *key, struct lfsck_stop *stop); +int lfsck_in_notify_local(const struct lu_env *env, struct dt_device *key, + struct lfsck_req_local *lrl, struct thandle *th); int lfsck_in_notify(const struct lu_env *env, struct dt_device *key, - struct lfsck_request *lr, struct thandle *th); + struct lfsck_request *lr); int lfsck_query(const struct lu_env *env, struct dt_device *key, struct lfsck_request *req, struct lfsck_reply *rep, struct lfsck_query *que); -int lfsck_get_speed(struct seq_file *m, struct dt_device *key); -int lfsck_set_speed(struct dt_device *key, int val); -int lfsck_get_windows(struct seq_file *m, struct dt_device *key); -int lfsck_set_windows(struct dt_device *key, int val); +int lfsck_get_speed(char *buf, struct dt_device *key); +int lfsck_set_speed(struct dt_device *key, __u32 val); +int lfsck_get_windows(char *buf, struct dt_device *key); +int lfsck_set_windows(struct dt_device *key, unsigned int val); int lfsck_dump(struct seq_file *m, struct dt_device *key, enum lfsck_type type); -static inline void lfsck_pack_rfa(struct lfsck_request *lr, +static inline void lfsck_pack_rfa(struct lfsck_req_local *lrl, const struct lu_fid *fid, - __u32 event, __u16 com) + enum lfsck_events_local event, __u16 com) { - memset(lr, 0, sizeof(*lr)); - lr->lr_fid = *fid; - lr->lr_event = event; - lr->lr_active = com; + memset(lrl, 0, sizeof(*lrl)); + lrl->lrl_fid = *fid; + lrl->lrl_event = event; + lrl->lrl_active = com; } +static inline bool lovea_slot_is_dummy(const struct lov_ost_data_v1 *obj) +{ + /* zero area does not care about the bytes-order. */ + if (obj->l_ost_oi.oi.oi_id == 0 && obj->l_ost_oi.oi.oi_seq == 0 && + obj->l_ost_idx == 0 && obj->l_ost_gen == 0) + return true; + + return false; +} #endif /* _LUSTRE_LFSCK_H */