-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
/*
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
- */
-/*
- * Copyright (c) 2011 Whamcloud, Inc.
+ *
+ * Copyright (c) 2011, 2012, Whamcloud, Inc.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
* Lustre is a trademark of Sun Microsystems, Inc.
*/
-#ifndef EXPORT_SYMTAB
-# define EXPORT_SYMTAB
-#endif
#define DEBUG_SUBSYSTEM S_MDC
#ifdef __KERNEL__
EXPORT_SYMBOL(mdc_sendpage);
#endif
-int mdc_readpage(struct obd_export *exp, const struct lu_fid *fid,
- struct obd_capa *oc, __u64 offset, struct page **pages,
- unsigned npages, struct ptlrpc_request **request)
+int mdc_readpage(struct obd_export *exp, struct md_op_data *op_data,
+ struct page **pages, struct ptlrpc_request **request)
{
struct ptlrpc_request *req;
struct ptlrpc_bulk_desc *desc;
if (req == NULL)
RETURN(-ENOMEM);
- mdc_set_capa_size(req, &RMF_CAPA1, oc);
+ mdc_set_capa_size(req, &RMF_CAPA1, op_data->op_capa1);
rc = ptlrpc_request_pack(req, LUSTRE_MDS_VERSION, MDS_READPAGE);
if (rc) {
req->rq_request_portal = MDS_READPAGE_PORTAL;
ptlrpc_at_set_req_timeout(req);
- desc = ptlrpc_prep_bulk_imp(req, npages, BULK_PUT_SINK,
+ desc = ptlrpc_prep_bulk_imp(req, op_data->op_npages, BULK_PUT_SINK,
MDS_BULK_PORTAL);
if (desc == NULL) {
ptlrpc_request_free(req);
}
/* NB req now owns desc and will free it when it gets freed */
- for (i = 0; i < npages; i++)
+ for (i = 0; i < op_data->op_npages; i++)
ptlrpc_prep_bulk_page(desc, pages[i], 0, CFS_PAGE_SIZE);
- mdc_readdir_pack(req, offset, CFS_PAGE_SIZE * npages, fid, oc);
+ mdc_readdir_pack(req, op_data->op_offset,
+ CFS_PAGE_SIZE * op_data->op_npages,
+ &op_data->op_fid1, op_data->op_capa1);
ptlrpc_request_set_replen(req);
rc = ptlrpc_queue_wait(req);
if (req->rq_bulk->bd_nob_transferred & ~LU_PAGE_MASK) {
CERROR("Unexpected # bytes transferred: %d (%ld expected)\n",
req->rq_bulk->bd_nob_transferred,
- CFS_PAGE_SIZE * npages);
+ CFS_PAGE_SIZE * op_data->op_npages);
ptlrpc_req_finished(req);
RETURN(-EPROTO);
}
RETURN(0);
}
-static int mdc_statfs(struct obd_device *obd, struct obd_statfs *osfs,
+static int mdc_statfs(const struct lu_env *env,
+ struct obd_export *exp, struct obd_statfs *osfs,
__u64 max_age, __u32 flags)
{
+ struct obd_device *obd = class_exp2obd(exp);
struct ptlrpc_request *req;
struct obd_statfs *msfs;
struct obd_import *imp = NULL;
/* Val is struct getinfo_fid2path result plus path */
vallen = sizeof(*gf) + gf->gf_pathlen;
- rc = obd_get_info(exp, keylen, key, &vallen, gf, NULL);
+ rc = obd_get_info(NULL, exp, keylen, key, &vallen, gf, NULL);
if (rc)
GOTO(out, rc);
struct obd_device *cs_obd;
};
-static int changelog_show_cb(struct llog_handle *llh, struct llog_rec_hdr *hdr,
- void *data)
+static int changelog_show_cb(const struct lu_env *env, struct llog_handle *llh,
+ struct llog_rec_hdr *hdr, void *data)
{
struct changelog_show *cs = data;
struct llog_changelog_rec *rec = (struct llog_changelog_rec *)hdr;
RETURN(0);
}
- CDEBUG(D_CHANGELOG, LPU64" %02d%-5s "LPU64" 0x%x t="DFID" p="DFID
- " %.*s\n", rec->cr.cr_index, rec->cr.cr_type,
- changelog_type2str(rec->cr.cr_type), rec->cr.cr_time,
- rec->cr.cr_flags & CLF_FLAGMASK,
- PFID(&rec->cr.cr_tfid), PFID(&rec->cr.cr_pfid),
- rec->cr.cr_namelen, rec->cr.cr_name);
+ CDEBUG(D_CHANGELOG, LPU64" %02d%-5s "LPU64" 0x%x t="DFID" p="DFID
+ " %.*s\n", rec->cr.cr_index, rec->cr.cr_type,
+ changelog_type2str(rec->cr.cr_type), rec->cr.cr_time,
+ rec->cr.cr_flags & CLF_FLAGMASK,
+ PFID(&rec->cr.cr_tfid), PFID(&rec->cr.cr_pfid),
+ rec->cr.cr_namelen, changelog_rec_name(&rec->cr));
- len = sizeof(*lh) + sizeof(rec->cr) + rec->cr.cr_namelen;
+ len = sizeof(*lh) + changelog_rec_size(&rec->cr) + rec->cr.cr_namelen;
/* Set up the message */
lh = changelog_kuc_hdr(cs->cs_buf, len, cs->cs_flags);
ctxt = llog_get_context(cs->cs_obd, LLOG_CHANGELOG_REPL_CTXT);
if (ctxt == NULL)
GOTO(out, rc = -ENOENT);
- rc = llog_create(ctxt, &llh, NULL, CHANGELOG_CATALOG);
+ rc = llog_create(NULL, ctxt, &llh, NULL, CHANGELOG_CATALOG);
if (rc) {
CERROR("llog_create() failed %d\n", rc);
GOTO(out, rc);
}
- rc = llog_init_handle(llh, LLOG_F_IS_CAT, NULL);
+ rc = llog_init_handle(NULL, llh, LLOG_F_IS_CAT, NULL);
if (rc) {
CERROR("llog_init_handle failed %d\n", rc);
GOTO(out, rc);
}
- rc = llog_cat_process_flags(llh, changelog_show_cb, cs, 0, 0, 0);
+ rc = llog_cat_process(NULL, llh, changelog_show_cb, cs, 0, 0);
/* Send EOF no matter what our result */
if ((kuch = changelog_kuc_hdr(cs->cs_buf, sizeof(*kuch),
out:
cfs_put_file(cs->cs_fp);
if (llh)
- llog_cat_put(llh);
+ llog_cat_put(NULL, llh);
if (ctxt)
llog_ctxt_put(ctxt);
if (cs->cs_buf)
struct ioc_changelog *icc = karg;
struct changelog_setinfo cs =
{.cs_recno = icc->icc_recno, .cs_id = icc->icc_id};
- rc = obd_set_info_async(exp, strlen(KEY_CHANGELOG_CLEAR),
+ rc = obd_set_info_async(NULL, exp, strlen(KEY_CHANGELOG_CLEAR),
KEY_CHANGELOG_CLEAR, sizeof(cs), &cs,
NULL);
GOTO(out, rc);
(int) sizeof(struct obd_uuid))))
GOTO(out, rc = -EFAULT);
- rc = mdc_statfs(obd, &stat_buf,
+ rc = mdc_statfs(NULL, obd->obd_self_export, &stat_buf,
cfs_time_shift_64(-OBD_STATFS_CACHE_SECONDS),
0);
if (rc != 0)
RETURN(rc);
}
-int mdc_set_info_async(struct obd_export *exp,
+int mdc_set_info_async(const struct lu_env *env,
+ struct obd_export *exp,
obd_count keylen, void *key,
obd_count vallen, void *val,
struct ptlrpc_request_set *set)
RETURN(rc);
}
-int mdc_get_info(struct obd_export *exp, __u32 keylen, void *key,
- __u32 *vallen, void *val, struct lov_stripe_md *lsm)
+int mdc_get_info(const struct lu_env *env, struct obd_export *exp,
+ __u32 keylen, void *key, __u32 *vallen, void *val,
+ struct lov_stripe_md *lsm)
{
int rc = -EINVAL;
struct client_obd *cli = &exp->exp_obd->u.cli;
struct lu_client_seq *seq = cli->cl_seq;
ENTRY;
- RETURN(seq_client_alloc_fid(seq, fid));
+ RETURN(seq_client_alloc_fid(NULL, seq, fid));
}
/* XXX This method is used only to clear current fid seq