forked from Lainports/freebsd-ports
sysutils/parkverbot: update the port to version 1.5
FreeBSD support had been integrated upstream; however, keep the small hunk of our patch which reports the sector size, could be useful for debugging potential problems. Reported by: portscout
This commit is contained in:
parent
047e25615b
commit
d90109c46f
3 changed files with 7 additions and 63 deletions
|
|
@ -1,7 +1,7 @@
|
|||
# Created by: Alexey Dokuchaev <danfe@FreeBSD.org>
|
||||
|
||||
PORTNAME= parkverbot
|
||||
PORTVERSION= 1.4
|
||||
PORTVERSION= 1.5
|
||||
CATEGORIES= sysutils
|
||||
MASTER_SITES= https://inai.de/files/parkverbot/
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,64 +1,8 @@
|
|||
--- 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 <string.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
+#include <sys/disk.h>
|
||||
#include <sys/mount.h>
|
||||
#include <libHX/init.h>
|
||||
#include <libHX/list.h>
|
||||
@@ -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));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue