summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2014-08-08 18:57:43 +0000
committerdelphij <delphij@FreeBSD.org>2014-08-08 18:57:43 +0000
commit1052358c986e694063b4b57f8b53422363d05315 (patch)
tree7688e65f35606ffe47bff558f8bec11285bbd54d
parentc9f34e40cb614130f2e6e14e50ce173941ef4ef8 (diff)
downloadFreeBSD-src-1052358c986e694063b4b57f8b53422363d05315.zip
FreeBSD-src-1052358c986e694063b4b57f8b53422363d05315.tar.gz
MFC r269093:
Transform the I/O when vdev_physical_ashift is greater than SPA_MINBLOCKSHIFT.
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
index aba22d3..2131f5e 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
@@ -2619,7 +2619,8 @@ zio_vdev_io_start(zio_t **ziop)
align = 1ULL << vd->vdev_top->vdev_ashift;
- if (!(zio->io_flags & ZIO_FLAG_PHYSICAL) &&
+ if ((!(zio->io_flags & ZIO_FLAG_PHYSICAL) ||
+ (vd->vdev_top->vdev_physical_ashift > SPA_MINBLOCKSHIFT)) &&
P2PHASE(zio->io_size, align) != 0) {
/* Transform logical writes to be a full physical block size. */
uint64_t asize = P2ROUNDUP(zio->io_size, align);
OpenPOWER on IntegriCloud