From 380a17601babcc95a22d75c7c9fed10f10de0e3c Mon Sep 17 00:00:00 2001 From: Peter Avalos Date: Sun, 8 Feb 2009 11:41:07 -0500 Subject: [PATCH] Use pread/pwrite instead of lseek followed by read/write. Obtained-from: FreeBSD --- lib/libc/db/mpool/mpool.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lib/libc/db/mpool/mpool.c b/lib/libc/db/mpool/mpool.c index 1a6433d6e5..d95c72c55d 100644 --- a/lib/libc/db/mpool/mpool.c +++ b/lib/libc/db/mpool/mpool.c @@ -191,9 +191,8 @@ mpool_get(MPOOL *mp, pgno_t pgno, u_int flags __unused) ++mp->pageread; #endif off = mp->pagesize * pgno; - if (lseek(mp->fd, off, SEEK_SET) != off) - return (NULL); - if ((nr = _read(mp->fd, bp->page, mp->pagesize)) != mp->pagesize) { + nr = pread(mp->fd, bp->page, mp->pagesize, off); + if (nr != mp->pagesize) { if (nr >= 0) errno = EFTYPE; return (NULL); @@ -357,9 +356,7 @@ mpool_write(MPOOL *mp, BKT *bp) (mp->pgout)(mp->pgcookie, bp->pgno, bp->page); off = mp->pagesize * bp->pgno; - if (lseek(mp->fd, off, SEEK_SET) != off) - return (RET_ERROR); - if (_write(mp->fd, bp->page, mp->pagesize) != mp->pagesize) + if (pwrite(mp->fd, bp->page, mp->pagesize, off) != mp->pagesize) return (RET_ERROR); bp->flags &= ~MPOOL_DIRTY; -- 2.11.4.GIT