valgrind: temporarily handle that valgrind still doesn't know LOOP_GET_STATUS64
Should be removed once valgrind learns it.
This commit is contained in:
parent
50d046993b
commit
10c1b18888
|
@ -1,5 +1,9 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
|
||||
#if HAVE_VALGRIND_MEMCHECK_H
|
||||
#include <valgrind/memcheck.h>
|
||||
#endif
|
||||
|
||||
#include <linux/dm-ioctl.h>
|
||||
#include <linux/loop.h>
|
||||
#include <sys/mount.h>
|
||||
|
@ -215,9 +219,15 @@ static int wait_for_partitions_to_appear(
|
|||
* an explicit recognizable error about this, so that callers can generate a
|
||||
* proper message explaining the situation. */
|
||||
|
||||
if (ioctl(fd, LOOP_GET_STATUS64, &info) >= 0 && (info.lo_flags & LO_FLAGS_PARTSCAN) == 0) {
|
||||
log_debug("Device is a loop device and partition scanning is off!");
|
||||
return -EPROTONOSUPPORT;
|
||||
if (ioctl(fd, LOOP_GET_STATUS64, &info) >= 0) {
|
||||
#if HAVE_VALGRIND_MEMCHECK_H
|
||||
/* Valgrind currently doesn't know LOOP_GET_STATUS64. Remove this once it does */
|
||||
VALGRIND_MAKE_MEM_DEFINED(&info, sizeof(info));
|
||||
#endif
|
||||
|
||||
if ((info.lo_flags & LO_FLAGS_PARTSCAN) == 0)
|
||||
return log_debug_errno(EPROTONOSUPPORT,
|
||||
"Device is a loop device and partition scanning is off!");
|
||||
}
|
||||
}
|
||||
if (r != -EBUSY)
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1+ */
|
||||
|
||||
#if HAVE_VALGRIND_MEMCHECK_H
|
||||
#include <valgrind/memcheck.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <linux/blkpg.h>
|
||||
|
@ -42,6 +46,11 @@ int loop_device_make_full(
|
|||
if (S_ISBLK(st.st_mode)) {
|
||||
if (ioctl(loop, LOOP_GET_STATUS64, &info) >= 0) {
|
||||
/* Oh! This is a loopback device? That's interesting! */
|
||||
|
||||
#if HAVE_VALGRIND_MEMCHECK_H
|
||||
/* Valgrind currently doesn't know LOOP_GET_STATUS64. Remove this once it does */
|
||||
VALGRIND_MAKE_MEM_DEFINED(&info, sizeof(info));
|
||||
#endif
|
||||
nr = info.lo_number;
|
||||
|
||||
if (asprintf(&loopdev, "/dev/loop%i", nr) < 0)
|
||||
|
@ -217,9 +226,13 @@ int loop_device_open(const char *loop_path, int open_flags, LoopDevice **ret) {
|
|||
if (!S_ISBLK(st.st_mode))
|
||||
return -ENOTBLK;
|
||||
|
||||
if (ioctl(loop_fd, LOOP_GET_STATUS64, &info) >= 0)
|
||||
if (ioctl(loop_fd, LOOP_GET_STATUS64, &info) >= 0) {
|
||||
#if HAVE_VALGRIND_MEMCHECK_H
|
||||
/* Valgrind currently doesn't know LOOP_GET_STATUS64. Remove this once it does */
|
||||
VALGRIND_MAKE_MEM_DEFINED(&info, sizeof(info));
|
||||
#endif
|
||||
nr = info.lo_number;
|
||||
else
|
||||
} else
|
||||
nr = -1;
|
||||
|
||||
p = strdup(loop_path);
|
||||
|
@ -347,6 +360,11 @@ int loop_device_refresh_size(LoopDevice *d, uint64_t offset, uint64_t size) {
|
|||
if (ioctl(d->fd, LOOP_GET_STATUS64, &info) < 0)
|
||||
return -errno;
|
||||
|
||||
#if HAVE_VALGRIND_MEMCHECK_H
|
||||
/* Valgrind currently doesn't know LOOP_GET_STATUS64. Remove this once it does */
|
||||
VALGRIND_MAKE_MEM_DEFINED(&info, sizeof(info));
|
||||
#endif
|
||||
|
||||
if (size == UINT64_MAX && offset == UINT64_MAX)
|
||||
return 0;
|
||||
if (info.lo_sizelimit == size && info.lo_offset == offset)
|
||||
|
|
Loading…
Reference in New Issue