struct lu_device_type *ldt);
int class_unregister_type(const char *nm);
-struct obd_device *class_newdev(const char *type_name, const char *name);
+
+
+
+/**
+ allocate one minor number
+ */
+int obd_minor_alloc(void);
+/**
+ release allocated minor
+ */
+void obd_minor_release(long minor);
+/**
+ return 1 if minor is point to allocated device,
+ return 0 otherwise
+ */
+int obd_minor_valid(long minor);
+
+int obd_hashes_init(void);
+void obd_hashes_fini(void);
+
+struct obd_device *class_newdev(const char *type_name, const char *name,
+ const char *uuid);
void class_release_dev(struct obd_device *obd);
int class_name2dev(const char *name);
struct obd_device *class_name2obd(const char *name);
int class_uuid2dev(struct obd_uuid *uuid);
struct obd_device *class_uuid2obd(struct obd_uuid *uuid);
+
void class_obd_list(void);
+void obd_devlist_first(struct obd_device **pos);
+void obd_devlist_next(struct obd_device **pos);
+void obd_devlist_last(struct obd_device *pos);
+const char *obd_dev_status(struct obd_device *obd);
+
struct obd_device * class_find_client_obd(struct obd_uuid *tgt_uuid,
const char * typ_name,
struct obd_uuid *grp_uuid);
struct obd_device * class_devices_in_group(struct obd_uuid *grp_uuid,
- int *next);
-struct obd_device * class_num2obd(int num);
+ struct obd_device **prev);
+struct obd_device * class_num2obd(__u32 num);
+
int class_notify_sptlrpc_conf(const char *fsname, int namelen);
void obd_zombie_impexp_cull(void);
void obd_zombie_barrier(void);
void obd_exports_barrier(struct obd_device *obd);
+int kuc_len(int payload_len);
+struct kuc_hdr * kuc_ptr(void *p);
+int kuc_ispayload(void *p);
+void *kuc_alloc(int payload_len, int transport, int type);
+void kuc_free(void *p, int payload_len);
+
/* obd_config.c */
int class_process_config(struct lustre_cfg *lcfg);
int class_process_proc_param(char *prefix, struct lprocfs_vars *lvars,
#define class_export_rpc_put(exp) \
({ \
- LASSERT(cfs_atomic_read(&exp->exp_rpc_count) > 0); \
+ LASSERT_ATOMIC_POS(&exp->exp_rpc_count); \
cfs_atomic_dec(&(exp)->exp_rpc_count); \
CDEBUG(D_INFO, "RPC PUTting export %p : new rpc_count %d\n", \
(exp), cfs_atomic_read(&(exp)->exp_rpc_count)); \
#define class_export_lock_put(exp, lock) \
({ \
- LASSERT(cfs_atomic_read(&exp->exp_locks_count) > 0); \
+ LASSERT_ATOMIC_POS(&exp->exp_locks_count); \
cfs_atomic_dec(&(exp)->exp_locks_count); \
__class_export_del_lock_ref(exp, lock); \
CDEBUG(D_INFO, "lock PUTting export %p : new locks_count %d\n", \
#define class_export_cb_put(exp) \
({ \
- LASSERT(cfs_atomic_read(&exp->exp_cb_count) > 0); \
+ LASSERT_ATOMIC_POS(&exp->exp_cb_count); \
cfs_atomic_dec(&(exp)->exp_cb_count); \
CDEBUG(D_INFO, "callback PUTting export %p : new cb_count %d\n",\
(exp), cfs_atomic_read(&(exp)->exp_cb_count)); \
#define EXP_MD_COUNTER_INCREMENT(exp, op)
#endif
-static inline int lprocfs_nid_ldlm_stats_init(struct nid_stat* tmp) {
+static inline int lprocfs_nid_ldlm_stats_init(struct nid_stat* tmp)
+{
/* Always add in ldlm_stats */
tmp->nid_ldlm_stats = lprocfs_alloc_stats(LDLM_LAST_OPC - LDLM_FIRST_OPC
,LPROCFS_STATS_FLAG_NOPERCPU);
} \
} while (0)
-static inline int class_devno_max(void)
-{
- return MAX_OBD_DEVICES;
-}
-
static inline int obd_get_info(struct obd_export *exp, __u32 keylen,
void *key, __u32 *vallen, void *val,
struct lov_stripe_md *lsm)
RETURN(rc);
}
-static inline int obd_sync(struct obd_export *exp, struct obdo *oa,
- struct lov_stripe_md *ea, obd_size start,
- obd_size end, void *capa)
+static inline int obd_sync_rqset(struct obd_export *exp, struct obd_info *oinfo,
+ obd_size start, obd_size end)
+{
+ struct ptlrpc_request_set *set = NULL;
+ int rc;
+ ENTRY;
+
+ OBD_CHECK_DT_OP(exp->exp_obd, sync, -EOPNOTSUPP);
+ EXP_COUNTER_INCREMENT(exp, sync);
+
+ set = ptlrpc_prep_set();
+ if (set == NULL)
+ RETURN(-ENOMEM);
+
+ rc = OBP(exp->exp_obd, sync)(exp, oinfo, start, end, set);
+ if (rc == 0)
+ rc = ptlrpc_set_wait(set);
+ ptlrpc_set_destroy(set);
+ RETURN(rc);
+}
+
+static inline int obd_sync(struct obd_export *exp, struct obd_info *oinfo,
+ obd_size start, obd_size end,
+ struct ptlrpc_request_set *set)
{
int rc;
ENTRY;
OBD_CHECK_DT_OP(exp->exp_obd, sync, -EOPNOTSUPP);
EXP_COUNTER_INCREMENT(exp, sync);
- rc = OBP(exp->exp_obd, sync)(exp, oa, ea, start, end, capa);
+ rc = OBP(exp->exp_obd, sync)(exp, oinfo, start, end, set);
RETURN(rc);
}
static inline int obd_quota_adjust_qunit(struct obd_export *exp,
struct quota_adjust_qunit *oqaq,
- struct lustre_quota_ctxt *qctxt)
+ struct lustre_quota_ctxt *qctxt,
+ struct ptlrpc_request_set *set)
{
#if defined(LPROCFS) && defined(HAVE_QUOTA_SUPPORT)
struct timeval work_start;
EXP_CHECK_DT_OP(exp, quota_adjust_qunit);
EXP_COUNTER_INCREMENT(exp, quota_adjust_qunit);
- rc = OBP(exp->exp_obd, quota_adjust_qunit)(exp, oqaq, qctxt);
+ rc = OBP(exp->exp_obd, quota_adjust_qunit)(exp, oqaq, qctxt, set);
#if defined(LPROCFS) && defined(HAVE_QUOTA_SUPPORT)
if (qctxt) {
static inline int md_revalidate_lock(struct obd_export *exp,
struct lookup_intent *it,
- struct lu_fid *fid, __u32 *bits)
+ struct lu_fid *fid)
{
int rc;
ENTRY;
EXP_CHECK_MD_OP(exp, revalidate_lock);
EXP_MD_COUNTER_INCREMENT(exp, revalidate_lock);
- rc = MDP(exp->exp_obd, revalidate_lock)(exp, it, fid, bits);
+ rc = MDP(exp->exp_obd, revalidate_lock)(exp, it, fid);
RETURN(rc);
}
int raw_name2idx(int hashtype, int count, const char *name, int namelen);
/* prng.c */
-void ll_generate_random_uuid(class_uuid_t uuid_out);
+#define ll_generate_random_uuid(uuid_out) cfs_get_random_bytes(uuid_out, sizeof(class_uuid_t))
#endif /* __LINUX_OBD_CLASS_H */