* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
- * Copyright (c) 2011, 2013, Intel Corporation.
+ * Copyright (c) 2011, 2014, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
#define DEBUG_SUBSYSTEM S_LOG
-#ifndef __KERNEL__
-#include <liblustre.h>
-#endif
-
#include <obd_class.h>
#include <lu_target.h>
#include <lustre_log.h>
#include <lustre_net.h>
-#if defined(__KERNEL__) && defined(LUSTRE_LOG_SERVER)
static int llog_origin_close(const struct lu_env *env, struct llog_handle *lgh)
{
if (lgh->lgh_hdr != NULL && lgh->lgh_hdr->llh_flags & LLOG_F_IS_CAT)
CDEBUG(D_INFO, "%s: opening log %s\n", obd->obd_name, name);
}
+ if (body->lgd_ctxt_idx >= LLOG_MAX_CTXTS) {
+ CDEBUG(D_WARNING, "%s: bad ctxt ID: idx=%d name=%s\n",
+ obd->obd_name, body->lgd_ctxt_idx, name);
+ RETURN(-EPROTO);
+ }
+
ctxt = llog_get_context(obd, body->lgd_ctxt_idx);
if (ctxt == NULL) {
CDEBUG(D_WARNING, "%s: no ctxt. group=%p idx=%d name=%s\n",
llog_ctxt_put(ctxt);
return rc;
}
-EXPORT_SYMBOL(llog_origin_handle_open);
int llog_origin_handle_destroy(struct ptlrpc_request *req)
{
CERROR("%s: wrong llog flags %x\n",
req->rq_export->exp_obd->obd_name, body->lgd_llh_flags);
+ if (body->lgd_ctxt_idx >= LLOG_MAX_CTXTS) {
+ CDEBUG(D_WARNING, "%s: bad ctxt ID: idx=%d\n",
+ req->rq_export->exp_obd->obd_name, body->lgd_ctxt_idx);
+ RETURN(-EPROTO);
+ }
+
ctxt = llog_get_context(req->rq_export->exp_obd, body->lgd_ctxt_idx);
if (ctxt == NULL)
RETURN(-ENODEV);
llog_ctxt_put(ctxt);
RETURN(rc);
}
-EXPORT_SYMBOL(llog_origin_handle_destroy);
int llog_origin_handle_next_block(struct ptlrpc_request *req)
{
if (rc)
RETURN(err_serious(-ENOMEM));
+ if (body->lgd_ctxt_idx >= LLOG_MAX_CTXTS) {
+ CDEBUG(D_WARNING, "%s: bad ctxt ID: idx=%d\n",
+ req->rq_export->exp_obd->obd_name, body->lgd_ctxt_idx);
+ RETURN(-EPROTO);
+ }
+
ctxt = llog_get_context(req->rq_export->exp_obd, body->lgd_ctxt_idx);
if (ctxt == NULL)
RETURN(-ENODEV);
llog_ctxt_put(ctxt);
return rc;
}
-EXPORT_SYMBOL(llog_origin_handle_next_block);
int llog_origin_handle_prev_block(struct ptlrpc_request *req)
{
if (rc)
RETURN(err_serious(-ENOMEM));
+ if (body->lgd_ctxt_idx >= LLOG_MAX_CTXTS) {
+ CDEBUG(D_WARNING, "%s: bad ctxt ID: idx=%d\n",
+ req->rq_export->exp_obd->obd_name, body->lgd_ctxt_idx);
+ RETURN(-EPROTO);
+ }
+
ctxt = llog_get_context(req->rq_export->exp_obd, body->lgd_ctxt_idx);
if (ctxt == NULL)
RETURN(-ENODEV);
llog_ctxt_put(ctxt);
return rc;
}
-EXPORT_SYMBOL(llog_origin_handle_prev_block);
int llog_origin_handle_read_header(struct ptlrpc_request *req)
{
if (rc)
RETURN(err_serious(-ENOMEM));
+ if (body->lgd_ctxt_idx >= LLOG_MAX_CTXTS) {
+ CDEBUG(D_WARNING, "%s: bad ctxt ID: idx=%d\n",
+ req->rq_export->exp_obd->obd_name, body->lgd_ctxt_idx);
+ RETURN(-EPROTO);
+ }
+
ctxt = llog_get_context(req->rq_export->exp_obd, body->lgd_ctxt_idx);
if (ctxt == NULL)
RETURN(-ENODEV);
llog_ctxt_put(ctxt);
return rc;
}
-EXPORT_SYMBOL(llog_origin_handle_read_header);
int llog_origin_handle_close(struct ptlrpc_request *req)
{
RETURN(err_serious(-ENOMEM));
RETURN(0);
}
-EXPORT_SYMBOL(llog_origin_handle_close);
-
-#else /* !__KERNEL__ */
-int llog_origin_handle_open(struct ptlrpc_request *req)
-{
- LBUG();
- return 0;
-}
-
-int llog_origin_handle_destroy(struct ptlrpc_request *req)
-{
- LBUG();
- return 0;
-}
-
-int llog_origin_handle_next_block(struct ptlrpc_request *req)
-{
- LBUG();
- return 0;
-}
-int llog_origin_handle_prev_block(struct ptlrpc_request *req)
-{
- LBUG();
- return 0;
-}
-int llog_origin_handle_read_header(struct ptlrpc_request *req)
-{
- LBUG();
- return 0;
-}
-int llog_origin_handle_close(struct ptlrpc_request *req)
-{
- LBUG();
- return 0;
-}
-#endif