X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fofd%2Fofd_internal.h;h=cc5fe41233e378719d8d394994471e0d7e0d959e;hb=d8b486644ceef57c7388e8049b90bde4bf967500;hp=2aca2d2efa2d68f70f8104b4a1c13dcd156e70db;hpb=b6cbc96dad17c33200670c0555a81055976f4f42;p=fs%2Flustre-release.git diff --git a/lustre/ofd/ofd_internal.h b/lustre/ofd/ofd_internal.h index 2aca2d2..cc5fe41 100644 --- a/lustre/ofd/ofd_internal.h +++ b/lustre/ofd/ofd_internal.h @@ -49,6 +49,7 @@ #define OFD_INCOMPAT_SUPP (OBD_INCOMPAT_GROUPS | OBD_INCOMPAT_OST | \ OBD_INCOMPAT_COMMON_LR) #define OFD_MAX_GROUPS 256 +#define OFD_PRECREATE_BATCH_DEFAULT (FILTER_SUBDIR_COUNT * 4) /* Limit the returned fields marked valid to those that we actually might set */ #define OFD_VALID_FLAGS (LA_TYPE | LA_MODE | LA_SIZE | LA_BLOCKS | \ @@ -72,6 +73,24 @@ enum { LPROC_OFD_LAST, }; +/* for job stats */ +enum { + LPROC_OFD_STATS_READ = 0, + LPROC_OFD_STATS_WRITE = 1, + LPROC_OFD_STATS_SETATTR = 2, + LPROC_OFD_STATS_PUNCH = 3, + LPROC_OFD_STATS_SYNC = 4, + LPROC_OFD_STATS_LAST, +}; + +static inline void ofd_counter_incr(struct obd_export *exp, int opcode, + char *jobid, long amount) +{ + if (exp->exp_obd && exp->exp_obd->u.obt.obt_jobstats.ojs_hash && + (exp->exp_connect_flags & OBD_CONNECT_JOBSTATS)) + lprocfs_job_stats_log(exp->exp_obd, jobid, opcode, amount); +} + struct ofd_device { struct dt_device ofd_dt_dev; struct dt_device *ofd_osd; @@ -96,6 +115,7 @@ struct ofd_device { struct dt_object *ofd_lastid_obj[OFD_MAX_GROUPS]; cfs_spinlock_t ofd_objid_lock; unsigned long ofd_destroys_in_progress; + int ofd_precreate_batch; /* protect all statfs-related counters */ cfs_spinlock_t ofd_osfs_lock; @@ -288,6 +308,7 @@ void ofd_free_capa_keys(struct ofd_device *ofd); /* ofd_dev.c */ extern struct lu_context_key ofd_thread_key; +int ofd_postrecov(const struct lu_env *env, struct ofd_device *ofd); /* ofd_obd.c */ extern struct obd_ops ofd_obd_ops; @@ -304,6 +325,7 @@ int ofd_group_load(const struct lu_env *env, struct ofd_device *ofd, int); int ofd_fs_setup(const struct lu_env *env, struct ofd_device *ofd, struct obd_device *obd); void ofd_fs_cleanup(const struct lu_env *env, struct ofd_device *ofd); +int ofd_precreate_batch(struct ofd_device *ofd, int batch); /* ofd_io.c */ int ofd_preprw(const struct lu_env *env,int cmd, struct obd_export *exp, @@ -329,9 +351,19 @@ int ofd_txn_stop_cb(const struct lu_env *env, struct thandle *txn, void *cookie); /* lproc_ofd.c */ +#ifdef LPROCFS void lprocfs_ofd_init_vars(struct lprocfs_static_vars *lvars); int lproc_ofd_attach_seqstat(struct obd_device *dev); extern struct file_operations ofd_per_nid_stats_fops; +void ofd_stats_counter_init(struct lprocfs_stats *stats); +#else +static void lprocfs_ofd_init_vars(struct lprocfs_static_vars *lvars) +{ + memset(lvars, 0, sizeof(*lvars)); +} +static inline int lproc_ofd_attach_seqstat(struct obd_device *dev) {} +static inline void ofd_stats_counter_init(struct lprocfs_stats *stats) {} +#endif /* ofd_objects.c */ struct ofd_object *ofd_object_find(const struct lu_env *env, @@ -342,8 +374,8 @@ struct ofd_object *ofd_object_find_or_create(const struct lu_env *env, const struct lu_fid *fid, struct lu_attr *attr); int ofd_object_ff_check(const struct lu_env *env, struct ofd_object *fo); -int ofd_precreate_object(const struct lu_env *env, struct ofd_device *ofd, - obd_id id, obd_seq seq); +int ofd_precreate_objects(const struct lu_env *env, struct ofd_device *ofd, + obd_id id, obd_seq group, int nr); void ofd_object_put(const struct lu_env *env, struct ofd_object *fo); int ofd_attr_set(const struct lu_env *env, struct ofd_object *fo,