#include <lustre_net.h>
#include <lustre_dlm.h>
#include <lustre_fid.h>
+#include <md_object.h>
-#define HALF_SEC (CFS_HZ >> 1)
+#define HALF_SEC (HZ >> 1)
#define LFSCK_CHECKPOINT_INTERVAL 60
#define LFSCK_NAMEENTRY_DEAD 1 /* The object has been unlinked. */
};
enum lfsck_flags {
- /* Finish to the cycle scanning. */
+ /* Finish the first cycle scanning. */
LF_SCANNED_ONCE = 0x00000001ULL,
/* There is some namespace inconsistency. */
struct dt_device *li_bottom;
struct ldlm_namespace *li_namespace;
struct local_oid_storage *li_los;
- struct dt_object *li_local_root; /* backend root "/" */
+ struct lu_fid li_local_root_fid; /* backend root "/" */
struct lu_fid li_global_root_fid; /* /ROOT */
struct dt_object *li_bookmark_obj;
struct lfsck_bookmark li_bookmark_ram;
/* It for directory traversal */
struct dt_it *li_di_dir;
+ /* namespace-based directory traversal position. */
+ __u64 li_cookie_dir;
+
/* Arguments for low layer otable-based iteration. */
__u32 li_args_oit;
struct lu_fid lti_fid;
struct lu_fid lti_fid2;
struct lu_attr lti_la;
+ struct ost_id lti_oi;
+ union {
+ struct lustre_mdt_attrs lti_lma;
+ /* old LMA for compatibility */
+ char lti_lma_old[LMA_OLD_SIZE];
+ };
/* lti_ent and lti_key must be conjoint,
* then lti_ent::lde_name will be lti_key. */
struct lu_dirent lti_ent;
des->lp_dir_cookie = cpu_to_le64(src->lp_dir_cookie);
}
-static inline cfs_umode_t lfsck_object_type(const struct dt_object *obj)
+static inline umode_t lfsck_object_type(const struct dt_object *obj)
{
return lu_object_attr(&obj->do_lu);
}
lu_object_put(env, &obj->do_lu);
}
+static inline mdsno_t lfsck_dev_idx(struct dt_device *dev)
+{
+ return dev->dd_lu_dev.ld_site->ld_seq_site->ss_node_id;
+}
+
#endif /* _LFSCK_INTERNAL_H */