__u32 ltd_index;
struct ltd_qos ltd_qos; /* qos info per target */
struct obd_statfs ltd_statfs;
+ struct ptlrpc_thread *ltd_recovery_thread;
unsigned long ltd_active:1,/* is this target up for requests */
ltd_activate:1,/* should target be activated */
- ltd_reap:1; /* should this target be deleted */
+ ltd_reap:1, /* should this target be deleted */
+ ltd_got_update_log:1; /* Already got update log */
};
#define TGT_PTRS 256 /* number of pointers at 1st level */
int lod_connects;
unsigned int lod_recovery_completed:1,
lod_initialized:1,
- lod_lmv_failout:1;
+ lod_lmv_failout:1,
+ lod_child_got_update_log:1;
/* lov settings descriptor storing static information */
struct lov_desc lod_desc;
/* Description of MDT */
struct lod_tgt_descs lod_mdt_descs;
+ /* Recovery thread for lod_child */
+ struct ptlrpc_thread lod_child_recovery_thread;
+
/* maximum EA size underlied OSD may have */
unsigned int lod_osd_max_easize;
struct lu_name lti_name;
struct lu_buf lti_linkea_buf;
struct dt_insert_rec lti_dt_rec;
+ struct llog_catid lti_cid;
+ struct llog_cookie lti_cookie;
};
extern const struct lu_device_operations lod_lu_ops;
struct dt_object, do_lu);
}
-static inline struct dt_object *dt_object_child(struct dt_object *o)
-{
- return container_of0(lu_object_next(&(o)->do_lu),
- struct dt_object, do_lu);
-}
-
extern struct lu_context_key lod_thread_key;
static inline struct lod_thread_info *lod_env_info(const struct lu_env *env)
if ((__dev)->lod_osts_size > 0) \
cfs_foreach_bit((__dev)->lod_ost_bitmap, (index))
+#define lod_foreach_mdt(mdt_dev, index) \
+ cfs_foreach_bit((mdt_dev)->lod_mdt_bitmap, (index))
+
/* lod_dev.c */
extern struct kmem_cache *lod_object_kmem;
int lod_fld_lookup(const struct lu_env *env, struct lod_device *lod,
const struct lu_fid *fid, __u32 *tgt, int *flags);
+int lod_sub_init_llog(const struct lu_env *env, struct lod_device *lod,
+ struct dt_device *dt);
+void lod_sub_fini_llog(const struct lu_env *env,
+ struct dt_device *dt, struct ptlrpc_thread *thread);
+int lodname2mdt_index(char *lodname, __u32 *mdt_index);
+
/* lod_lov.c */
void lod_getref(struct lod_tgt_descs *ltd);
void lod_putref(struct lod_device *lod, struct lod_tgt_descs *ltd);
struct thandle *th);
int lod_sub_object_punch(const struct lu_env *env, struct dt_object *dt,
__u64 start, __u64 end, struct thandle *th);
+
+int lod_sub_prep_llog(const struct lu_env *env, struct lod_device *lod,
+ struct dt_device *dt, int index);
#endif