diff options
| author | Miles Bader <miles@gnu.org> | 1997-06-20 19:24:24 +0000 |
|---|---|---|
| committer | Miles Bader <miles@gnu.org> | 1997-06-20 19:24:24 +0000 |
| commit | 68de70d85b5a804c85b5e6890a236bd3c770759c (patch) | |
| tree | 329ddd405749cc09d0214076a7a505a9b75e56ce | |
| parent | 0c7263cd36e2336c2a13e8c04c37c0e267b079b1 (diff) | |
(pager_read_page, pager_write_page, pager_unlock_page):
Adjust device addresses for possible differences between DEV_BSIZE & device
block size.
| -rw-r--r-- | ufs/pager.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/ufs/pager.c b/ufs/pager.c index 11d5eade..afb34839 100644 --- a/ufs/pager.c +++ b/ufs/pager.c @@ -1,5 +1,5 @@ /* Pager for ufs - Copyright (C) 1994, 1995, 1996 Free Software Foundation + Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -166,7 +166,8 @@ pager_read_page (struct user_pager_info *pager, if (addr) { size_t read = 0; - err = store_read (store, addr, disksize, (void **)buf, &read); + err = store_read (store, addr << log2_dev_blocks_per_dev_bsize, + disksize, (void **)buf, &read); if (read != disksize) err = EIO; if (!err && disksize != __vm_page_size) @@ -208,7 +209,8 @@ pager_write_page (struct user_pager_info *pager, if (addr) { size_t wrote; - err = store_write (store, addr, (void *)buf, disksize, &wrote); + err = store_write (store, addr << log2_dev_blocks_per_dev_bsize, + (void *)buf, disksize, &wrote); if (wrote != disksize) err = EIO; } @@ -310,7 +312,9 @@ pager_unlock_page (struct user_pager_info *pager, goto out; assert (lblkno (sblock, address) < NDADDR); - err = store_write (store, fsbtodb (sblock, bno), + err = store_write (store, + fsbtodb (sblock, bno) + << log2_dev_blocks_per_dev_bsize, zeroblock, sblock->fs_bsize, &wrote); if (!err && wrote != sblock->fs_bsize) err = EIO; @@ -398,7 +402,9 @@ pager_unlock_page (struct user_pager_info *pager, if (err) goto out; - err = store_write (store, fsbtodb (sblock, bno), + err = store_write (store, + fsbtodb (sblock, bno) + << log2_dev_blocks_per_dev_bsize, zeroblock, sblock->fs_bsize, &wrote); if (!err && wrote != sblock->fs_bsize) err = EIO; |
