tdb2: suppress tdb1 backend logging when locking returns EINTR or EAGAIN
[ccan] / ccan / tdb2 / tdb1_lock.c
index 2252e4791b91c9d8d2afb392b9fd3c87f86d9056..6498b7136726bf6083e774315bd4455caf9dde9a 100644 (file)
@@ -180,7 +180,8 @@ int tdb1_lock(struct tdb1_context *tdb, int list, int ltype)
        int ret;
 
        ret = tdb1_lock_list(tdb, list, ltype, TDB_LOCK_WAIT);
-       if (ret) {
+       /* Don't log for EAGAIN and EINTR: they could have overridden lock fns */
+       if (ret && errno != EAGAIN && errno != EINTR) {
                tdb_logerr(tdb, tdb->last_error, TDB_LOG_ERROR,
                           "tdb1_lock failed on list %d "
                           "ltype=%d (%s)",  list, ltype, strerror(errno));