]> git.proxmox.com Git - grub2.git/commitdiff
ZFS zlib support
authorRobert Millan <rmh@gnu.org>
Tue, 8 Nov 2011 18:15:47 +0000 (18:15 +0000)
committerRobert Millan <rmh@gnu.org>
Tue, 8 Nov 2011 18:15:47 +0000 (18:15 +0000)
debian/patches/series
debian/patches/zfs_update.patch [new file with mode: 0644]

index f548787dfa3765a7b131b0858eb1b0c871a71ab7..f4c76a3cba0073492ad4ca2419d601ea5d537c2f 100644 (file)
@@ -28,3 +28,4 @@ kfreebsd_mfi_devices.patch
 probe_canonicalise.patch
 mkconfig_skip_readme.patch
 kfreebsd_lvm.patch
+zfs_update.patch
diff --git a/debian/patches/zfs_update.patch b/debian/patches/zfs_update.patch
new file mode 100644 (file)
index 0000000..ee51c60
--- /dev/null
@@ -0,0 +1,75 @@
+
+Revisions:
+
+3340: ZFS zlib support
+
+--- a/grub-core/fs/zfs/zfs.c
++++ b/grub-core/fs/zfs/zfs.c
+@@ -51,6 +51,7 @@
+ #include <grub/zfs/sa_impl.h>
+ #include <grub/zfs/dsl_dir.h>
+ #include <grub/zfs/dsl_dataset.h>
++#include <grub/deflate.h>
+ GRUB_MOD_LICENSE ("GPLv3+");
+@@ -163,13 +164,30 @@
+   grub_disk_addr_t vdev_phys_sector;
+ };
++static grub_err_t 
++zlib_decompress (void *s, void *d,
++               grub_size_t slen, grub_size_t dlen)
++{
++  if (grub_zlib_decompress (s, slen, 0, d, dlen) < 0)
++    return grub_errno;
++  return GRUB_ERR_NONE;
++}
++
+ static decomp_entry_t decomp_table[ZIO_COMPRESS_FUNCTIONS] = {
+   {"inherit", NULL},          /* ZIO_COMPRESS_INHERIT */
+   {"on", lzjb_decompress},    /* ZIO_COMPRESS_ON */
+   {"off", NULL},              /* ZIO_COMPRESS_OFF */
+   {"lzjb", lzjb_decompress},  /* ZIO_COMPRESS_LZJB */
+   {"empty", NULL},            /* ZIO_COMPRESS_EMPTY */
+-  {"gzip", NULL},             /* ZIO_COMPRESS_GZIP */
++  {"gzip-1", zlib_decompress},  /* ZIO_COMPRESS_GZIP1 */
++  {"gzip-2", zlib_decompress},  /* ZIO_COMPRESS_GZIP2 */
++  {"gzip-3", zlib_decompress},  /* ZIO_COMPRESS_GZIP3 */
++  {"gzip-4", zlib_decompress},  /* ZIO_COMPRESS_GZIP4 */
++  {"gzip-5", zlib_decompress},  /* ZIO_COMPRESS_GZIP5 */
++  {"gzip-6", zlib_decompress},  /* ZIO_COMPRESS_GZIP6 */
++  {"gzip-7", zlib_decompress},  /* ZIO_COMPRESS_GZIP7 */
++  {"gzip-8", zlib_decompress},  /* ZIO_COMPRESS_GZIP8 */
++  {"gzip-9", zlib_decompress},  /* ZIO_COMPRESS_GZIP9 */
+ };
+ static grub_err_t zio_read_data (blkptr_t * bp, grub_zfs_endian_t endian,
+@@ -527,7 +545,7 @@
+   *buf = NULL;
+   checksum = (grub_zfs_to_cpu64((bp)->blk_prop, endian) >> 40) & 0xff;
+-  comp = (grub_zfs_to_cpu64((bp)->blk_prop, endian)>>32) & 0x7;
++  comp = (grub_zfs_to_cpu64((bp)->blk_prop, endian)>>32) & 0xff;
+   lsize = (BP_IS_HOLE(bp) ? 0 :
+          (((grub_zfs_to_cpu64 ((bp)->blk_prop, endian) & 0xffff) + 1)
+           << SPA_MINBLOCKSHIFT));
+--- a/include/grub/zfs/zio.h
++++ b/include/grub/zfs/zio.h
+@@ -77,7 +77,15 @@
+       ZIO_COMPRESS_OFF,
+       ZIO_COMPRESS_LZJB,
+       ZIO_COMPRESS_EMPTY,
+-      ZIO_COMPRESS_GZIP,
++      ZIO_COMPRESS_GZIP1,
++      ZIO_COMPRESS_GZIP2,
++      ZIO_COMPRESS_GZIP3,
++      ZIO_COMPRESS_GZIP4,
++      ZIO_COMPRESS_GZIP5,
++      ZIO_COMPRESS_GZIP6,
++      ZIO_COMPRESS_GZIP7,
++      ZIO_COMPRESS_GZIP8,
++      ZIO_COMPRESS_GZIP9,
+       ZIO_COMPRESS_FUNCTIONS
+ };