From a5b4797b7b542c62e68be1453091ae0baa45bbbb Mon Sep 17 00:00:00 2001 From: Eric Sandeen Date: Sat, 10 Jan 2009 16:40:49 +0000 Subject: [PATCH] * Sat Jan 10 2009 Eric Sandeen 1.41.3-3 - Remove conservative "don't change journal location" patch for F11 - Add btrfs recognition to blkid --- e2fsprogs-1.41.3-blkid-btrfs.patch | 165 +++++++++++++++++++++++++++++ e2fsprogs-journal-move.patch | 19 ---- e2fsprogs.spec | 8 +- 3 files changed, 171 insertions(+), 21 deletions(-) create mode 100644 e2fsprogs-1.41.3-blkid-btrfs.patch delete mode 100644 e2fsprogs-journal-move.patch diff --git a/e2fsprogs-1.41.3-blkid-btrfs.patch b/e2fsprogs-1.41.3-blkid-btrfs.patch new file mode 100644 index 0000000..8f236af --- /dev/null +++ b/e2fsprogs-1.41.3-blkid-btrfs.patch @@ -0,0 +1,165 @@ +Add btrfs detection to libblkid, now that the disk format should be +recognizable in the future. + +# misc/blkid /tmp/fsfile +/tmp/fsfile: LABEL="mylabel" UUID="102b07f0-0e79-4b42-8a4e-1dde418bbe6d" TYPE="btrfs" + +Signed-off-by: Eric Sandeen +--- + +Index: e2fsprogs/lib/blkid/probe.c +=================================================================== +--- e2fsprogs.orig/lib/blkid/probe.c ++++ e2fsprogs/lib/blkid/probe.c +@@ -1293,6 +1293,22 @@ static int probe_lvm2(struct blkid_probe + + return 0; + } ++ ++static int probe_btrfs(struct blkid_probe *probe, ++ struct blkid_magic *id, ++ unsigned char *buf) ++{ ++ struct btrfs_super_block *bs; ++ const char *label = 0; ++ ++ bs = (struct btrfs_super_block *)buf; ++ ++ if (strlen(bs->label)) ++ label = bs->label; ++ blkid_set_tag(probe->dev, "LABEL", label, sizeof(bs->label)); ++ set_uuid(probe->dev, bs->fsid, 0); ++ return 0; ++} + /* + * Various filesystem magics that we can check for. Note that kboff and + * sboff are in kilobytes and bytes respectively. All magics are in +@@ -1386,6 +1402,7 @@ static struct blkid_magic type_array[] = + { "lvm2pv", 0, 0x018, 8, "LVM2 001", probe_lvm2 }, + { "lvm2pv", 1, 0x018, 8, "LVM2 001", probe_lvm2 }, + { "lvm2pv", 1, 0x218, 8, "LVM2 001", probe_lvm2 }, ++ { "btrfs", 64, 0x40, 8, "_BHRfS_M", probe_btrfs }, + { NULL, 0, 0, 0, NULL, NULL } + }; + +Index: e2fsprogs/lib/blkid/probe.h +=================================================================== +--- e2fsprogs.orig/lib/blkid/probe.h ++++ e2fsprogs/lib/blkid/probe.h +@@ -621,6 +621,110 @@ struct lvm2_pv_label_header { + __u8 pv_uuid[LVM2_ID_LEN]; + } __attribute__ ((packed)); + ++ ++/* ++ * this is a very generous portion of the super block, giving us ++ * room to translate 14 chunks with 3 stripes each. ++ */ ++#define BTRFS_SYSTEM_CHUNK_ARRAY_SIZE 2048 ++#define BTRFS_LABEL_SIZE 256 ++#define BTRFS_UUID_SIZE 16 ++#define BTRFS_FSID_SIZE 16 ++#define BTRFS_CSUM_SIZE 32 ++ ++struct btrfs_dev_item { ++ /* the internal btrfs device id */ ++ __u64 devid; ++ ++ /* size of the device */ ++ __u64 total_bytes; ++ ++ /* bytes used */ ++ __u64 bytes_used; ++ ++ /* optimal io alignment for this device */ ++ __u32 io_align; ++ ++ /* optimal io width for this device */ ++ __u32 io_width; ++ ++ /* minimal io size for this device */ ++ __u32 sector_size; ++ ++ /* type and info about this device */ ++ __u64 type; ++ ++ /* expected generation for this device */ ++ __u64 generation; ++ ++ /* ++ * starting byte of this partition on the device, ++ * to allowr for stripe alignment in the future ++ */ ++ __u64 start_offset; ++ ++ /* grouping information for allocation decisions */ ++ __u32 dev_group; ++ ++ /* seek speed 0-100 where 100 is fastest */ ++ __u8 seek_speed; ++ ++ /* bandwidth 0-100 where 100 is fastest */ ++ __u8 bandwidth; ++ ++ /* btrfs generated uuid for this device */ ++ __u8 uuid[BTRFS_UUID_SIZE]; ++ ++ /* uuid of FS who owns this device */ ++ __u8 fsid[BTRFS_UUID_SIZE]; ++} __attribute__ ((__packed__)); ++ ++/* ++ * the super block basically lists the main trees of the FS ++ * it currently lacks any block count etc etc ++ */ ++struct btrfs_super_block { ++ __u8 csum[BTRFS_CSUM_SIZE]; ++ /* the first 3 fields must match struct btrfs_header */ ++ __u8 fsid[BTRFS_FSID_SIZE]; /* FS specific uuid */ ++ __u64 bytenr; /* this block number */ ++ __u64 flags; ++ ++ /* allowed to be different from the btrfs_header from here own down */ ++ __u64 magic; ++ __u64 generation; ++ __u64 root; ++ __u64 chunk_root; ++ __u64 log_root; ++ ++ /* this will help find the new super based on the log root */ ++ __u64 log_root_transid; ++ __u64 total_bytes; ++ __u64 bytes_used; ++ __u64 root_dir_objectid; ++ __u64 num_devices; ++ __u32 sectorsize; ++ __u32 nodesize; ++ __u32 leafsize; ++ __u32 stripesize; ++ __u32 sys_chunk_array_size; ++ __u64 chunk_root_generation; ++ __u64 compat_flags; ++ __u64 compat_ro_flags; ++ __u64 incompat_flags; ++ __u16 csum_type; ++ __u8 root_level; ++ __u8 chunk_root_level; ++ __u8 log_root_level; ++ struct btrfs_dev_item dev_item; ++ ++ char label[BTRFS_LABEL_SIZE]; ++ ++ /* future expansion */ ++ __u64 reserved[32]; ++ __u8 sys_chunk_array[BTRFS_SYSTEM_CHUNK_ARRAY_SIZE]; ++} __attribute__ ((__packed__)); ++ + /* + * Byte swap functions + */ + +-- +To unsubscribe from this list: send the line "unsubscribe linux-ext4" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html + diff --git a/e2fsprogs-journal-move.patch b/e2fsprogs-journal-move.patch deleted file mode 100644 index 7a84711..0000000 --- a/e2fsprogs-journal-move.patch +++ /dev/null @@ -1,19 +0,0 @@ -Only move ext4's journal for now; I don't want to change this behavior -for ext3 late in the release process. - -Index: e2fsprogs/lib/ext2fs/mkjournal.c -=================================================================== ---- e2fsprogs.orig/lib/ext2fs/mkjournal.c -+++ e2fsprogs/lib/ext2fs/mkjournal.c -@@ -332,6 +332,10 @@ static errcode_t write_journal_inode(ext - es.goal = (fs->super->s_blocks_per_group * group) + - fs->super->s_first_data_block; - -+ /* quick conservative hack: if not ext4, just keep the goal at 0 */ -+ if (!(fs->super->s_feature_incompat & EXT3_FEATURE_INCOMPAT_EXTENTS)) -+ es.goal = 0; -+ - retval = ext2fs_block_iterate2(fs, journal_ino, BLOCK_FLAG_APPEND, - 0, mkjournal_proc, &es); - if (es.err) { - diff --git a/e2fsprogs.spec b/e2fsprogs.spec index 1e27288..ae0b046 100644 --- a/e2fsprogs.spec +++ b/e2fsprogs.spec @@ -4,7 +4,7 @@ Summary: Utilities for managing the second and third extended (ext2/ext3) filesystems Name: e2fsprogs Version: 1.41.3 -Release: 2%{?dist} +Release: 3%{?dist} # License based on upstream-modified COPYING file, # which clearly states "V2" intent. License: GPLv2 @@ -15,7 +15,7 @@ Source2: blkid_types-wrapper.h Source3: uuidd.init Patch1: e2fsprogs-1.38-etcblkid.patch Patch2: e2fsprogs-1.40.4-sb_feature_check_ignore.patch -Patch3: e2fsprogs-journal-move.patch +Patch3: e2fsprogs-1.41.3-blkid-btrfs.patch Url: http://e2fsprogs.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -292,6 +292,10 @@ fi %dir %attr(2775, uuidd, uuidd) /var/lib/libuuid %changelog +* Sat Jan 10 2009 Eric Sandeen 1.41.3-3 +- Remove conservative "don't change journal location" patch for F11 +- Add btrfs recognition to blkid + * Mon Oct 03 2008 Eric Sandeen 1.41.3-2 - Bump to revision 2, f10 was behind f9, oops.