static int llog_test_1(struct obd_device *obd, char *name)
{
struct llog_handle *llh;
- struct llog_ctxt *ctxt = llog_get_context(obd, LLOG_TEST_ORIG_CTXT);
+ struct llog_ctxt *ctxt;
int rc;
int rc2;
ENTRY;
CWARN("1a: create a log with name: %s\n", name);
+ ctxt = llog_get_context(&obd->obd_llogs, LLOG_TEST_ORIG_CTXT);
LASSERT(ctxt);
rc = llog_create(ctxt, &llh, NULL, name);
struct llog_handle *loghandle;
struct llog_logid logid;
int rc;
- struct llog_ctxt *ctxt = llog_get_context(obd, LLOG_TEST_ORIG_CTXT);
+ struct llog_ctxt *ctxt;
ENTRY;
+ ctxt = llog_get_context(&obd->obd_llogs, LLOG_TEST_ORIG_CTXT);
CWARN("2a: re-open a log with name: %s\n", name);
rc = llog_create(ctxt, llh, NULL, name);
if (rc) {
int rc, i, buflen;
struct llog_mini_rec lmr;
struct llog_cookie cookie;
- struct llog_ctxt *ctxt = llog_get_context(obd, LLOG_TEST_ORIG_CTXT);
+ struct llog_ctxt *ctxt;
int num_recs = 0;
char *buf;
struct llog_rec_hdr rec;
-
ENTRY;
+ ctxt = llog_get_context(&obd->obd_llogs, LLOG_TEST_ORIG_CTXT);
lmr.lmr_hdr.lrh_len = lmr.lmr_tail.lrt_len = LLOG_MIN_REC_SIZE;
lmr.lmr_hdr.lrh_type = 0xf00f00;
char name[10];
int rc;
struct llog_mini_rec lmr;
- struct llog_ctxt *ctxt = llog_get_context(obd, LLOG_TEST_ORIG_CTXT);
-
+ struct llog_ctxt *ctxt;
ENTRY;
+ ctxt = llog_get_context(&obd->obd_llogs, LLOG_TEST_ORIG_CTXT);
lmr.lmr_hdr.lrh_len = lmr.lmr_tail.lrt_len = LLOG_MIN_REC_SIZE;
lmr.lmr_hdr.lrh_type = 0xf00f00;
static int llog_test_6(struct obd_device *obd, char *name)
{
struct obd_device *mdc_obd;
- struct llog_ctxt *ctxt = llog_get_context(obd, LLOG_TEST_ORIG_CTXT);
- struct obd_uuid *mds_uuid = &ctxt->loc_exp->exp_obd->obd_uuid;
+ struct llog_ctxt *ctxt;
+ struct obd_uuid *mds_uuid;
struct lustre_handle exph = {0, };
struct obd_export *exp;
struct obd_uuid uuid = {"LLOG_TEST6_UUID"};
struct llog_ctxt *nctxt;
int rc;
+ ctxt = llog_get_context(&obd->obd_llogs, LLOG_TEST_ORIG_CTXT);
+ mds_uuid = &ctxt->loc_exp->exp_obd->obd_uuid;
+
CWARN("6a: re-open log %s using client API\n", name);
mdc_obd = class_find_client_obd(mds_uuid, LUSTRE_MDC_NAME, NULL);
if (mdc_obd == NULL) {
}
exp = class_conn2export(&exph);
- nctxt = llog_get_context(mdc_obd, LLOG_CONFIG_REPL_CTXT);
+ nctxt = llog_get_context(&mdc_obd->obd_llogs, LLOG_CONFIG_REPL_CTXT);
rc = llog_create(nctxt, &llh, NULL, name);
if (rc) {
CERROR("6: llog_create failed %d\n", rc);
RETURN(rc);
}
+static int llog_test_7(struct obd_device *obd)
+{
+ struct llog_ctxt *ctxt;
+ struct llog_handle *llh;
+ struct llog_create_rec lcr;
+ char name[10];
+ int rc;
+ ENTRY;
+
+ ctxt = llog_get_context(&obd->obd_llogs, LLOG_TEST_ORIG_CTXT);
+ sprintf(name, "%x", llog_test_rand+2);
+ CWARN("7: create a log with name: %s\n", name);
+ LASSERT(ctxt);
+
+ rc = llog_create(ctxt, &llh, NULL, name);
+ if (rc) {
+ CERROR("7: llog_create with name %s failed: %d\n", name, rc);
+ RETURN(rc);
+ }
+ llog_init_handle(llh, LLOG_F_IS_PLAIN, &uuid);
+
+ lcr.lcr_hdr.lrh_len = lcr.lcr_tail.lrt_len = cpu_to_le32(sizeof(lcr));
+ lcr.lcr_hdr.lrh_type = cpu_to_le32(OST_SZ_REC);
+ rc = llog_write_rec(llh, &lcr.lcr_hdr, NULL, 0, NULL, -1);
+ if (rc) {
+ CERROR("7: write one log record failed: %d\n", rc);
+ RETURN(rc);
+ }
+
+ rc = llog_destroy(llh);
+ if (rc)
+ CERROR("7: llog_destroy failed: %d\n", rc);
+ else
+ llog_free_handle(llh);
+ RETURN(rc);
+}
+
/* -------------------------------------------------------------------------
* Tests above, boring obd functions below
* ------------------------------------------------------------------------- */
{
struct llog_handle *llh;
struct obd_run_ctxt saved;
- struct llog_ctxt *ctxt = llog_get_context(obd, LLOG_TEST_ORIG_CTXT);
+ struct llog_ctxt *ctxt;
int rc, err, cleanup_phase = 0;
char name[10];
ENTRY;
+ ctxt = llog_get_context(&obd->obd_llogs, LLOG_TEST_ORIG_CTXT);
sprintf(name, "%x", llog_test_rand);
push_ctxt(&saved, &ctxt->loc_exp->exp_obd->obd_ctxt, NULL);
if (rc)
GOTO(cleanup, rc);
+ rc = llog_test_7(obd);
+ if (rc)
+ GOTO(cleanup, rc);
+
cleanup:
switch (cleanup_phase) {
case 1:
}
-static int llog_test_llog_init(struct obd_device *obd, struct obd_device *tgt,
- int count, struct llog_catid *logid)
+static int llog_test_llog_init(struct obd_device *obd, struct obd_llogs *llogs,
+ struct obd_device *tgt, int count,
+ struct llog_catid *logid)
{
int rc;
ENTRY;
- rc = llog_setup(obd, LLOG_TEST_ORIG_CTXT, tgt, 0, NULL, &llog_lvfs_ops);
+ rc = llog_setup(obd, llogs, LLOG_TEST_ORIG_CTXT, tgt, 0,
+ NULL, &llog_lvfs_ops);
RETURN(rc);
}
-static int llog_test_llog_finish(struct obd_device *obd, int count)
+static int llog_test_llog_finish(struct obd_device *obd,
+ struct obd_llogs *llogs, int count)
{
int rc;
ENTRY;
- rc = llog_cleanup(llog_get_context(obd, LLOG_TEST_ORIG_CTXT));
+ rc = llog_cleanup(llog_get_context(&obd->obd_llogs, LLOG_TEST_ORIG_CTXT));
RETURN(rc);
}
static int llog_test_cleanup(struct obd_device *obd, int flags)
{
- int rc = obd_llog_finish(obd, 0);
+ int rc = obd_llog_finish(obd, &obd->obd_llogs, 0);
if (rc)
CERROR("failed to llog_test_llog_finish: %d\n", rc);
RETURN(-EINVAL);
}
- rc = obd_llog_init(obd, tgt, 0, NULL);
+ rc = obd_llog_init(obd, &obd->obd_llogs, tgt, 0, NULL);
if (rc)
RETURN(rc);
struct lprocfs_static_vars lvars;
lprocfs_init_vars(llog_test, &lvars);
- return class_register_type(&llog_obd_ops,lvars.module_vars,"llog_test");
+ return class_register_type(&llog_obd_ops, NULL, lvars.module_vars,
+ "llog_test");
}
static void __exit llog_test_exit(void)