loghandle->lgh_last_idx++;
index = loghandle->lgh_last_idx;
+ LASSERT(index < LLOG_BITMAP_SIZE(llh));
rec->lrh_index = cpu_to_le32(index);
if (buf == NULL) {
lrt = (void *)rec + le32_to_cpu(rec->lrh_len) - sizeof(*lrt);
if (rc == 0 && reccookie) {
if (llog_cookie_get_flags(reccookie) & LLOG_COOKIE_REPLAY) {
- LASSERT(EQ_LOGID(reccookie->lgc_lgl, loghandle->lgh_id));
- LASSERT(reccookie->lgc_index == index);
+ LASSERTF(EQ_LOGID(reccookie->lgc_lgl,loghandle->lgh_id),
+ "lgc_lgl.oid/gr "LPU64"/"LPU64" lgh_id.oid/gr"
+ LPU64"/"LPU64"\n",
+ reccookie->lgc_lgl.lgl_oid,
+ reccookie->lgc_lgl.lgl_ogr,
+ loghandle->lgh_id.lgl_oid,
+ loghandle->lgh_id.lgl_oid);
+ LASSERTF(reccookie->lgc_index == index,
+ "lgc_index %u != index %u\n",
+ reccookie->lgc_index, index);
} else {
reccookie->lgc_lgl = loghandle->lgh_id;
reccookie->lgc_index = index;
LASSERT(lgh_id != NULL);
if (lgh_id->lgl_oid) {
struct dentry *dchild;
- char fidname[LL_FID_NAMELEN];
- int fidlen = 0;
+ char id_name[LL_ID_NAMELEN];
+ int id_len = 0;
down(&ctxt->loc_objects_dir->d_inode->i_sem);
- fidlen = ll_fid2str(fidname, lgh_id->lgl_oid, lgh_id->lgl_ogen);
- dchild = lookup_one_len(fidname, ctxt->loc_objects_dir, fidlen);
+ id_len = ll_id2str(id_name, lgh_id->lgl_oid,
+ lgh_id->lgl_ogen);
+
+ dchild = lookup_one_len(id_name, ctxt->loc_objects_dir,
+ id_len);
if (IS_ERR(dchild)) {
up(&ctxt->loc_objects_dir->d_inode->i_sem);
RETURN((struct file *)dchild);
RETURN(filp);
}
if (!S_ISREG(filp->f_dentry->d_inode->i_mode)) {
- CERROR("%s is not a regular file!: mode = %o\n", fidname,
- filp->f_dentry->d_inode->i_mode);
+ CERROR("%s is not a regular file!: mode = %o\n",
+ id_name, filp->f_dentry->d_inode->i_mode);
filp_close(filp, 0);
up(&ctxt->loc_objects_dir->d_inode->i_sem);
RETURN(ERR_PTR(-ENOENT));
} else {
unsigned int tmpname = ll_insecure_random_int();
- char fidname[LL_FID_NAMELEN];
+ char id_name[LL_ID_NAMELEN];
struct dentry *new_child, *parent;
+ int err, id_len;
void *handle;
- int err, namelen;
- sprintf(fidname, "OBJECTS/%u", tmpname);
- filp = filp_open(fidname, O_CREAT | O_EXCL, 0644);
+ sprintf(id_name, "OBJECTS/%u", tmpname);
+ filp = filp_open(id_name, O_CREAT | O_EXCL, 0644);
if (IS_ERR(filp)) {
rc = PTR_ERR(filp);
if (rc == -EEXIST) {
RETURN(filp);
}
- namelen = ll_fid2str(fidname, filp->f_dentry->d_inode->i_ino,
- filp->f_dentry->d_inode->i_generation);
+ id_len = ll_id2str(id_name, filp->f_dentry->d_inode->i_ino,
+ filp->f_dentry->d_inode->i_generation);
parent = filp->f_dentry->d_parent;
down(&parent->d_inode->i_sem);
- new_child = lookup_one_len(fidname, parent, namelen);
+ new_child = lookup_one_len(id_name, parent, id_len);
if (IS_ERR(new_child)) {
CERROR("getting neg dentry for obj rename: %d\n", rc);
GOTO(out_close, rc = PTR_ERR(new_child));
static struct file *
llog_object_create_generic(struct llog_ctxt *ctxt, struct llog_logid *lgh_id)
{
- struct file *filp;
+ struct file *filp = NULL;
struct dentry *dchild;
struct obd_device *obd;
struct obdo *oa = NULL;
LASSERT(obd != NULL);
if (lgh_id->lgl_oid) {
- dchild = obd_lvfs_fid2dentry(ctxt->loc_exp, lgh_id->lgl_oid,
- lgh_id->lgl_ogen, lgh_id->lgl_ogr);
+ dchild = obd_lvfs_id2dentry(ctxt->loc_exp, lgh_id->lgl_oid,
+ lgh_id->lgl_ogen, lgh_id->lgl_ogr);
if (IS_ERR(dchild) == -ENOENT) {
OBD_ALLOC(oa, sizeof(*oa));
if (!oa)
oa->o_generation = lgh_id->lgl_ogen;
oa->o_gr = lgh_id->lgl_ogr;
oa->o_valid = OBD_MD_FLGENER | OBD_MD_FLGROUP;
- rc = obd_create(ctxt->loc_exp, oa, NULL, NULL);
+ rc = obd_create(ctxt->loc_exp, oa, NULL, 0, NULL, NULL);
if (rc) {
CDEBUG(D_INODE, "err during create: %d\n", rc);
GOTO(out_free_oa, rc);
CDEBUG(D_HA, "re-create log object "LPX64":0x%x:"LPX64"\n",
lgh_id->lgl_oid, lgh_id->lgl_ogen, lgh_id->lgl_ogr);
- dchild = obd_lvfs_fid2dentry(ctxt->loc_exp, lgh_id->lgl_oid,
- lgh_id->lgl_ogen, lgh_id->lgl_ogr);
+ dchild = obd_lvfs_id2dentry(ctxt->loc_exp, lgh_id->lgl_oid,
+ lgh_id->lgl_ogen, lgh_id->lgl_ogr);
} else if (IS_ERR(dchild)) {
CERROR("error looking up logfile "LPX64":0x%x: rc %d\n",
lgh_id->lgl_oid, lgh_id->lgl_ogen, rc);
OBD_ALLOC(oa, sizeof(*oa));
if (!oa)
RETURN(ERR_PTR(-ENOMEM));
-
+
oa->o_gr = FILTER_GROUP_LLOG;
oa->o_valid = OBD_MD_FLGENER | OBD_MD_FLGROUP;
- rc = obd_create(ctxt->loc_exp, oa, NULL, NULL);
+ rc = obd_create(ctxt->loc_exp, oa, NULL, 0, NULL, NULL);
if (rc)
GOTO(out_free_oa, rc);
- dchild = obd_lvfs_fid2dentry(ctxt->loc_exp, oa->o_id,
- oa->o_generation, oa->o_gr);
+ dchild = obd_lvfs_id2dentry(ctxt->loc_exp, oa->o_id,
+ oa->o_generation, oa->o_gr);
if (IS_ERR(dchild))
GOTO(out_free_oa, rc = PTR_ERR(dchild));
struct dentry *dentry)
{
struct dentry *new_child;
- char fidname[LL_FID_NAMELEN];
+ char id_name[LL_ID_NAMELEN];
void *handle;
- int namelen, rc = 0, err;
+ int id_len, rc = 0, err;
ENTRY;
- namelen = ll_fid2str(fidname, logid.lgl_oid, logid.lgl_ogen);
+ id_len = ll_id2str(id_name, logid.lgl_oid, logid.lgl_ogen);
down(&ctxt->loc_objects_dir->d_inode->i_sem);
- new_child = lookup_one_len(fidname, ctxt->loc_objects_dir, namelen);
+ new_child = lookup_one_len(id_name, ctxt->loc_objects_dir, id_len);
if (IS_ERR(new_child)) {
CERROR("getting neg dentry for obj rename: %d\n", rc);
GOTO(out, rc = PTR_ERR(new_child));
lock_kernel();
rc = vfs_link(dentry, ctxt->loc_objects_dir->d_inode, new_child);
unlock_kernel();
- if (rc)
- CERROR("error link new object "LPX64":%u: rc %d\n",
+ if (rc) {
+ CERROR("error link new object "LPX64":%08x: rc %d\n",
logid.lgl_oid, logid.lgl_ogen, rc);
+ /* it doesn't make much sense to get -EEXIST here */
+ LASSERTF(rc != -EEXIST, "bug 3490: dentry: %p "
+ "dir->d_ionode %p new_child: %p \n",
+ dentry, ctxt->loc_objects_dir->d_inode, new_child);
+ }
err = llog_fsfilt_commit(ctxt, ctxt->loc_objects_dir->d_inode, handle, 0);
out_dput:
l_dput(new_child);
struct lvfs_run_ctxt saved;
struct dentry *fdentry;
struct inode *parent_inode;
- char fidname[LL_FID_NAMELEN];
+ char id_name[LL_ID_NAMELEN];
void *handle;
- int rc = -EINVAL, err, namelen;
+ int rc = -EINVAL, err, id_len;
ENTRY;
if (ctxt->loc_lvfs_ctxt)
fdentry = loghandle->lgh_file->f_dentry;
parent_inode = fdentry->d_parent->d_inode;
- if (!strcmp(fdentry->d_parent->d_name.name, "LOGS")) {
+ if (!strcmp((char *)fdentry->d_parent->d_name.name, "LOGS")) {
LASSERT(parent_inode == ctxt->loc_logs_dir->d_inode);
- namelen = ll_fid2str(fidname, fdentry->d_inode->i_ino,
- fdentry->d_inode->i_generation);
+ id_len = ll_id2str(id_name, fdentry->d_inode->i_ino,
+ fdentry->d_inode->i_generation);
dget(fdentry);
rc = llog_lvfs_close(loghandle);
if (rc) {
if (!rc) {
down(&ctxt->loc_objects_dir->d_inode->i_sem);
- fdentry = lookup_one_len(fidname, ctxt->loc_objects_dir,
- namelen);
+ fdentry = lookup_one_len(id_name, ctxt->loc_objects_dir,
+ id_len);
if (fdentry == NULL || fdentry->d_inode == NULL) {
- CERROR("destroy non_existent object %s\n", fidname);
+ CERROR("destroy non_existent object %s\n",
+ id_name);
GOTO(out_err, rc = IS_ERR(fdentry) ?
PTR_ERR(fdentry) : -ENOENT);
}
GOTO(out, rc);
}
if (ctxt->loc_alone) {
- if (!strcmp(fdentry->d_parent->d_name.name, "OBJECTS")) {
+ if (!strcmp((char *)fdentry->d_parent->d_name.name, "OBJECTS")) {
LASSERT(parent_inode == ctxt->loc_objects_dir->d_inode);
dget(fdentry);
/* reads the catalog list */
int llog_get_cat_list(struct lvfs_run_ctxt *ctxt,
- struct fsfilt_operations *fsops, char *name,
+ struct fsfilt_operations *fsops, const char *name,
int count, struct llog_catid *idarray)
{
struct lvfs_run_ctxt saved;
/* writes the cat list */
int llog_put_cat_list(struct lvfs_run_ctxt *ctxt,
- struct fsfilt_operations *fsops, char *name,
+ struct fsfilt_operations *fsops, const char *name,
int count, struct llog_catid *idarray)
{
struct lvfs_run_ctxt saved;
}
int llog_get_cat_list(struct lvfs_run_ctxt *ctxt,
- struct fsfilt_operations *fsops, char *name,
+ struct fsfilt_operations *fsops, const char *name,
int count, struct llog_catid *idarray)
{
LBUG();
}
int llog_put_cat_list(struct lvfs_run_ctxt *ctxt,
- struct fsfilt_operations *fsops, char *name,
+ struct fsfilt_operations *fsops, const char *name,
int count, struct llog_catid *idarray)
{
LBUG();