- rc = llog_destroy(loghandle);
- if (rc) {
- CERROR("Failure destroying log after last cancel: %d\n",
- rc);
- ext2_set_bit(index, llh->llh_bitmap);
- llh->llh_count++;
- } else {
- rc = 1;
- }
- RETURN(rc);
- }
-
- rc = llog_write_rec(loghandle, &llh->llh_hdr, NULL, 0, NULL, 0);
- if (rc) {
- CERROR("Failure re-writing header %d\n", rc);
- ext2_set_bit(index, llh->llh_bitmap);
- llh->llh_count++;
- }
- RETURN(rc);
+ cfs_spin_unlock(&loghandle->lgh_hdr_lock);
+ rc = llog_destroy(loghandle);
+ if (rc < 0) {
+ CERROR("%s: can't destroy empty llog #"LPX64"#"LPX64
+ "#%08x: rc = %d\n",
+ loghandle->lgh_ctxt->loc_obd->obd_name,
+ loghandle->lgh_id.lgl_oid,
+ loghandle->lgh_id.lgl_oseq,
+ loghandle->lgh_id.lgl_ogen, rc);
+ GOTO(out_err, rc);
+ }
+ RETURN(1);
+ }
+ cfs_spin_unlock(&loghandle->lgh_hdr_lock);
+
+ rc = llog_write_rec(loghandle, &llh->llh_hdr, NULL, 0, NULL, 0);
+ if (rc < 0) {
+ CERROR("%s: fail to write header for llog #"LPX64"#"LPX64
+ "#%08x: rc = %d\n",
+ loghandle->lgh_ctxt->loc_obd->obd_name,
+ loghandle->lgh_id.lgl_oid,
+ loghandle->lgh_id.lgl_oseq,
+ loghandle->lgh_id.lgl_ogen, rc);
+ GOTO(out_err, rc);
+ }
+ RETURN(0);
+out_err:
+ cfs_spin_lock(&loghandle->lgh_hdr_lock);
+ ext2_set_bit(index, llh->llh_bitmap);
+ llh->llh_count++;
+ cfs_spin_unlock(&loghandle->lgh_hdr_lock);
+ return rc;