diff --git a/sysutils/parkverbot/Makefile b/sysutils/parkverbot/Makefile index 620a519bc610..e0e620bfae7a 100644 --- a/sysutils/parkverbot/Makefile +++ b/sysutils/parkverbot/Makefile @@ -1,23 +1,23 @@ # Created by: Alexey Dokuchaev PORTNAME= parkverbot -PORTVERSION= 1.4 +PORTVERSION= 1.5 CATEGORIES= sysutils MASTER_SITES= https://inai.de/files/parkverbot/ MAINTAINER= danfe@FreeBSD.org COMMENT= Hard disk head parking inhibitor LICENSE= GPLv2+ LIB_DEPENDS= libHX.so:lang/libhx USES= pkgconfig tar:xz GNU_CONFIGURE= yes PLIST_FILES= man/man8/parkverbot.8.gz sbin/parkverbot post-install: ${RM} -r ${STAGEDIR}/lib/systemd .include diff --git a/sysutils/parkverbot/distinfo b/sysutils/parkverbot/distinfo index 561b134ee77d..50a581229da9 100644 --- a/sysutils/parkverbot/distinfo +++ b/sysutils/parkverbot/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1634490016 -SHA256 (parkverbot-1.4.tar.xz) = f8a1c2bbcf5821e677e50e59ad8cf281c6750f9410fd87939c7235f045b3afea -SIZE (parkverbot-1.4.tar.xz) = 75460 +TIMESTAMP = 1649595137 +SHA256 (parkverbot-1.5.tar.xz) = a52e88a60e0a11163ab596dde7d264ba9e80016cf4f276368bfe81f666456e20 +SIZE (parkverbot-1.5.tar.xz) = 78488 diff --git a/sysutils/parkverbot/files/patch-src_parkverbot.c b/sysutils/parkverbot/files/patch-src_parkverbot.c index c277daa38d12..04931af78b4f 100644 --- a/sysutils/parkverbot/files/patch-src_parkverbot.c +++ b/sysutils/parkverbot/files/patch-src_parkverbot.c @@ -1,69 +1,13 @@ ---- src/parkverbot.c.orig 2021-10-17 16:58:59 UTC +--- src/parkverbot.c.orig 2022-04-10 12:51:33 UTC +++ src/parkverbot.c -@@ -18,6 +18,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -36,6 +37,7 @@ struct pv_bdev_entry { - struct HXlist_head anchor; - const char *path; - off_t size, prev_pos; -+ unsigned sector_size; - int fd; - }; - -@@ -72,6 +74,12 @@ static int pv_mainloop(void) - while (true) { - HXlist_for_each_entry(e, &pv_bdev_list, anchor) { - new_pos = HX_drand(0, e->size); -+ /* -+ * read(2) and write(2) require the offset to be -+ * a multiple of the sector size, otherwise they -+ * will return EINVAL; see FreeBSD PR 91149. -+ */ -+ new_pos -= new_pos % e->sector_size; - if (pv_in_window(e->prev_pos, new_pos, e)) { - printf("%s: %llu (in guard window)\n", e->path, - static_cast(unsigned long long, new_pos)); -@@ -104,6 +112,7 @@ static bool pv_open_device(const char *path) - struct pv_bdev_entry *e; - char buf[32]; - uint64_t size; -+ unsigned sector_size; - int fd; - - fd = open(path, O_RDONLY | O_BINARY); -@@ -111,10 +120,14 @@ static bool pv_open_device(const char *path) - fprintf(stderr, "%s: %s\n", path, strerror(errno)); - return false; - } -- if (ioctl(fd, BLKGETSIZE64, &size) < 0) { -- fprintf(stderr, "%s: BLKGETSIZE64: %s\n", path, strerror(errno)); -+ if (ioctl(fd, DIOCGSECTORSIZE, §or_size) < 0) { -+ fprintf(stderr, "%s: DIOCGSECTORSIZE: %s\n", path, strerror(errno)); - return false; - } -+ if (ioctl(fd, DIOCGMEDIASIZE, &size) < 0) { -+ fprintf(stderr, "%s: DIOCGMEDIASIZE: %s\n", path, strerror(errno)); -+ return false; -+ } - e = malloc(sizeof(*e)); - if (e == NULL) { - fprintf(stderr, "%s: %s\n", __func__, strerror(errno)); -@@ -124,9 +137,10 @@ static bool pv_open_device(const char *path) - HXlist_init(&e->anchor); - e->path = path; +@@ -150,8 +150,8 @@ static bool pv_open_device(const char *path) e->size = size; -+ e->sector_size = sector_size; + e->sector_size = sector_size; e->fd = fd; - printf("Added %s (size %s)\n", e->path, - HX_unit_size(buf, sizeof(buf), e->size, 1024, 0)); + printf("Added %s (size %s, sector size %d bytes)\n", e->path, + HX_unit_size(buf, sizeof(buf), e->size, 1024, 0), sector_size); HXlist_add_tail(&pv_bdev_list, &e->anchor); return true; }