diff options
-rw-r--r-- | lib/tdb2/tdb1_lock.c | 3 | ||||
-rw-r--r-- | lib/tdb2/tdb1_transaction.c | 23 |
2 files changed, 17 insertions, 9 deletions
diff --git a/lib/tdb2/tdb1_lock.c b/lib/tdb2/tdb1_lock.c index 2252e4791b..6498b71367 100644 --- a/lib/tdb2/tdb1_lock.c +++ b/lib/tdb2/tdb1_lock.c @@ -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)); diff --git a/lib/tdb2/tdb1_transaction.c b/lib/tdb2/tdb1_transaction.c index 8d25f96ab5..9c526fb41e 100644 --- a/lib/tdb2/tdb1_transaction.c +++ b/lib/tdb2/tdb1_transaction.c @@ -478,8 +478,11 @@ static int _tdb1_transaction_start(struct tdb1_context *tdb) /* get a read lock from the freelist to the end of file. This is upgraded to a write lock during the commit */ if (tdb1_allrecord_lock(tdb, F_RDLCK, TDB_LOCK_WAIT, true) == -1) { - tdb_logerr(tdb, tdb->last_error, TDB_LOG_ERROR, - "tdb1_transaction_start: failed to get hash locks"); + if (errno != EAGAIN && errno != EINTR) { + tdb_logerr(tdb, tdb->last_error, TDB_LOG_ERROR, + "tdb1_transaction_start:" + " failed to get hash locks"); + } goto fail_allrecord_lock; } @@ -955,9 +958,11 @@ static int _tdb1_transaction_prepare_commit(struct tdb1_context *tdb) /* upgrade the main transaction lock region to a write lock */ if (tdb1_allrecord_upgrade(tdb) == -1) { - tdb_logerr(tdb, tdb->last_error, TDB_LOG_ERROR, - "tdb1_transaction_prepare_commit:" - " failed to upgrade hash locks"); + if (errno != EAGAIN && errno != EINTR) { + tdb_logerr(tdb, tdb->last_error, TDB_LOG_ERROR, + "tdb1_transaction_prepare_commit:" + " failed to upgrade hash locks"); + } _tdb1_transaction_cancel(tdb); return -1; } @@ -965,9 +970,11 @@ static int _tdb1_transaction_prepare_commit(struct tdb1_context *tdb) /* get the open lock - this prevents new users attaching to the database during the commit */ if (tdb1_nest_lock(tdb, TDB1_OPEN_LOCK, F_WRLCK, TDB_LOCK_WAIT) == -1) { - tdb_logerr(tdb, tdb->last_error, TDB_LOG_ERROR, - "tdb1_transaction_prepare_commit:" - " failed to get open lock"); + if (errno != EAGAIN && errno != EINTR) { + tdb_logerr(tdb, tdb->last_error, TDB_LOG_ERROR, + "tdb1_transaction_prepare_commit:" + " failed to get open lock"); + } _tdb1_transaction_cancel(tdb); return -1; } |