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-1346 libcfs: cleanup libcfs primitive (linux-prim.h)
[fs/lustre-release.git]
/
lustre
/
osp
/
osp_internal.h
diff --git
a/lustre/osp/osp_internal.h
b/lustre/osp/osp_internal.h
index
81e3d60
..
799ef20
100644
(file)
--- a/
lustre/osp/osp_internal.h
+++ b/
lustre/osp/osp_internal.h
@@
-27,7
+27,7
@@
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
- * Copyright (c) 2012, Intel Corporation.
+ * Copyright (c) 2012,
2013,
Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
*/
/*
* This file is part of Lustre, http://www.lustre.org/
@@
-44,6
+44,7
@@
#include <obd.h>
#include <obd_class.h>
#include <dt_object.h>
#include <obd.h>
#include <obd_class.h>
#include <dt_object.h>
+#include <md_object.h>
#include <lustre_fid.h>
/*
#include <lustre_fid.h>
/*
@@
-68,6
+69,10
@@
struct osp_device {
struct dt_device opd_dt_dev;
/* corresponded OST index */
int opd_index;
struct dt_device opd_dt_dev;
/* corresponded OST index */
int opd_index;
+
+ /* corrsponded MDT index, which will be used when connecting to OST
+ * for validating the connection (see ofd_parse_connect_data) */
+ int opd_group;
/* device used to store persistent state (llogs, last ids) */
struct obd_export *opd_storage_exp;
struct dt_device *opd_storage;
/* device used to store persistent state (llogs, last ids) */
struct obd_export *opd_storage_exp;
struct dt_device *opd_storage;
@@
-93,7
+98,7
@@
struct osp_device {
int opd_got_disconnected;
int opd_imp_connected;
int opd_imp_active;
int opd_got_disconnected;
int opd_imp_connected;
int opd_imp_active;
-
int
opd_imp_seen_connected:1,
+
unsigned int
opd_imp_seen_connected:1,
opd_connect_mdt:1;
/* whether local recovery is completed:
opd_connect_mdt:1;
/* whether local recovery is completed:
@@
-114,9
+119,9
@@
struct osp_device {
/* dedicate precreate thread */
struct ptlrpc_thread opd_pre_thread;
/* thread waits for signals about pool going empty */
/* dedicate precreate thread */
struct ptlrpc_thread opd_pre_thread;
/* thread waits for signals about pool going empty */
-
cfs_waitq_t
opd_pre_waitq;
+
wait_queue_head_t
opd_pre_waitq;
/* consumers (who needs new ids) wait here */
/* consumers (who needs new ids) wait here */
-
cfs_waitq_t
opd_pre_user_waitq;
+
wait_queue_head_t
opd_pre_user_waitq;
/* current precreation status: working, failed, stopping? */
int opd_pre_status;
/* how many to precreate next time */
/* current precreation status: working, failed, stopping? */
int opd_pre_status;
/* how many to precreate next time */
@@
-140,7
+145,7
@@
struct osp_device {
int opd_syn_prev_done;
/* found records */
struct ptlrpc_thread opd_syn_thread;
int opd_syn_prev_done;
/* found records */
struct ptlrpc_thread opd_syn_thread;
-
cfs_waitq_t
opd_syn_waitq;
+
wait_queue_head_t
opd_syn_waitq;
/* list of remotely committed rpc */
cfs_list_t opd_syn_committed_there;
/* number of changes being under sync */
/* list of remotely committed rpc */
cfs_list_t opd_syn_committed_there;
/* number of changes being under sync */
@@
-168,7
+173,7
@@
struct osp_device {
*/
struct obd_statfs opd_statfs;
cfs_time_t opd_statfs_fresh_till;
*/
struct obd_statfs opd_statfs;
cfs_time_t opd_statfs_fresh_till;
-
cfs_timer_t
opd_statfs_timer;
+
struct timer_list
opd_statfs_timer;
int opd_statfs_update_in_progress;
/* how often to update statfs data */
int opd_statfs_maxage;
int opd_statfs_update_in_progress;
/* how often to update statfs data */
int opd_statfs_maxage;
@@
-176,18
+181,24
@@
struct osp_device {
cfs_proc_dir_entry_t *opd_symlink;
};
cfs_proc_dir_entry_t *opd_symlink;
};
-extern
cfs_mem_cache_t
*osp_object_kmem;
+extern
struct kmem_cache
*osp_object_kmem;
/* this is a top object */
struct osp_object {
/* this is a top object */
struct osp_object {
- struct lu_object_header opo_header;
- struct dt_object opo_obj;
- int opo_reserved:1,
- opo_new:1;
+ struct lu_object_header opo_header;
+ struct dt_object opo_obj;
+ unsigned int opo_reserved:1,
+ opo_new:1,
+ opo_empty:1;
+
+ /* read/write lock for md osp object */
+ struct rw_semaphore opo_sem;
+ const struct lu_env *opo_owner;
};
extern struct lu_object_operations osp_lu_obj_ops;
extern const struct dt_device_operations osp_dt_ops;
};
extern struct lu_object_operations osp_lu_obj_ops;
extern const struct dt_device_operations osp_dt_ops;
+extern struct dt_object_operations osp_md_obj_ops;
struct osp_thread_info {
struct lu_buf osi_lb;
struct osp_thread_info {
struct lu_buf osi_lb;
@@
-207,6
+218,8
@@
struct osp_thread_info {
struct llog_cookie osi_cookie;
struct llog_catid osi_cid;
struct lu_seq_range osi_seq;
struct llog_cookie osi_cookie;
struct llog_catid osi_cid;
struct lu_seq_range osi_seq;
+ struct ldlm_res_id osi_resid;
+ struct obdo osi_obdo;
};
static inline void osp_objid_buf_prep(struct lu_buf *buf, loff_t *off,
};
static inline void osp_objid_buf_prep(struct lu_buf *buf, loff_t *off,
@@
-341,8
+354,8
@@
static int osp_fid_end_seq(const struct lu_env *env, struct lu_fid *fid)
struct osp_thread_info *info = osp_env_info(env);
struct ost_id *oi = &info->osi_oi;
struct osp_thread_info *info = osp_env_info(env);
struct ost_id *oi = &info->osi_oi;
- fid_
ostid_pack
(fid, oi);
- return o
i->oi_id
== IDIF_MAX_OID;
+ fid_
to_ostid
(fid, oi);
+ return o
stid_id(oi)
== IDIF_MAX_OID;
} else {
return fid_oid(fid) == LUSTRE_DATA_SEQ_MAX_WIDTH;
}
} else {
return fid_oid(fid) == LUSTRE_DATA_SEQ_MAX_WIDTH;
}
@@
-378,6
+391,10
@@
static inline int osp_is_fid_client(struct osp_device *osp)
void osp_update_last_id(struct osp_device *d, obd_id objid);
extern struct llog_operations osp_mds_ost_orig_logops;
void osp_update_last_id(struct osp_device *d, obd_id objid);
extern struct llog_operations osp_mds_ost_orig_logops;
+/* osp_md_object.c */
+int osp_trans_start(const struct lu_env *env, struct dt_device *dt,
+ struct thandle *th);
+int osp_trans_stop(const struct lu_env *env, struct thandle *th);
/* osp_precreate.c */
int osp_init_precreate(struct osp_device *d);
int osp_precreate_reserve(const struct lu_env *env, struct osp_device *d);
/* osp_precreate.c */
int osp_init_precreate(struct osp_device *d);
int osp_precreate_reserve(const struct lu_env *env, struct osp_device *d);