X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fobdclass%2Fllog_obd.c;h=7c94552fec1ab82666e3e88209a926abdca96e36;hb=9d4b898b1c1c7c318fda5f0c345ed726c774c06a;hp=add9ae486e5e56094f801919812cc89552fb21a1;hpb=2dc9c16e770415d56839e1996015fec5fab93f29;p=fs%2Flustre-release.git diff --git a/lustre/obdclass/llog_obd.c b/lustre/obdclass/llog_obd.c index add9ae4..7c94552 100644 --- a/lustre/obdclass/llog_obd.c +++ b/lustre/obdclass/llog_obd.c @@ -21,6 +21,7 @@ #include #include +#include #include /* helper functions for calling the llog obd methods */ @@ -55,7 +56,7 @@ int obd_llog_setup(struct obd_device *obd, struct obd_llogs *llogs, if (op->lop_close == llog_lvfs_ops.lop_close) { ctxt->loc_fsops = disk_obd->obd_fsops; ctxt->loc_lvfs_ctxt = &disk_obd->obd_lvfs_ctxt; - if (!strcmp(disk_obd->obd_type->typ_name, "mds")) { + if (!strcmp(disk_obd->obd_type->typ_name, LUSTRE_MDS_NAME)) { struct mds_obd *mds = &disk_obd->u.mds; ctxt->loc_objects_dir = mds->mds_objects_dir; ctxt->loc_logs_dir = mds->mds_logs_dir; @@ -78,7 +79,8 @@ int obd_llog_cleanup(struct llog_ctxt *ctxt) int rc = 0; ENTRY; - LASSERT(ctxt); + if (ctxt == NULL) + RETURN(0); if (CTXTP(ctxt, cleanup)) rc = CTXTP(ctxt, cleanup)(ctxt); @@ -98,15 +100,14 @@ static int cat_cancel_cb(struct llog_handle *cathandle, { struct llog_logid_rec *lir = (struct llog_logid_rec *)rec; struct llog_handle *loghandle; - struct llog_log_hdr *llh; - int rc, index; + int rc; ENTRY; if (rec->lrh_type != LLOG_LOGID_MAGIC) { CERROR("invalid record in catalog\n"); RETURN(-EINVAL); } - CWARN("processing log "LPX64":%x at index %u of catalog "LPX64"\n", + CDEBUG(D_HA, "processing log "LPX64":%x at index %u of catalog "LPX64"\n", lir->lid_id.lgl_oid, lir->lid_id.lgl_ogen, rec->lrh_index, cathandle->lgh_id.lgl_oid); @@ -117,26 +118,8 @@ static int cat_cancel_cb(struct llog_handle *cathandle, RETURN(rc); } - llh = loghandle->lgh_hdr; - if ((llh->llh_flags & LLOG_F_ZAP_WHEN_EMPTY) && - (llh->llh_count == 1)) { - rc = llog_destroy(loghandle); - if (rc) - CERROR("failure destroying log in postsetup: %d\n", rc); - LASSERT(rc == 0); - - index = loghandle->u.phd.phd_cookie.lgc_index; - llog_free_handle(loghandle); - - LASSERT(index); - llog_cat_set_first_idx(cathandle, index); - rc = llog_cancel_rec(cathandle, index); - if (rc == 0) - CWARN("cancel log "LPX64":%x at index %u of catalog " - LPX64"\n", lir->lid_id.lgl_oid, - lir->lid_id.lgl_ogen, rec->lrh_index, - cathandle->lgh_id.lgl_oid); - } + if (cathandle->lgh_last_idx == loghandle->u.phd.phd_cookie.lgc_index) + cathandle->u.chd.chd_current_log = loghandle; RETURN(rc); } @@ -162,10 +145,10 @@ int llog_obd_origin_setup(struct obd_device *obd, struct obd_llogs *llogs, LASSERT(ctxt); llog_gen_init(ctxt); - if (logid->lgl_oid) - rc = llog_create(ctxt, &handle, logid, NULL); - else { - rc = llog_create(ctxt, &handle, NULL, NULL); + if (logid->lgl_oid) { + rc = llog_open(ctxt, &handle, logid, NULL, 0); + } else { + rc = llog_open(ctxt, &handle, NULL, NULL, 0); if (!rc) *logid = handle->lgh_id; } @@ -191,69 +174,8 @@ int llog_obd_origin_setup(struct obd_device *obd, struct obd_llogs *llogs, } EXPORT_SYMBOL(llog_obd_origin_setup); -int llog_obd_origin_cleanup(struct llog_ctxt *ctxt) -{ - struct llog_handle *cathandle, *n, *loghandle; - struct llog_log_hdr *llh; - int rc, index; - ENTRY; - - if (!ctxt) - return 0; - - cathandle = ctxt->loc_handle; - if (cathandle) { - list_for_each_entry_safe(loghandle, n, - &cathandle->u.chd.chd_head, - u.phd.phd_entry) { - llh = loghandle->lgh_hdr; - if ((llh->llh_flags & - LLOG_F_ZAP_WHEN_EMPTY) && - (llh->llh_count == 1)) { - rc = llog_destroy(loghandle); - if (rc) - CERROR("failure destroying log during " - "cleanup: %d\n", rc); - LASSERT(rc == 0); - - index = loghandle->u.phd.phd_cookie.lgc_index; - llog_free_handle(loghandle); - - LASSERT(index); - llog_cat_set_first_idx(cathandle, index); - rc = llog_cancel_rec(cathandle, index); - if (rc == 0) - CDEBUG(D_HA, "cancel plain log at index" - " %u of catalog "LPX64"\n", - index,cathandle->lgh_id.lgl_oid); - } - } - llog_cat_put(ctxt->loc_handle); - } - return 0; -} -EXPORT_SYMBOL(llog_obd_origin_cleanup); - -/* add for obdfilter/sz and mds/unlink */ -int llog_obd_origin_add(struct llog_ctxt *ctxt, - struct llog_rec_hdr *rec, struct lov_stripe_md *lsm, - struct llog_cookie *logcookies, int numcookies) -{ - struct llog_handle *cathandle; - int rc; - ENTRY; - - cathandle = ctxt->loc_handle; - LASSERT(cathandle != NULL); - rc = llog_cat_add_rec(cathandle, rec, logcookies, NULL); - if (rc != 1) - CERROR("write one catalog record failed: %d\n", rc); - RETURN(rc); -} -EXPORT_SYMBOL(llog_obd_origin_add); - int obd_llog_cat_initialize(struct obd_device *obd, struct obd_llogs *llogs, - int count, char *name) + int count, const char *name) { struct llog_catid *idarray; int size = sizeof(*idarray) * count;