summaryrefslogtreecommitdiffstats
path: root/sys/boot
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2014-11-10 08:20:21 +0000
committerdelphij <delphij@FreeBSD.org>2014-11-10 08:20:21 +0000
commitfe03d9b9d26fcae476fe7e7fa57516b0fa684089 (patch)
treefc0c345a3bfb9af0de85b1f0161f8541e1696530 /sys/boot
parent57dd09b78bf77575f9ff5b66f08a03c72a220066 (diff)
downloadFreeBSD-src-fe03d9b9d26fcae476fe7e7fa57516b0fa684089.zip
FreeBSD-src-fe03d9b9d26fcae476fe7e7fa57516b0fa684089.tar.gz
MFV r274273:
ZFS large block support. Please note that booting from datasets that have recordsize greater than 128KB is not supported (but it's Okay to enable the feature on the pool). This *may* remain unchanged because of memory constraint. Limited safety belt is provided for mounted root filesystem but use caution is advised. Illumos issue: 5027 zfs large block support MFC after: 1 month
Diffstat (limited to 'sys/boot')
-rw-r--r--sys/boot/zfs/zfsimpl.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/boot/zfs/zfsimpl.c b/sys/boot/zfs/zfsimpl.c
index 16b57c7..8d21c57 100644
--- a/sys/boot/zfs/zfsimpl.c
+++ b/sys/boot/zfs/zfsimpl.c
@@ -57,6 +57,7 @@ static const char *features_for_read[] = {
"com.delphix:hole_birth",
"com.delphix:extensible_dataset",
"com.delphix:embedded_data",
+ "org.open-zfs:large_blocks",
NULL
};
@@ -1222,6 +1223,11 @@ dnode_read(const spa_t *spa, const dnode_phys_t *dnode, off_t offset, void *buf,
int nlevels = dnode->dn_nlevels;
int i, rc;
+ if (bsize > SPA_MAXBLOCKSIZE) {
+ printf("ZFS: I/O error - blocks larger than 128K are not supported\n");
+ return (EIO);
+ }
+
/*
* Note: bsize may not be a power of two here so we need to do an
* actual divide rather than a bitshift.
OpenPOWER on IntegriCloud