- && tdb->num_lockrecs == 0
- && unlikely(tdb_needs_recovery(tdb))) {
- tdb_brunlock(tdb, ltype, offset, 1);
-
- ecode = tdb_lock_and_recover(tdb);
- if (ecode == TDB_SUCCESS) {
- ecode = tdb_brlock(tdb, ltype, offset, 1, flags);
- }
- if (ecode != TDB_SUCCESS) {
- return ecode;
+ && tdb->num_lockrecs == 0) {
+ tdb_bool_err berr = tdb_needs_recovery(tdb);
+ if (berr != false) {
+ tdb_brunlock(tdb, ltype, offset, 1);
+
+ if (berr < 0)
+ return berr;
+ ecode = tdb_lock_and_recover(tdb);
+ if (ecode == TDB_SUCCESS) {
+ ecode = tdb_brlock(tdb, ltype, offset, 1,
+ flags);
+ }
+ if (ecode != TDB_SUCCESS) {
+ return ecode;
+ }