diff options
| author | Jeff Bonwick <Jeff.Bonwick@Sun.COM> | 2009-11-03 21:31:39 -0800 |
|---|---|---|
| committer | Jeff Bonwick <Jeff.Bonwick@Sun.COM> | 2009-11-03 21:31:39 -0800 |
| commit | dfe73b3d6f9191b75fe71a92c8854f83c6d16a63 (patch) | |
| tree | a209871f1a43f205c0629265ac9d08c19fc076b4 /usr/src | |
| parent | f594b34c3060acf6665b89de87aba5beee144272 (diff) | |
| download | illumos-joyent-dfe73b3d6f9191b75fe71a92c8854f83c6d16a63.tar.gz | |
6897933 zfs_get_data: assertion failed: db->db_offset == offset
Diffstat (limited to 'usr/src')
| -rw-r--r-- | usr/src/cmd/ztest/ztest.c | 6 | ||||
| -rw-r--r-- | usr/src/uts/common/fs/zfs/zfs_vnops.c | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/usr/src/cmd/ztest/ztest.c b/usr/src/cmd/ztest/ztest.c index c18803b3d3..37d695905b 100644 --- a/usr/src/cmd/ztest/ztest.c +++ b/usr/src/cmd/ztest/ztest.c @@ -1655,8 +1655,12 @@ ztest_get_data(void *arg, lr_write_t *lr, char *buf, zio_t *zio) ASSERT(error == 0); } else { size = doi.doi_data_block_size; - if (ISP2(size)) + if (ISP2(size)) { offset = P2ALIGN(offset, size); + } else { + ASSERT(offset < size); + offset = 0; + } zgd->zgd_rl = ztest_range_lock(zd, object, offset, size, RL_READER); diff --git a/usr/src/uts/common/fs/zfs/zfs_vnops.c b/usr/src/uts/common/fs/zfs/zfs_vnops.c index ec7a3dcc11..7694a5bc68 100644 --- a/usr/src/uts/common/fs/zfs/zfs_vnops.c +++ b/usr/src/uts/common/fs/zfs/zfs_vnops.c @@ -929,7 +929,7 @@ zfs_get_data(void *arg, lr_write_t *lr, char *buf, zio_t *zio) for (;;) { uint64_t blkoff; size = zp->z_blksz; - blkoff = ISP2(size) ? P2PHASE(offset, size) : 0; + blkoff = ISP2(size) ? P2PHASE(offset, size) : offset; offset -= blkoff; zgd->zgd_rl = zfs_range_lock(zp, offset, size, RL_READER); @@ -939,7 +939,7 @@ zfs_get_data(void *arg, lr_write_t *lr, char *buf, zio_t *zio) zfs_range_unlock(zgd->zgd_rl); } /* test for truncation needs to be done while range locked */ - if (offset >= zp->z_phys->zp_size) + if (lr->lr_offset >= zp->z_phys->zp_size) error = ENOENT; #ifdef DEBUG if (zil_fault_io) { |
