Whamcloud - gitweb
LU-2034 changelog: redo changelog using OSD llog
[fs/lustre-release.git] / lustre / mds / mds_log.c
index 76a68b8..0e66eaa 100644 (file)
@@ -116,153 +116,6 @@ static struct llog_operations mds_size_repl_logops = {
         lop_cancel:     mds_llog_repl_cancel,
 };
 
-static struct llog_operations changelog_orig_logops;
-
-static int llog_changelog_cancel_cb(const struct lu_env *env,
-                                   struct llog_handle *llh,
-                                   struct llog_rec_hdr *hdr, void *data)
-{
-        struct llog_changelog_rec *rec = (struct llog_changelog_rec *)hdr;
-        struct llog_cookie cookie;
-        long long endrec = *(long long *)data;
-        int rc, err;
-        struct obd_device *obd;
-        void *trans_h;
-        struct inode *inode;
-        ENTRY;
-
-        /* This is always a (sub)log, not the catalog */
-        LASSERT(llh->lgh_hdr->llh_flags & LLOG_F_IS_PLAIN);
-
-        if (rec->cr.cr_index > endrec)
-                /* records are in order, so we're done */
-                RETURN(LLOG_PROC_BREAK);
-
-        cookie.lgc_lgl = llh->lgh_id;
-        cookie.lgc_index = hdr->lrh_index;
-        obd = llh->lgh_ctxt->loc_exp->exp_obd;
-        inode = llh->lgh_file->f_dentry->d_inode;
-
-        /* XXX This is a workaround for the deadlock of changelog adding vs.
-         * changelog cancelling. Changelog adding always start transaction
-         * before acquiring the catlog lock (lgh_lock), whereas, changelog
-         * cancelling do start transaction after holding catlog lock.
-         *
-         * We start the transaction earlier here to keep the locking ordering:
-         * 'start transaction -> catlog lock'. LU-81. */
-        trans_h = fsfilt_start_log(obd, inode, FSFILT_OP_CANCEL_UNLINK,
-                                   NULL, 1);
-        if (IS_ERR(trans_h)) {
-                CERROR("fsfilt_start_log failed: %ld\n", PTR_ERR(trans_h));
-                RETURN(PTR_ERR(trans_h));
-        }
-
-        /* cancel them one at a time.  I suppose we could store up the cookies
-           and cancel them all at once; probably more efficient, but this is
-           done as a user call, so who cares... */
-       rc = llog_cat_cancel_records(env, llh->u.phd.phd_cat_handle, 1,
-                                    &cookie);
-
-        err = fsfilt_commit(obd, inode, trans_h, 0);
-        if (err) {
-                CERROR("fsfilt_commit failed: %d\n", err);
-                rc = (rc >= 0) ? err : rc;
-        }
-
-        RETURN(rc < 0 ? rc : 0);
-}
-
-static int llog_changelog_cancel(const struct lu_env *env,
-                                struct llog_ctxt *ctxt,
-                                struct lov_stripe_md *lsm, int count,
-                                struct llog_cookie *cookies, int flags)
-{
-        struct llog_handle *cathandle = ctxt->loc_handle;
-        int rc;
-        ENTRY;
-
-        /* This should only be called with the catalog handle */
-        LASSERT(cathandle->lgh_hdr->llh_flags & LLOG_F_IS_CAT);
-
-       rc = llog_cat_process(env, cathandle, llog_changelog_cancel_cb,
-                             (void *)cookies, 0, 0);
-        if (rc >= 0)
-                /* 0 or 1 means we're done */
-                rc = 0;
-        else
-                CERROR("cancel idx %u of catalog "LPX64" rc=%d\n",
-                       cathandle->lgh_last_idx, cathandle->lgh_id.lgl_oid, rc);
-
-        RETURN(rc);
-}
-
-int mds_changelog_llog_init(struct obd_device *obd, struct obd_device *tgt)
-{
-       struct llog_ctxt        *ctxt = NULL, *uctxt = NULL;
-       int                      rc;
-
-       /* see osc_llog_init */
-       changelog_orig_logops = llog_lvfs_ops;
-       changelog_orig_logops.lop_obd_add = llog_obd_origin_add;
-       changelog_orig_logops.lop_cancel = llog_changelog_cancel;
-
-       rc = llog_setup(NULL, obd, &obd->obd_olg, LLOG_CHANGELOG_ORIG_CTXT,
-                       tgt, &changelog_orig_logops);
-       if (rc) {
-               CERROR("%s: changelog llog setup failed: rc = %d\n",
-                      obd->obd_name, rc);
-               RETURN(rc);
-       }
-
-       ctxt = llog_get_context(obd, LLOG_CHANGELOG_ORIG_CTXT);
-       LASSERT(ctxt);
-
-       rc = llog_open_create(NULL, ctxt, &ctxt->loc_handle, NULL,
-                             CHANGELOG_CATALOG);
-       if (rc)
-               GOTO(out_cleanup, rc);
-
-       rc = llog_cat_init_and_process(NULL, ctxt->loc_handle);
-       if (rc)
-               GOTO(out_close, rc);
-
-       /* setup user changelog */
-       rc = llog_setup(NULL, obd, &obd->obd_olg,
-                       LLOG_CHANGELOG_USER_ORIG_CTXT, tgt,
-                       &changelog_orig_logops);
-       if (rc) {
-               CERROR("%s: changelog users llog setup failed: rc = %d\n",
-                      obd->obd_name, rc);
-               GOTO(out_close, rc);
-       }
-
-       uctxt = llog_get_context(obd, LLOG_CHANGELOG_USER_ORIG_CTXT);
-       LASSERT(uctxt);
-
-       rc = llog_open_create(NULL, uctxt, &uctxt->loc_handle, NULL,
-                             CHANGELOG_USERS);
-       if (rc)
-               GOTO(out_ucleanup, rc);
-
-       rc = llog_cat_init_and_process(NULL, uctxt->loc_handle);
-       if (rc)
-               GOTO(out_uclose, rc);
-
-       llog_ctxt_put(ctxt);
-       llog_ctxt_put(uctxt);
-       RETURN(0);
-out_uclose:
-       llog_cat_close(NULL, uctxt->loc_handle);
-out_ucleanup:
-       llog_cleanup(NULL, uctxt);
-out_close:
-       llog_cat_close(NULL, ctxt->loc_handle);
-out_cleanup:
-       llog_cleanup(NULL, ctxt);
-       return rc;
-}
-EXPORT_SYMBOL(mds_changelog_llog_init);
-
 int mds_llog_init(struct obd_device *obd, struct obd_llog_group *olg,
                   struct obd_device *disk_obd, int *index)
 {
@@ -314,17 +167,6 @@ int mds_llog_finish(struct obd_device *obd, int count)
        if (ctxt)
                llog_cleanup(NULL, ctxt);
 
-       ctxt = llog_get_context(obd, LLOG_CHANGELOG_ORIG_CTXT);
-       if (ctxt) {
-               llog_cat_close(NULL, ctxt->loc_handle);
-               llog_cleanup(NULL, ctxt);
-       }
-
-       ctxt = llog_get_context(obd, LLOG_CHANGELOG_USER_ORIG_CTXT);
-       if (ctxt) {
-               llog_cat_close(NULL, ctxt->loc_handle);
-               llog_cleanup(NULL, ctxt);
-       }
        RETURN(0);
 }