Add debugging to reconstruct_open() for bug 4181.
struct lov_obd *lov = &obd->u.lov;
struct lov_tgt_desc *tgt;
struct obd_export *exp;
- int rc, rc2, i;
struct proc_dir_entry *lov_proc_dir;
+ int rc, rc2, i;
ENTRY;
rc = class_connect(conn, obd, cluuid);
RETURN(0);
}
+ lov_proc_dir = lprocfs_register("target_obds", obd->obd_proc_entry,
+ NULL, NULL);
+ if (IS_ERR(lov_proc_dir)) {
+ CERROR("could not register /proc/fs/lustre/%s/%s/target_obds.",
+ obd->obd_type->typ_name, obd->obd_name);
+ lov_proc_dir = NULL;
+ }
+
/* connect_flags is the MDS number, save for use in lov_add_obd */
lov->lov_connect_flags = connect_flags;
for (i = 0, tgt = lov->tgts; i < lov->desc.ld_tgt_count; i++, tgt++) {
if (lov->refcount != 0)
goto out_local;
- lov_proc_dir = lprocfs_register("target_obds", obd->obd_proc_entry,
- NULL, NULL);
- if (IS_ERR(lov_proc_dir)) {
- CERROR("could not register /proc/fs/lustre/%s/%s/target_obds.",
- obd->obd_type->typ_name, obd->obd_name);
- lov_proc_dir = NULL;
- }
-
for (i = 0, tgt = lov->tgts; i < lov->desc.ld_tgt_count; i++, tgt++) {
if (tgt->ltd_exp)
lov_disconnect_obd(obd, tgt, flags);
LASSERT(!strcmp(obd->obd_type->typ_name, LUSTRE_MDS_NAME));
- /* Swab now, before anyone looks inside the request */
-
MDS_UPDATE_COUNTER((&obd->u.mds), MDS_GETATTR_NAME_COUNT);
+ /* Swab now, before anyone looks inside the request */
body = lustre_swab_reqbuf(req, offset, sizeof(*body),
lustre_swab_mds_body);
if (body == NULL) {
}
parent = mds_fid2dentry(mds, rec->ur_fid1, NULL);
- LASSERT(!IS_ERR(parent));
+ LASSERTF(!IS_ERR(parent), "fid "LPU64"/%u rc %ld\n", rec->ur_fid1->id,
+ rec->ur_fid1->generation, PTR_ERR(parent));
child = ll_lookup_one_len(rec->ur_name, parent, rec->ur_namelen - 1);
- LASSERT(!IS_ERR(child));
+ LASSERTF(!IS_ERR(child), "parent "LPU64"/%u child %s rc %ld\n",
+ rec->ur_fid1->id, rec->ur_fid1->generation, rec->ur_name,
+ PTR_ERR(child));
- if (!child->d_inode) {
+ if (!child->d_inode)
GOTO(out_dput, 0); /* child not present to open */
- }
/* At this point, we know we have a child. We'll send
- * it back _unless_ it not created and open failed.
- */
+ * it back _unless_ it not created and open failed. */
if (intent_disposition(rep, DISP_OPEN_OPEN) &&
!intent_disposition(rep, DISP_OPEN_CREATE) &&
- req->rq_status) {
+ req->rq_status)
GOTO(out_dput, 0);
- }
-
- /* get lock (write for O_CREAT, read otherwise) */
mds_pack_inode2fid(obd, &body->fid1, child->d_inode);
mds_pack_inode2body(obd, body, child->d_inode);
rc = fsfilt_setattr(obd, dparent, handle, &iattr, 0);
if (rc)
CERROR("error on parent setattr: rc = %d\n", rc);
+ else
+ MDS_UPDATE_COUNTER(mds, MDS_CREATE_COUNT);
acc_mode = 0; /* Don't check for permissions */
- if (rc == 0) {
- MDS_UPDATE_COUNTER(mds, MDS_CREATE_COUNT);
- }
}
LASSERT(!mds_inode_is_orphan(dchild->d_inode));
rc = fsfilt_setattr(obd, dparent, handle, &iattr, 0);
if (rc)
CERROR("error on parent setattr: rc = %d\n", rc);
+ else
+ MDS_UPDATE_COUNTER(mds, MDS_CREATE_COUNT);
body = lustre_msg_buf(req->rq_repmsg, offset, sizeof (*body));
mds_pack_inode2fid(obd, &body->fid1, inode);
mds_pack_inode2body(obd, body, inode);
- if (rc == 0) {
- MDS_UPDATE_COUNTER(mds, MDS_CREATE_COUNT);
- }
}
EXIT;
MDS_UPDATE_COUNTER(mds, MDS_UNLINK_COUNT);
-
if (OBD_FAIL_CHECK(OBD_FAIL_MDS_REINT_UNLINK))
GOTO(cleanup, rc = -ENOENT);
MDS_CHECK_RESENT(req, mds_reconstruct_generic(req));
MDS_UPDATE_COUNTER(mds, MDS_LINK_COUNT);
-
// memset(tgt_dir_lockh, 0, 2*sizeof(tgt_dir_lockh[0]));
if (OBD_FAIL_CHECK(OBD_FAIL_MDS_REINT_LINK))