X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fobdclass%2Fllog_ioctl.c;h=e210d9544e21dae0049f0166e7b817d4a5c47219;hb=6d33530cc018602a665fc5e724f9f64dcba421c9;hp=92d3d8b8329adc91ee97fa4e67cc239c4c3ca37a;hpb=08aa217ce49aba1ded52e0f7adb8a607035123fd;p=fs%2Flustre-release.git diff --git a/lustre/obdclass/llog_ioctl.c b/lustre/obdclass/llog_ioctl.c index 92d3d8b..e210d95 100644 --- a/lustre/obdclass/llog_ioctl.c +++ b/lustre/obdclass/llog_ioctl.c @@ -116,9 +116,9 @@ static int llog_check_cb(const struct lu_env *env, struct llog_handle *handle, if (to > 0 && cur_index > to) RETURN(-LLOG_EEMPTY); - if (handle->lgh_hdr->llh_flags & LLOG_F_IS_CAT) { - struct llog_logid_rec *lir = (struct llog_logid_rec *)rec; - struct llog_handle *log_handle; + if (handle->lgh_hdr->llh_flags & LLOG_F_IS_CAT) { + struct llog_logid_rec *lir = (struct llog_logid_rec *)rec; + struct llog_handle *loghandle; if (rec->lrh_type != LLOG_LOGID_MAGIC) { l = snprintf(out, remains, "[index]: %05d [type]: " @@ -128,17 +128,17 @@ static int llog_check_cb(const struct lu_env *env, struct llog_handle *handle, } if (handle->lgh_ctxt == NULL) RETURN(-EOPNOTSUPP); - rc = llog_cat_id2handle(env, handle, &log_handle, &lir->lid_id); - if (rc) { - CDEBUG(D_IOCTL, - "cannot find log #"LPX64"#"LPX64"#%08x\n", - lir->lid_id.lgl_oid, lir->lid_id.lgl_oseq, - lir->lid_id.lgl_ogen); - RETURN(rc); - } - rc = llog_process(env, log_handle, llog_check_cb, NULL, NULL); - llog_close(env, log_handle); - } else { + rc = llog_cat_id2handle(env, handle, &loghandle, &lir->lid_id); + if (rc) { + CDEBUG(D_IOCTL, + "cannot find log #"LPX64"#"LPX64"#%08x\n", + lir->lid_id.lgl_oid, lir->lid_id.lgl_oseq, + lir->lid_id.lgl_ogen); + RETURN(rc); + } + rc = llog_process(env, loghandle, llog_check_cb, NULL, NULL); + llog_handle_put(loghandle); + } else { bool ok; switch (rec->lrh_type) { @@ -238,33 +238,26 @@ static int llog_print_cb(const struct lu_env *env, struct llog_handle *handle, static int llog_remove_log(const struct lu_env *env, struct llog_handle *cat, struct llog_logid *logid) { - struct llog_handle *log; - int rc, index = 0; + struct llog_handle *log; + int rc; - ENTRY; + ENTRY; rc = llog_cat_id2handle(env, cat, &log, logid); - if (rc) { - CDEBUG(D_IOCTL, "cannot find log #"LPX64"#"LPX64"#%08x\n", - logid->lgl_oid, logid->lgl_oseq, logid->lgl_ogen); - GOTO(out, rc = -ENOENT); - } + if (rc) { + CDEBUG(D_IOCTL, "cannot find log #"LPX64"#"LPX64"#%08x\n", + logid->lgl_oid, logid->lgl_oseq, logid->lgl_ogen); + RETURN(-ENOENT); + } - index = log->u.phd.phd_cookie.lgc_index; - LASSERT(index); rc = llog_destroy(env, log); if (rc) { CDEBUG(D_IOCTL, "cannot destroy log\n"); GOTO(out, rc); } - down_write(&cat->lgh_lock); - if (cat->u.chd.chd_current_log == log) - cat->u.chd.chd_current_log = NULL; - up_write(&cat->lgh_lock); - llog_cat_set_first_idx(cat, index); - rc = llog_cancel_rec(env, cat, index); + llog_cat_cleanup(env, cat, log, log->u.phd.phd_cookie.lgc_index); out: - llog_close(env, log); + llog_handle_put(log); RETURN(rc); } @@ -429,51 +422,3 @@ out_close: RETURN(rc); } EXPORT_SYMBOL(llog_ioctl); - -#ifdef HAVE_LDISKFS_OSD -int llog_catalog_list(struct obd_device *obd, int count, - struct obd_ioctl_data *data) -{ - int size, i; - struct llog_catid *idarray; - struct llog_logid *id; - char name[32] = CATLIST; - char *out; - int l, remains, rc = 0; - - ENTRY; - size = sizeof(*idarray) * count; - - OBD_ALLOC_LARGE(idarray, size); - if (!idarray) - RETURN(-ENOMEM); - - mutex_lock(&obd->obd_olg.olg_cat_processing); - rc = llog_get_cat_list(obd, name, 0, count, idarray); - if (rc) - GOTO(out, rc); - - out = data->ioc_bulk; - remains = data->ioc_inllen1; - for (i = 0; i < count; i++) { - id = &idarray[i].lci_logid; - l = snprintf(out, remains, - "catalog log: #"LPX64"#"LPX64"#%08x\n", - id->lgl_oid, id->lgl_oseq, id->lgl_ogen); - out += l; - remains -= l; - if (remains <= 0) { - CWARN("not enough memory for catlog list\n"); - break; - } - } -out: - /* release semaphore */ - mutex_unlock(&obd->obd_olg.olg_cat_processing); - - OBD_FREE_LARGE(idarray, size); - RETURN(rc); - -} -EXPORT_SYMBOL(llog_catalog_list); -#endif