- /* dentry_open does a dput(dchild) and mntput(mnt) on error */
- mntget(filter->fo_vfsmnt);
- file = dentry_open(dchild, filter->fo_vfsmnt, O_RDWR | O_LARGEFILE);
- if (IS_ERR(file)) {
- rc = PTR_ERR(file);
- CERROR("error opening log file "LPX64": rc %d\n", id, rc);
- GOTO(out_destroy, rc);
- }
- ldlm_lock_decref(&parent_lockh, LCK_PW);
-
- loghandle->lgh_file = file;
- loghandle->lgh_cookie.lgc_lgl.lgl_oid = id;
- loghandle->lgh_cookie.lgc_lgl.lgl_ogen = dchild->d_inode->i_generation;
- loghandle->lgh_log_create = filter_log_create;
- loghandle->lgh_log_open = filter_log_open;
- loghandle->lgh_log_close = filter_log_close;
- loghandle->lgh_obd = obd;
-
- RETURN(loghandle);
-
-out_destroy:
- err = vfs_unlink(dparent->d_inode, dchild);
- if (err)
- CERROR("error unlinking %*s on error: rc %d\n",
- dchild->d_name.len, dchild->d_name.name, err);
-out_child:
- f_dput(dchild);
-out_lock:
- ldlm_lock_decref(&parent_lockh, LCK_PW);
-out_ctxt:
- llog_free_handle(loghandle);
- RETURN(ERR_PTR(rc));
+ OBD_FAIL_TIMEOUT(OBD_FAIL_OST_CANCEL_COOKIE_TIMEOUT, 30);
+
+ rc = llog_cancel(ctxt, NULL, 1, cookie, 0);
+ if (rc)
+ CERROR("error cancelling log cookies: rc = %d\n", rc);
+ llog_ctxt_put(ctxt);
+out:
+ OBD_FREE(cookie, sizeof(*cookie));