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
add missing part of bug 13285 to HEAD.
[fs/lustre-release.git]
/
lustre
/
lov
/
lov_log.c
diff --git
a/lustre/lov/lov_log.c
b/lustre/lov/lov_log.c
index
b2aee8f
..
8c2186b
100644
(file)
--- a/
lustre/lov/lov_log.c
+++ b/
lustre/lov/lov_log.c
@@
-59,15
+59,15
@@
static int lov_llog_origin_add(struct llog_ctxt *ctxt,
{
struct obd_device *obd = ctxt->loc_obd;
struct lov_obd *lov = &obd->u.lov;
- struct lov_oinfo *loi;
- int i, rc = 0;
+ int i, rc = 0, rc1;
ENTRY;
LASSERTF(logcookies && numcookies >= lsm->lsm_stripe_count,
"logcookies %p, numcookies %d lsm->lsm_stripe_count %d \n",
logcookies, numcookies, lsm->lsm_stripe_count);
- for (i = 0,loi = lsm->lsm_oinfo; i < lsm->lsm_stripe_count; i++,loi++) {
+ for (i = 0; i < lsm->lsm_stripe_count; i++) {
+ struct lov_oinfo *loi = lsm->lsm_oinfo[i];
struct obd_device *child =
lov->lov_tgts[loi->loi_ost_idx]->ltd_exp->exp_obd;
struct llog_ctxt *cctxt = llog_get_context(child, ctxt->loc_idx);
@@
-89,9
+89,13
@@
static int lov_llog_origin_add(struct llog_ctxt *ctxt,
default:
break;
}
-
- rc += llog_add(cctxt, rec, NULL, logcookies + rc,
- numcookies - rc);
+ LASSERT(lsm->lsm_object_gr == loi->loi_gr);
+ rc1 = llog_add(cctxt, rec, NULL, logcookies + rc,
+ numcookies - rc);
+ llog_ctxt_put(cctxt);
+ if (rc1 < 0)
+ RETURN(rc1);
+ rc += rc1;
}
RETURN(rc);
@@
-120,6
+124,8
@@
static int lov_llog_origin_connect(struct llog_ctxt *ctxt, int count,
child = lov->lov_tgts[i]->ltd_exp->exp_obd;
cctxt = llog_get_context(child, ctxt->loc_idx);
rc = llog_connect(cctxt, 1, logid, gen, uuid);
+ llog_ctxt_put(cctxt);
+
if (rc) {
CERROR("error osc_llog_connect tgt %d (%d)\n", i, rc);
if (!err)
@@
-137,17
+143,16
@@
static int lov_llog_repl_cancel(struct llog_ctxt *ctxt, struct lov_stripe_md *ls
{
struct lov_obd *lov;
struct obd_device *obd = ctxt->loc_obd;
- struct lov_oinfo *loi;
int rc = 0, i;
ENTRY;
LASSERT(lsm != NULL);
LASSERT(count == lsm->lsm_stripe_count);
- loi = lsm->lsm_oinfo;
lov = &obd->u.lov;
lov_getref(obd);
- for (i = 0; i < count; i++, cookies++, loi++) {
+ for (i = 0; i < count; i++, cookies++) {
+ struct lov_oinfo *loi = lsm->lsm_oinfo[i];
struct obd_device *child =
lov->lov_tgts[loi->loi_ost_idx]->ltd_exp->exp_obd;
struct llog_ctxt *cctxt =
@@
-155,6
+160,7
@@
static int lov_llog_repl_cancel(struct llog_ctxt *ctxt, struct lov_stripe_md *ls
int err;
err = llog_cancel(cctxt, NULL, 1, cookies, flags);
+ llog_ctxt_put(cctxt);
if (err && lov->lov_tgts[loi->loi_ost_idx]->ltd_active) {
CERROR("error: objid "LPX64" subobj "LPX64
" on OST idx %d: rc = %d\n", lsm->lsm_object_id,
@@
-176,20
+182,22
@@
static struct llog_operations lov_size_repl_logops = {
lop_cancel: lov_llog_repl_cancel
};
-int lov_llog_init(struct obd_device *obd, struct obd_device *tgt,
- int count, struct llog_catid *logid, struct obd_uuid *uuid)
+int lov_llog_init(struct obd_device *obd, int group,
+ struct obd_device *tgt, int count, struct llog_catid *logid,
+ struct obd_uuid *uuid)
{
struct lov_obd *lov = &obd->u.lov;
struct obd_device *child;
int i, rc = 0, err = 0;
ENTRY;
- rc = llog_setup(obd, LLOG_MDS_OST_ORIG_CTXT, tgt, 0, NULL,
+ LASSERT(group == OBD_LLOG_GROUP);
+ rc = llog_setup(obd, &obd->obd_olg, LLOG_MDS_OST_ORIG_CTXT, tgt, 0, NULL,
&lov_mds_ost_orig_logops);
if (rc)
RETURN(rc);
- rc = llog_setup(obd, LLOG_SIZE_REPL_CTXT, tgt, 0, NULL,
+ rc = llog_setup(obd,
&obd->obd_olg,
LLOG_SIZE_REPL_CTXT, tgt, 0, NULL,
&lov_size_repl_logops);
if (rc)
RETURN(rc);
@@
-204,7
+212,7
@@
int lov_llog_init(struct obd_device *obd, struct obd_device *tgt,
CDEBUG(D_CONFIG, "init %d/%d\n", i, count);
LASSERT(lov->lov_tgts[i]->ltd_exp);
child = lov->lov_tgts[i]->ltd_exp->exp_obd;
- rc = obd_llog_init(child, tgt, 1, logid + i, uuid);
+ rc = obd_llog_init(child,
group,
tgt, 1, logid + i, uuid);
if (rc) {
CERROR("error osc_llog_init idx %d osc '%s' tgt '%s' "
"(rc=%d)\n", i, child->obd_name, tgt->obd_name,