summaryrefslogtreecommitdiffstats
path: root/usr.bin/mkimg
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2014-11-17 17:17:10 +0000
committermarcel <marcel@FreeBSD.org>2014-11-17 17:17:10 +0000
commita6b76a0b4d3e6f86fc7d2a3fa911875d19a26618 (patch)
tree7df4445dfb418408d57d3c1721b0cceabf6d81ec /usr.bin/mkimg
parent7b042e6763d57e5561e50e38512eb032f4a53c89 (diff)
downloadFreeBSD-src-a6b76a0b4d3e6f86fc7d2a3fa911875d19a26618.zip
FreeBSD-src-a6b76a0b4d3e6f86fc7d2a3fa911875d19a26618.tar.gz
MFC r274410: Fix for behaviour of SEEK_DATA on ZFS.
Diffstat (limited to 'usr.bin/mkimg')
-rw-r--r--usr.bin/mkimg/image.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/usr.bin/mkimg/image.c b/usr.bin/mkimg/image.c
index 3e7c7d2..be1c2e9 100644
--- a/usr.bin/mkimg/image.c
+++ b/usr.bin/mkimg/image.c
@@ -405,16 +405,18 @@ image_copyin_mapped(lba_t blk, int fd, uint64_t *sizep)
error = 0;
while (!error && cur < end) {
hole = lseek(fd, cur, SEEK_HOLE);
+ if (hole == -1)
+ hole = end;
data = lseek(fd, cur, SEEK_DATA);
+ if (data == -1)
+ data = end;
/*
* Treat the entire file as data if sparse files
* are not supported by the underlying file system.
*/
- if (hole == -1 && data == -1) {
+ if (hole == end && data == end)
data = cur;
- hole = end;
- }
if (cur == hole && data > hole) {
hole = pos;
OpenPOWER on IntegriCloud