- rec = dbwrap_fetch_locked(
- posix_pending_close_db, talloc_tos(),
- locking_ref_count_key_fsp(fsp, &tmp));
-
- SMB_ASSERT(rec != NULL);
-
- value = dbwrap_record_get_value(rec);
-
- if (value.dptr != NULL) {
- SMB_ASSERT(value.dsize == sizeof(lock_ref_count));
- memcpy(&lock_ref_count, value.dptr,
- sizeof(lock_ref_count));
- }
-
- lock_ref_count++;
-
- status = dbwrap_record_store(rec,
- make_tdb_data((uint8 *)&lock_ref_count,
- sizeof(lock_ref_count)), 0);
+ status = dbwrap_change_int32_atomic(
+ posix_pending_close_db, locking_ref_count_key_fsp(fsp, &tmp),
+ &lock_ref_count, 1);