diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2011-09-14 07:39:13 +0930 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2011-09-14 07:39:13 +0930 |
commit | 88ce92b92efe12f8a7364eb1786d73ec8ecd7884 (patch) | |
tree | f6fa74c2f88ec480826200a6557c72188c0f79d9 /lib/tdb2/tdb1_lock.c | |
parent | bdd46e4513c7157a67408fcbd1e24b822cdbb960 (diff) | |
download | samba-88ce92b92efe12f8a7364eb1786d73ec8ecd7884.tar.gz samba-88ce92b92efe12f8a7364eb1786d73ec8ecd7884.tar.bz2 samba-88ce92b92efe12f8a7364eb1786d73ec8ecd7884.zip |
tdb2: suppress tdb1 backend logging when locking returns EINTR or EAGAIN
The TDB1 code logs multiple times on errors; we must prevent that in
the limited case where locking fails. With TDB2, this can happen due
to the lock function attribute, where the user supplies replacement
locking functions which are allowed to return with errno EAGAIN or
EINTR for various special-effects. Flooding the logs for this is
unfriendly.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit a391b2b900bc6d5c0467869a454bdb5c51b5a3be)
Diffstat (limited to 'lib/tdb2/tdb1_lock.c')
-rw-r--r-- | lib/tdb2/tdb1_lock.c | 3 |
1 files changed, 2 insertions, 1 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)); |