Package: dcfldd
Version: 1.3.4.1-2.1
Severity: normal
Tags: patch
Dear Maintainer,
Probing the size of large block devices fails, because
ioctl(..., BLKGETSIZE, ...) fails with -EFBIG.
The following patch makes dcfldd use BLKGETSIZE64
on Linux:
--- dcfldd-1.3.4.1.orig/sizeprobe.c
+++ dcfldd-1.3.4.1/sizeprobe.c
@@ -63,9 +63,13 @@ static off_t midpoint(off_t a, off_t b,
static off_t get_dev_size(int fd, long blksize)
{
off_t num_sectors = 0;
-
- if (ioctl(fd, BLKGETSIZE, &num_sectors))
- log_info("%s: ioctl call to BLKGETSIZE failed.\n", program_name);
+
+ /*
+ * Use BLKGETSIZE64 unconditionally, since dcfldd.h #defines
_FILE_OFFSET_BITS 64
+ * and off_t is guaranteed to be large enough to hold the result.
+ */
+ if (ioctl(fd, BLKGETSIZE64, &num_sectors))
+ log_info("%s: ioctl call to BLKGETSIZE64 failed.\n", program_name);
else
return (num_sectors * 512);
}
-- System Information:
Debian Release: 7.6
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: i386 (i686)
Kernel: Linux 2.6.32-5-686 (SMP w/2 CPU cores)
Locale: LANG=el_GR.UTF8, LC_CTYPE=el_GR.UTF8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages dcfldd depends on:
ii libc6 2.13-38+deb7u3
dcfldd recommends no packages.
dcfldd suggests no packages.
-- no debconf information
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]