struct dentry *dentry;
int err;
dentry = ll_lookup_one_len(name, parent, namelen);
- if (IS_ERR(dentry))
+ if (IS_ERR(dentry)) {
+ CERROR("can't lookup %*s in %lu/%lu: %d\n", dentry->d_name.len,
+ dentry->d_name.name, dentry->d_inode->i_ino,
+ (unsigned long) dentry->d_inode->i_generation,
+ (int) PTR_ERR(dentry));
RETURN(PTR_ERR(dentry));
+ }
if (dentry->d_inode != NULL) {
CERROR("dentry %*s(0x%p) found\n", dentry->d_name.len,
dentry->d_name.name, dentry);
de->d_inode->i_ino, de->d_inode->i_generation,
res_id.name[2]);
}
+#else
+#warning "No PDIROPS support in the kernel"
#endif
rc = ldlm_cli_enqueue(NULL, NULL, obd->obd_namespace, res_id,
LDLM_IBITS, &policy, lock_mode, &flags,
rc = fsfilt_set_md(obd, new->d_inode, handle, mea, mealen);
up(&new->d_inode->i_sem);
OBD_FREE(mea, mealen);
+ } else if (rc == 0 && body->oa.o_easize) {
+ mds_try_to_split_dir(obd, new, NULL, body->oa.o_easize);
}
cleanup:
fid.generation = obj->ioo_gr;
dentry = mds_fid2dentry(mds, &fid, NULL);
if (IS_ERR(dentry)) {
- CERROR("can't get dentry for %lu/%lu: %d\n",
- (unsigned long) fid.id,
- (unsigned long) fid.generation, (int) PTR_ERR(dentry));
+ CERROR("can't get dentry for "LPU64"/%u: %d\n",
+ fid.id, fid.generation, (int) PTR_ERR(dentry));
GOTO(cleanup, rc = (int) PTR_ERR(dentry));
}
err = fsfilt_add_dir_entry(obd, res->dentry, de->name,
de->namelen, de->ino,
de->generation, de->mds);
+ if (err) {
+ CERROR("can't add dir entry %*s->%u/%u/%u"
+ " to %lu/%u: %d\n",
+ de->namelen, de->name,
+ de->mds, (unsigned) de->ino,
+ (unsigned) de->generation,
+ res->dentry->d_inode->i_ino,
+ res->dentry->d_inode->i_generation,
+ err);
+ rc = err;
+ break;
+ }
LASSERT(err == 0);
de = (struct dir_entry *)
((char *) de + DIR_REC_LEN(de->namelen));