diff options
Diffstat (limited to '')
-rw-r--r-- | debian/patches/zfs.patch | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/debian/patches/zfs.patch b/debian/patches/zfs.patch new file mode 100644 index 0000000..8d0e927 --- /dev/null +++ b/debian/patches/zfs.patch @@ -0,0 +1,145 @@ +From a652c80f142411473d14c038e91c24ba81537f5b Mon Sep 17 00:00:00 2001 +From: Colin Watson <cjwatson@ubuntu.com> +Date: Fri, 28 Mar 2014 17:09:48 +0000 +Subject: Add ZFS support + +Last-Update: 2019-10-11 + +Patch-Name: zfs.patch +--- + libparted/fs/Makefile.am | 3 +- + libparted/fs/zfs/zfs.c | 77 ++++++++++++++++++++++++++++++++++++++++ + libparted/libparted.c | 4 +++ + 3 files changed, 83 insertions(+), 1 deletion(-) + create mode 100644 libparted/fs/zfs/zfs.c + +diff --git a/libparted/fs/Makefile.am b/libparted/fs/Makefile.am +index 41a60d98..1636d49f 100644 +--- a/libparted/fs/Makefile.am ++++ b/libparted/fs/Makefile.am +@@ -52,7 +52,8 @@ libfs_la_SOURCES = \ + xfs/platform_defs.h \ + xfs/xfs.c \ + xfs/xfs_sb.h \ +- xfs/xfs_types.h ++ xfs/xfs_types.h \ ++ zfs/zfs.c + + lib_LTLIBRARIES = libparted-fs-resize.la + +diff --git a/libparted/fs/zfs/zfs.c b/libparted/fs/zfs/zfs.c +new file mode 100644 +index 00000000..47cd6773 +--- /dev/null ++++ b/libparted/fs/zfs/zfs.c +@@ -0,0 +1,77 @@ ++/* ++ libparted - a library for manipulating disk partitions ++ Copyright (C) 2000, 2007, 2009-2010 Free Software Foundation, Inc. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see <http://www.gnu.org/licenses/>. ++*/ ++ ++#include <config.h> ++ ++#include <parted/parted.h> ++#include <parted/endian.h> ++ ++#if ENABLE_NLS ++# include <libintl.h> ++# define _(String) dgettext (PACKAGE, String) ++#else ++# define _(String) (String) ++#endif /* ENABLE_NLS */ ++ ++#include <unistd.h> ++ ++#define ZFS_SIGNATURE 0x00bab10c ++ ++struct zfs_uberblock ++{ ++ uint64_t signature; ++ uint64_t version; ++}; ++ ++static PedGeometry* ++zfs_probe (PedGeometry* geom) ++{ ++ struct zfs_uberblock *uber = alloca (geom->dev->sector_size); ++ ++ if (!ped_geometry_read (geom, uber, 256, 1)) ++ return 0; ++ ++ if ((le64toh (uber->signature) == ZFS_SIGNATURE ++ || be64toh (uber->signature) == ZFS_SIGNATURE) ++ && uber->version != 0) ++ return ped_geometry_new (geom->dev, geom->start, geom->length); ++ else ++ return NULL; ++} ++ ++static PedFileSystemOps zfs_ops = { ++ probe: zfs_probe, ++}; ++ ++static PedFileSystemType zfs_type = { ++ next: NULL, ++ ops: &zfs_ops, ++ name: "zfs", ++}; ++ ++void ++ped_file_system_zfs_init () ++{ ++ ped_file_system_type_register (&zfs_type); ++} ++ ++void ++ped_file_system_zfs_done () ++{ ++ ped_file_system_type_unregister (&zfs_type); ++} +diff --git a/libparted/libparted.c b/libparted/libparted.c +index 204ce007..88e7eea2 100644 +--- a/libparted/libparted.c ++++ b/libparted/libparted.c +@@ -115,6 +115,7 @@ extern void ped_file_system_ext2_init (void); + extern void ped_file_system_nilfs2_init (void); + extern void ped_file_system_btrfs_init (void); + extern void ped_file_system_udf_init (void); ++extern void ped_file_system_zfs_init (void); + + static void + init_file_system_types () +@@ -133,6 +134,7 @@ init_file_system_types () + ped_file_system_nilfs2_init (); + ped_file_system_btrfs_init (); + ped_file_system_udf_init (); ++ ped_file_system_zfs_init (); + } + + extern void ped_disk_aix_done (); +@@ -200,10 +202,12 @@ extern void ped_file_system_xfs_done (void); + extern void ped_file_system_amiga_done (void); + extern void ped_file_system_btrfs_done (void); + extern void ped_file_system_udf_done (void); ++extern void ped_file_system_zfs_done (void); + + static void + done_file_system_types () + { ++ ped_file_system_zfs_done (); + ped_file_system_nilfs2_done (); + ped_file_system_ext2_done (); + ped_file_system_f2fs_done (); |