]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
ZFS multi-device and version 33 support.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 27 Oct 2011 00:49:50 +0000 (02:49 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 27 Oct 2011 00:49:50 +0000 (02:49 +0200)
* Makefile.util.def (libgrubkern): Add grub-core/fs/zfs/zfsinfo.c.
* grub-core/fs/zfs/zfs.c (grub_zfs_device_desc): New struct.
(grub_zfs_data): Add multidev-ice-related fields.
(zio_checksum_verify): Zero-pad printed values. Print checksum name.
(dva_get_offset): Make dva const.
(zfs_fetch_nvlist): New function.
(fill_vdev_info_real): Likewise.
(fill_vdev_info): Likewise.
(check_pool_label): Likewise.
(scan_disk): Likewise.
(scan_devices): Likewise.
(read_device): Likewise.
(read_dva): Likewise.
(zio_read_gang): Use read_dva.
(zio_read_data): Likewise.
(zap_leaf_lookup): Add missing endian conversion.
(zap_verify): Add missing endian conversion. All users updated.
(fzap_lookup): Likewise.
(fzap_iterate): Likewise.
(dnode_get_path): Handle SA bonus.
(nvlist_find_value): Make input const. All users updated.
(unmount_device): New function.
(zfs_unmount): Use unmount_device.
(zfs_mount): Use scan_disk.
(zfs_mtime): New function.
(grub_zfs_open): Handle system attributes.
(fill_fs_info): Likewise.
(grub_zfs_dir): Likewise.
(grub_zfs_fs): Add mtime.
* grub-core/fs/zfs/zfsinfo.c (print_vdev_info): Add missing return.
* include/grub/zfs/sa_impl.h (SA_TYPE_OFFSET): New definition.
(SA_MTIME_OFFSET): Likewise.
(SA_SYMLINK_OFFSET): Likewise.
* include/grub/zfs/zfs.h (SPA_VERSION): Increase to 33.
* util/grub-fstest.c (CMD_ZFSINFO): New enum value.
(fstest): Support zfsinfo.
(argp_parser): Likewise.

1  2 
ChangeLog
grub-core/fs/zfs/zfs.c

diff --cc ChangeLog
index 084131202744042868f119754c932a1a09b2f226,9787d8f9e0bf8bd07124b844de5f00e0a0eea842..1abd5daa238e3445c2c5672d86a0933143e6141b
+++ b/ChangeLog
@@@ -1,9 -1,4 +1,51 @@@
 -2011-10-25  Vladimir Serbinenko  <phcoder@gmail.com>
++2011-10-26  Vladimir Serbinenko  <phcoder@gmail.com>
++
++      ZFS multi-device and version 33 support.
++
++      * Makefile.util.def (libgrubkern): Add grub-core/fs/zfs/zfsinfo.c.
++      * grub-core/fs/zfs/zfs.c (grub_zfs_device_desc): New struct.
++      (grub_zfs_data): Add multidev-ice-related fields.
++      (zio_checksum_verify): Zero-pad printed values. Print checksum name.
++      (dva_get_offset): Make dva const.
++      (zfs_fetch_nvlist): New function.
++      (fill_vdev_info_real): Likewise.
++      (fill_vdev_info): Likewise.
++      (check_pool_label): Likewise.
++      (scan_disk): Likewise.
++      (scan_devices): Likewise.
++      (read_device): Likewise.
++      (read_dva): Likewise.
++      (zio_read_gang): Use read_dva.
++      (zio_read_data): Likewise.
++      (zap_leaf_lookup): Add missing endian conversion.
++      (zap_verify): Add missing endian conversion. All users updated.
++      (fzap_lookup): Likewise.
++      (fzap_iterate): Likewise.
++      (dnode_get_path): Handle SA bonus.
++      (nvlist_find_value): Make input const. All users updated.
++      (unmount_device): New function.
++      (zfs_unmount): Use unmount_device.
++      (zfs_mount): Use scan_disk.
++      (zfs_mtime): New function.
++      (grub_zfs_open): Handle system attributes.
++      (fill_fs_info): Likewise.
++      (grub_zfs_dir): Likewise.
++      (grub_zfs_fs): Add mtime.
++      * grub-core/fs/zfs/zfsinfo.c (print_vdev_info): Add missing return.
++      * include/grub/zfs/sa_impl.h (SA_TYPE_OFFSET): New definition.
++      (SA_MTIME_OFFSET): Likewise.
++      (SA_SYMLINK_OFFSET): Likewise.
++      * include/grub/zfs/zfs.h (SPA_VERSION): Increase to 33.
++      * util/grub-fstest.c (CMD_ZFSINFO): New enum value.
++      (fstest): Support zfsinfo.
++      (argp_parser): Likewise.
++
 +2011-10-26  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * include/grub/datetime.h (grub_datetime2unixtime): Fix off-by-one
 +      error.
 +
 +2011-10-26  Vladimir Serbinenko  <phcoder@gmail.com>
  
        ZFS fixes.
  
index 6721cddc1ce78e6ce8a058ae7b5face283eed61b,b4deba5c0b751d3438f6ffcaf054af18add769ee..3253457c7e1fd31c43c22d80c16489b3853a4e24
@@@ -966,10 -1483,11 +1483,12 @@@ fzap_iterate (dnode_end_t * zap_dnode, 
      }
    for (idx = 0; idx < (1ULL << zap->zap_ptrtbl.zt_shift); idx++)
      {
-       blkid = ((grub_uint64_t *) zap)[idx + (1 << (blksft - 3 - 1))];
+       blkid = grub_zfs_to_cpu64 (((grub_uint64_t *) zap)[idx + (1 << (blksft - 3 - 1))],
+                                        zap_dnode->endian);
  
        for (idx2 = 0; idx2 < idx; idx2++)
--      if (blkid == ((grub_uint64_t *) zap)[idx2 + (1 << (blksft - 3 - 1))])
++      if (blkid == grub_zfs_to_cpu64 (((grub_uint64_t *) zap)[idx2 + (1 << (blksft - 3 - 1))],
++                                       zap_dnode->endian))
          break;
        if (idx2 != idx)
        continue;