From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> Since disk_scsi_verify and pread are interchangeably called from disk_read_verify(), we must return the number of bytes verified (or -1) just like what pread returns. This doesn't matter now due to bugs in scrub, but we're about to fix those bugs. Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --- scrub/disk.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scrub/disk.c b/scrub/disk.c index d2101cc6..bf9c795a 100644 --- a/scrub/disk.c +++ b/scrub/disk.c @@ -144,7 +144,7 @@ disk_scsi_verify( iohdr.timeout = 30000; /* 30s */ error = ioctl(disk->d_fd, SG_IO, &iohdr); - if (error) + if (error < 0) return error; dbg_printf("VERIFY(16) fd %d lba %"PRIu64" len %"PRIu64" info %x " @@ -163,7 +163,7 @@ disk_scsi_verify( return -1; } - return error; + return blockcount << BBSHIFT; } #else # define disk_scsi_verify(...) (ENOTTY)