databases/rrdtool: Fix resize on ZFS

Add an upstream patch that fixes resize on ZFS.  Since ZFS does not support
posix_fallocate(), returning EINVAL, the patch simply ignores this error
from posix_fallocate().

PR:		245898
Reported by:	Tomohiro Hosaka
MFH:		2020Q2
This commit is contained in:
Niclas Zeising
2020-06-14 15:22:25 +00:00
parent b800e8be11
commit f051ecde53
2 changed files with 36 additions and 1 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
PORTNAME= rrdtool
PORTVERSION= 1.7.2
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= databases graphics
MASTER_SITES= http://oss.oetiker.ch/rrdtool/pub/
+35
View File
@@ -0,0 +1,35 @@
From 8829fa758f3e585f20094cff69b32489f4cce3e7 Mon Sep 17 00:00:00 2001
From: Niclas Zeising
Date: Sun, 14 Jun 2020 11:31:33 +0200
Subject: [PATCH] rrd_open: Ignore EINVAL from posix_fallocate()
ZFS on FreeBSD (at least) does not support posix_fallocate(),
returning EINVAL instead. Ignore this error and continue normally.
Without this change, it is not possible to resize rrd files on ZFS.
This fixes #1082
Signed-off-by: Niclas Zeising
---
src/rrd_open.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/rrd_open.c b/src/rrd_open.c
index d8005fe4..00dfb8ca 100644
--- src/rrd_open.c
+++ src/rrd_open.c
@@ -363,7 +363,13 @@ rrd_file_t *rrd_open(
*/
int fret =
posix_fallocate(rrd_simple_file->fd, 0, newfile_size);
- if (fret) {
+ /* ZFS (on FreeBSD) does not support posix_fallocate(), always returning
+ * EINVAL. Ignore this error and continue anyway.
+ * Without this, resize isn't possible on ZFS filesystems.
+ */
+ if (fret == EINVAL) {
+ /* DO NOTHING */
+ } else if (fret) {
rrd_set_error("posix_fallocate '%s': %s", file_name,
rrd_strerror(fret));
goto out_close;