From: Timo Sirainen Date: Sat, 19 Sep 2015 22:04:50 +0000 (+0300) Subject: lib: file_wait_lock*(): Improve the panic log message on EDEADLOCK. X-Git-Tag: 2.2.19.rc1~38 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3d2fd3816b79caf8048582f1e951019187ee9d9d;p=thirdparty%2Fdovecot%2Fcore.git lib: file_wait_lock*(): Improve the panic log message on EDEADLOCK. --- diff --git a/src/lib/file-lock.c b/src/lib/file-lock.c index 1ccdbc692a..82bcf261fe 100644 --- a/src/lib/file-lock.c +++ b/src/lib/file-lock.c @@ -211,6 +211,8 @@ static int file_lock_do(int fd, const char *path, int lock_type, } *error_r = t_strdup_printf("fcntl(%s, %s, %s) locking failed: %m", path, lock_type_str, timeout_secs == 0 ? "F_SETLK" : "F_SETLKW"); + if (errno == EDEADLOCK) + i_panic("%s%s", *error_r, file_lock_find(fd, lock_method, lock_type)); return -1; #endif } @@ -257,6 +259,8 @@ static int file_lock_do(int fd, const char *path, int lock_type, } *error_r = t_strdup_printf("flock(%s, %s) failed: %m", path, lock_type_str); + if (errno == EDEADLOCK) + i_panic("%s%s", *error_r, file_lock_find(fd, lock_method, lock_type)); return -1; #endif } @@ -292,10 +296,8 @@ int file_wait_lock_error(int fd, const char *path, int lock_type, int ret; ret = file_lock_do(fd, path, lock_type, lock_method, timeout_secs, error_r); - if (ret <= 0) { - i_assert(errno != EDEADLOCK); + if (ret <= 0) return ret; - } lock = i_new(struct file_lock, 1); lock->fd = fd;