#include <fcntl.h>
#include <sys/queue.h>
+#include <sysio.h>
#ifdef HAVE_XTIO_H
#include <xtio.h>
#endif
-#include <sysio.h>
#include <fs.h>
#include <mount.h>
#include <inode.h>
struct mdt_body *body;
struct lookup_intent it = { .it_op = IT_READDIR };
struct md_op_data op_data;
- struct obd_device *obddev = class_exp2obd(sbi->ll_md_exp);
- struct ldlm_res_id res_id =
- { .name = {fid_seq(&lli->lli_fid),
- fid_oid(&lli->lli_fid),
- fid_ver(&lli->lli_fid)} };
ldlm_policy_data_t policy = { .l_inodebits = { MDS_INODELOCK_UPDATE } };
ENTRY;
- rc = ldlm_lock_match(obddev->obd_namespace, LDLM_FL_BLOCK_GRANTED,
- &res_id, LDLM_IBITS, &policy, LCK_CR, &lockh);
+ rc = md_lock_match(sbi->ll_md_exp, LDLM_FL_BLOCK_GRANTED,
+ &lli->lli_fid, LDLM_IBITS, &policy, LCK_CR, &lockh);
if (!rc) {
+ struct ldlm_enqueue_info einfo = {LDLM_IBITS, LCK_CR,
+ llu_md_blocking_ast, ldlm_completion_ast, NULL, inode};
+
llu_prep_md_op_data(&op_data, inode, NULL, NULL, 0, 0,
LUSTRE_OPC_ANY);
- rc = md_enqueue(sbi->ll_md_exp, LDLM_IBITS, &it, LCK_CR,
+ rc = md_enqueue(sbi->ll_md_exp, &einfo, &it,
&op_data, &lockh, NULL, 0,
- ldlm_completion_ast, llu_md_blocking_ast,
- inode, LDLM_FL_CANCEL_ON_BLOCK);
+ LDLM_FL_CANCEL_ON_BLOCK);
request = (struct ptlrpc_request *)it.d.lustre.it_data;
if (request)
ptlrpc_req_finished(request);
sizeof(*body));
LASSERT(body != NULL); /* checked by md_readpage() */
/* swabbed by md_readpage() */
- LASSERT_REPSWABBED(request, REPLY_REC_OFF);
+ LASSERT(lustre_rep_swabbed(request, REPLY_REC_OFF));
st->st_size = body->size;
} else {
int rc;
ENTRY;
- page = alloc_page(0);
- if (!page) {
- CERROR("alloc page failed\n");
+ OBD_PAGE_ALLOC(page, 0);
+ if (!page)
RETURN(ERR_PTR(-ENOMEM));
- }
page->index = pgidx;
rc = llu_dir_do_readpage(ino, page);
if (rc) {
- free_page(page);
+ OBD_PAGE_FREE(page);
RETURN(ERR_PTR(rc));
}
le16_to_cpu(de->rec_len),
le32_to_cpu(de->inode), d_type, &filled);
if (over) {
- free_page(page);
+ OBD_PAGE_FREE(page);
/*
* if buffer overflow with no data
* returned yet, then report error
}
}
- free_page(page);
+ OBD_PAGE_FREE(page);
}
done:
lli->lli_dir_pos = pgidx << CFS_PAGE_SHIFT | offset;