...
|
...
|
@@ -347,7 +347,7 @@ static void fmap_aging(fmap_t *m) {
|
347
|
347
|
|
348
|
348
|
static int fmap_readpage(fmap_t *m, unsigned int first_page, unsigned int count, unsigned int lock_count) {
|
349
|
349
|
size_t readsz = 0, eintr_off;
|
350
|
|
- char *pptr = NULL, err[256];
|
|
350
|
+ char *pptr = NULL, errtxt[256];
|
351
|
351
|
uint32_t s;
|
352
|
352
|
unsigned int i, page = first_page, force_read = 0;
|
353
|
353
|
|
...
|
...
|
@@ -404,9 +404,9 @@ static int fmap_readpage(fmap_t *m, unsigned int first_page, unsigned int count,
|
404
|
404
|
if(fmap_bitmap[j] & FM_MASK_SEEN) {
|
405
|
405
|
/* page we've seen before: check mtime */
|
406
|
406
|
STATBUF st;
|
407
|
|
- char err[256];
|
408
|
407
|
if(FSTAT(_fd, &st)) {
|
409
|
|
- cli_warnmsg("fmap_readpage: fstat failed: %s\n", cli_strerror(errno, err, sizeof(err)));
|
|
408
|
+ cli_strerror(errno, errtxt, sizeof(errtxt));
|
|
409
|
+ cli_warnmsg("fmap_readpage: fstat failed: %s\n", &errtxt);
|
410
|
410
|
return 1;
|
411
|
411
|
}
|
412
|
412
|
if(m->mtime != st.st_mtime) {
|
...
|
...
|
@@ -421,7 +421,8 @@ static int fmap_readpage(fmap_t *m, unsigned int first_page, unsigned int count,
|
421
|
421
|
eintr_off = 0;
|
422
|
422
|
while(readsz) {
|
423
|
423
|
ssize_t got;
|
424
|
|
- got=m->pread_cb(m->handle, pptr, readsz, eintr_off + m->offset + first_page * m->pgsz);
|
|
424
|
+ off_t target_offset = eintr_off + m->offset + (first_page * m->pgsz);
|
|
425
|
+ got=m->pread_cb(m->handle, pptr, readsz, target_offset);
|
425
|
426
|
|
426
|
427
|
if(got < 0 && errno == EINTR)
|
427
|
428
|
continue;
|
...
|
...
|
@@ -433,10 +434,13 @@ static int fmap_readpage(fmap_t *m, unsigned int first_page, unsigned int count,
|
433
|
433
|
continue;
|
434
|
434
|
}
|
435
|
435
|
|
436
|
|
- if(got <0)
|
437
|
|
- cli_errmsg("fmap_readpage: pread error: %s\n", cli_strerror(errno, err, sizeof(err)));
|
438
|
|
- else
|
439
|
|
- cli_warnmsg("fmap_readpage: pread fail: asked for %lu bytes @ offset %lu, got %lu\n", (long unsigned int)readsz, (long unsigned int)(eintr_off + m->offset + first_page * m->pgsz), (long unsigned int)got);
|
|
436
|
+ if(got < 0) {
|
|
437
|
+ cli_strerror(errno, errtxt, sizeof(errtxt));
|
|
438
|
+ cli_errmsg("fmap_readpage: pread error: %s\n", &errtxt);
|
|
439
|
+ }
|
|
440
|
+ else {
|
|
441
|
+ cli_warnmsg("fmap_readpage: pread fail: asked for %lu bytes @ offset %lu, got %lu\n", (long unsigned int)readsz, (long unsigned int)target_offset, (long unsigned int)got);
|
|
442
|
+ }
|
440
|
443
|
return 1;
|
441
|
444
|
}
|
442
|
445
|
|