git: 9dcf00aa404b - releng/14.0 - zfs: merge openzfs/zfs@e96fbdba3 (zfs-2.2-release) into stable/14
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 11 Sep 2023 19:48:24 UTC
The branch releng/14.0 has been updated by mm:
URL: https://cgit.FreeBSD.org/src/commit/?id=9dcf00aa404bb62052433c45aaa5475e2760f5ed
commit 9dcf00aa404bb62052433c45aaa5475e2760f5ed
Author: Martin Matuska <mm@FreeBSD.org>
AuthorDate: 2023-09-11 07:20:55 +0000
Commit: Martin Matuska <mm@FreeBSD.org>
CommitDate: 2023-09-11 19:47:08 +0000
zfs: merge openzfs/zfs@e96fbdba3 (zfs-2.2-release) into stable/14
Notable upstream pull request merges:
#15251 Add more constraints for block cloning
Obtained from: OpenZFS
OpenZFS commit: e96fbdba344e9c25cad624a10d4a4b300fd35f6c
Approved by: re (gjb)
(cherry picked from commit 2b2fbeb3a97b44e88b1ca1a01a9671a8be9fd04f)
---
sys/contrib/openzfs/META | 2 +-
.../openzfs/module/os/linux/zfs/qat_compress.c | 2 ++
sys/contrib/openzfs/module/zfs/zfs_vnops.c | 21 +++++++++++++++++++--
sys/modules/zfs/zfs_config.h | 4 ++--
sys/modules/zfs/zfs_gitrev.h | 2 +-
5 files changed, 25 insertions(+), 6 deletions(-)
diff --git a/sys/contrib/openzfs/META b/sys/contrib/openzfs/META
index e4e770026b57..0953cc51922f 100644
--- a/sys/contrib/openzfs/META
+++ b/sys/contrib/openzfs/META
@@ -2,7 +2,7 @@ Meta: 1
Name: zfs
Branch: 1.0
Version: 2.2.0
-Release: rc3
+Release: rc4
Release-Tags: relext
License: CDDL
Author: OpenZFS
diff --git a/sys/contrib/openzfs/module/os/linux/zfs/qat_compress.c b/sys/contrib/openzfs/module/os/linux/zfs/qat_compress.c
index 07d5d34dae33..6d0595dd5f76 100644
--- a/sys/contrib/openzfs/module/os/linux/zfs/qat_compress.c
+++ b/sys/contrib/openzfs/module/os/linux/zfs/qat_compress.c
@@ -193,7 +193,9 @@ qat_dc_init(void)
sd.huffType = CPA_DC_HT_FULL_DYNAMIC;
sd.sessDirection = CPA_DC_DIR_COMBINED;
sd.sessState = CPA_DC_STATELESS;
+#if (CPA_DC_API_VERSION_NUM_MAJOR == 1 && CPA_DC_API_VERSION_NUM_MINOR < 6)
sd.deflateWindowSize = 7;
+#endif
sd.checksum = CPA_DC_ADLER32;
status = cpaDcGetSessionSize(dc_inst_handles[i],
&sd, &sess_size, &ctx_size);
diff --git a/sys/contrib/openzfs/module/zfs/zfs_vnops.c b/sys/contrib/openzfs/module/zfs/zfs_vnops.c
index f8d13075d5c0..a64e1e2dc83d 100644
--- a/sys/contrib/openzfs/module/zfs/zfs_vnops.c
+++ b/sys/contrib/openzfs/module/zfs/zfs_vnops.c
@@ -1172,9 +1172,20 @@ zfs_clone_range(znode_t *inzp, uint64_t *inoffp, znode_t *outzp,
inblksz = inzp->z_blksz;
/*
- * We cannot clone into files with different block size.
+ * We cannot clone into files with different block size if we can't
+ * grow it (block size is already bigger or more than one block).
*/
- if (inblksz != outzp->z_blksz && outzp->z_size > inblksz) {
+ if (inblksz != outzp->z_blksz && (outzp->z_size > outzp->z_blksz ||
+ outzp->z_size > inblksz)) {
+ error = SET_ERROR(EINVAL);
+ goto unlock;
+ }
+
+ /*
+ * Block size must be power-of-2 if destination offset != 0.
+ * There can be no multiple blocks of non-power-of-2 size.
+ */
+ if (outoff != 0 && !ISP2(inblksz)) {
error = SET_ERROR(EINVAL);
goto unlock;
}
@@ -1358,6 +1369,12 @@ unlock:
*inoffp += done;
*outoffp += done;
*lenp = done;
+ } else {
+ /*
+ * If we made no progress, there must be a good reason.
+ * EOF is handled explicitly above, before the loop.
+ */
+ ASSERT3S(error, !=, 0);
}
zfs_exit_two(inzfsvfs, outzfsvfs, FTAG);
diff --git a/sys/modules/zfs/zfs_config.h b/sys/modules/zfs/zfs_config.h
index 29425d3368e0..122a7a3f032e 100644
--- a/sys/modules/zfs/zfs_config.h
+++ b/sys/modules/zfs/zfs_config.h
@@ -1074,7 +1074,7 @@
/* #undef ZFS_IS_GPL_COMPATIBLE */
/* Define the project alias string. */
-#define ZFS_META_ALIAS "zfs-2.2.0-FreeBSD_g32949f256"
+#define ZFS_META_ALIAS "zfs-2.2.0-FreeBSD_ge96fbdba3"
/* Define the project author. */
#define ZFS_META_AUTHOR "OpenZFS"
@@ -1104,7 +1104,7 @@
#define ZFS_META_NAME "zfs"
/* Define the project release. */
-#define ZFS_META_RELEASE "FreeBSD_g32949f256"
+#define ZFS_META_RELEASE "FreeBSD_ge96fbdba3"
/* Define the project version. */
#define ZFS_META_VERSION "2.2.0"
diff --git a/sys/modules/zfs/zfs_gitrev.h b/sys/modules/zfs/zfs_gitrev.h
index 71be2d813a0a..f29b7621500d 100644
--- a/sys/modules/zfs/zfs_gitrev.h
+++ b/sys/modules/zfs/zfs_gitrev.h
@@ -1 +1 @@
-#define ZFS_META_GITREV "zfs-2.2.0-rc3-31-g32949f256"
+#define ZFS_META_GITREV "zfs-2.2.0-rc4-1-ge96fbdba3"