aboutsummaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
authorJoerg Wunsch <joerg@FreeBSD.org>1995-06-24 17:07:21 +0000
committerJoerg Wunsch <joerg@FreeBSD.org>1995-06-24 17:07:21 +0000
commitd195e6deecf1b6ac002e5025666068e0aeda9371 (patch)
treec51f948f7b44cb7b3969cfa88cf28ea9c3bebf04 /sbin
parenta526d6bb6754013a6062f99e3a8becb34e4afdf9 (diff)
downloadsrc-d195e6deecf1b6ac002e5025666068e0aeda9371.tar.gz
src-d195e6deecf1b6ac002e5025666068e0aeda9371.zip
When using dump/rdump on large filesytems (my case 3 GB), the lseek
claims multiple times to have failed. The problem is a off_t is converted into a int and checked for a negative. A true lseek check should be checking if the off_t is equal to -1 for failure. (Suggested fix from PR #bin/461) Submitted by: mark tinguely <tinguely@opus.cs.ndsu.NoDak.edu>
Notes
Notes: svn path=/head/; revision=9294
Diffstat (limited to 'sbin')
-rw-r--r--sbin/dump/traverse.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sbin/dump/traverse.c b/sbin/dump/traverse.c
index 29034e60262b..96d46cb0f277 100644
--- a/sbin/dump/traverse.c
+++ b/sbin/dump/traverse.c
@@ -558,7 +558,8 @@ bread(blkno, buf, size)
extern int errno;
loop:
- if ((int)lseek(diskfd, ((off_t)blkno << dev_bshift), 0) < 0)
+ if (lseek(diskfd, ((off_t)blkno << dev_bshift), 0) !=
+ ((off_t)blkno << dev_bshift))
msg("bread: lseek fails\n");
if ((cnt = read(diskfd, buf, size)) == size)
return;
@@ -598,7 +599,8 @@ loop:
*/
bzero(buf, size);
for (i = 0; i < size; i += dev_bsize, buf += dev_bsize, blkno++) {
- if ((int)lseek(diskfd, ((off_t)blkno << dev_bshift), 0) < 0)
+ if (lseek(diskfd, ((off_t)blkno << dev_bshift), 0) !=
+ ((off_t)blkno << dev_bshift))
msg("bread: lseek2 fails!\n");
if ((cnt = read(diskfd, buf, (int)dev_bsize)) == dev_bsize)
continue;