summaryrefslogtreecommitdiffstats
path: root/debian/patches/zfs.patch
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--debian/patches/zfs.patch145
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 ();