summaryrefslogtreecommitdiffstats
path: root/abs/core/util-linux-ng/util-linux-ng-nilfs2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/util-linux-ng/util-linux-ng-nilfs2.patch')
-rw-r--r--abs/core/util-linux-ng/util-linux-ng-nilfs2.patch276
1 files changed, 276 insertions, 0 deletions
diff --git a/abs/core/util-linux-ng/util-linux-ng-nilfs2.patch b/abs/core/util-linux-ng/util-linux-ng-nilfs2.patch
new file mode 100644
index 0000000..3ac215b
--- /dev/null
+++ b/abs/core/util-linux-ng/util-linux-ng-nilfs2.patch
@@ -0,0 +1,276 @@
+From b44b8600d4096de8203c1fb0702bbc95ee51017f Mon Sep 17 00:00:00 2001
+From: Jiro SEKIBA <jir@unicus.jp>
+Date: Tue, 13 Jul 2010 09:12:56 +0200
+Subject: [PATCH] libblkid: add nilfs2 filesystem superblock probe
+
+This patch implements nilfs2_idinfo to proble nilfs2 partition.
+The patch probes uuid, label, version and verify crc check sum of
+superblock.
+
+Signed-off-by: Jiro SEKIBA <jir@unicus.jp>
+Signed-off-by: Karel Zak <kzak@redhat.com>
+---
+ shlibs/blkid/src/superblocks/Makefile.am | 1 +
+ shlibs/blkid/src/superblocks/nilfs.c | 120 ++++++++++++++++++++++++++++
+ shlibs/blkid/src/superblocks/superblocks.c | 1 +
+ shlibs/blkid/src/superblocks/superblocks.h | 1 +
+ 4 files changed, 123 insertions(+), 0 deletions(-)
+ create mode 100644 shlibs/blkid/src/superblocks/nilfs.c
+
+diff --git a/shlibs/blkid/src/superblocks/Makefile.am b/shlibs/blkid/src/superblocks/Makefile.am
+index 39b074b..1501fab 100644
+--- a/shlibs/blkid/src/superblocks/Makefile.am
++++ b/shlibs/blkid/src/superblocks/Makefile.am
+@@ -47,4 +47,5 @@ libblkid_superblocks_la_SOURCES = \
+ drbd.c \
+ vmfs.c \
+ befs.c \
++ nilfs.c \
+ exfat.c
+diff --git a/shlibs/blkid/src/superblocks/nilfs.c b/shlibs/blkid/src/superblocks/nilfs.c
+new file mode 100644
+index 0000000..c7aba35
+--- /dev/null
++++ b/shlibs/blkid/src/superblocks/nilfs.c
+@@ -0,0 +1,120 @@
++/*
++ * Copyright (C) 2010 by Jiro SEKIBA <jir@unicus.jp>
++ *
++ * This file may be redistributed under the terms of the
++ * GNU Lesser General Public License
++ */
++#include <stddef.h>
++#include <string.h>
++
++#include "superblocks.h"
++#include "crc32.h"
++
++struct nilfs_super_block {
++ uint32_t s_rev_level;
++ uint16_t s_minor_rev_level;
++ uint16_t s_magic;
++
++ uint16_t s_bytes;
++
++ uint16_t s_flags;
++ uint32_t s_crc_seed;
++ uint32_t s_sum;
++
++ uint32_t s_log_block_size;
++
++ uint64_t s_nsegments;
++ uint64_t s_dev_size;
++ uint64_t s_first_data_block;
++ uint32_t s_blocks_per_segment;
++ uint32_t s_r_segments_percentage;
++
++ uint64_t s_last_cno;
++ uint64_t s_last_pseg;
++ uint64_t s_last_seq;
++ uint64_t s_free_blocks_count;
++
++ uint64_t s_ctime;
++
++ uint64_t s_mtime;
++ uint64_t s_wtime;
++ uint16_t s_mnt_count;
++ uint16_t s_max_mnt_count;
++ uint16_t s_state;
++ uint16_t s_errors;
++ uint64_t s_lastcheck;
++
++ uint32_t s_checkinterval;
++ uint32_t s_creator_os;
++ uint16_t s_def_resuid;
++ uint16_t s_def_resgid;
++ uint32_t s_first_ino;
++
++ uint16_t s_inode_size;
++ uint16_t s_dat_entry_size;
++ uint16_t s_checkpoint_size;
++ uint16_t s_segment_usage_size;
++
++ uint8_t s_uuid[16];
++ char s_volume_name[80];
++
++ uint32_t s_c_interval;
++ uint32_t s_c_block_max;
++ uint32_t s_reserved[192];
++};
++
++/* nilfs2 magic string */
++#define NILFS_SB_MAGIC "\x34\x34"
++/* nilfs2 super block offset */
++#define NILFS_SB_OFF 0x400
++/* nilfs2 super block offset in kB */
++#define NILFS_SB_KBOFF (NILFS_SB_OFF >> 10)
++/* nilfs2 magic string offset within super block */
++#define NILFS_MAG_OFF 6
++
++static int probe_nilfs2(blkid_probe pr, const struct blkid_idmag *mag)
++{
++ struct nilfs_super_block *sb;
++ static unsigned char sum[4];
++ const int sumoff = offsetof(struct nilfs_super_block, s_sum);
++ size_t bytes;
++ uint32_t crc;
++
++ sb = blkid_probe_get_sb(pr, mag, struct nilfs_super_block);
++ if (!sb)
++ return -1;
++
++ bytes = le32_to_cpu(sb->s_bytes);
++ crc = crc32(le32_to_cpu(sb->s_crc_seed), (unsigned char *)sb, sumoff);
++ crc = crc32(crc, sum, 4);
++ crc = crc32(crc, (unsigned char *)sb + sumoff + 4, bytes - sumoff - 4);
++
++ if (crc != le32_to_cpu(sb->s_sum))
++ return -1;
++
++ if (strlen(sb->s_volume_name))
++ blkid_probe_set_label(pr, (unsigned char *) sb->s_volume_name,
++ sizeof(sb->s_volume_name));
++
++ blkid_probe_set_uuid(pr, sb->s_uuid);
++ blkid_probe_sprintf_version(pr, "%u", le32_to_cpu(sb->s_rev_level));
++
++ return 0;
++}
++
++const struct blkid_idinfo nilfs2_idinfo =
++{
++ .name = "nilfs",
++ .usage = BLKID_USAGE_FILESYSTEM,
++ .probefunc = probe_nilfs2,
++ .magics =
++ {
++ {
++ .magic = NILFS_SB_MAGIC,
++ .len = 2,
++ .kboff = NILFS_SB_KBOFF,
++ .sboff = NILFS_MAG_OFF
++ },
++ { NULL }
++ }
++};
+diff --git a/shlibs/blkid/src/superblocks/superblocks.c b/shlibs/blkid/src/superblocks/superblocks.c
+index b80c10b..3d66d98 100644
+--- a/shlibs/blkid/src/superblocks/superblocks.c
++++ b/shlibs/blkid/src/superblocks/superblocks.c
+@@ -140,6 +140,7 @@ static const struct blkid_idinfo *idinfos[] =
+ &bfs_idinfo,
+ &vmfs_fs_idinfo,
+ &befs_idinfo,
++ &nilfs2_idinfo,
+ &exfat_idinfo
+ };
+
+diff --git a/shlibs/blkid/src/superblocks/superblocks.h b/shlibs/blkid/src/superblocks/superblocks.h
+index 74cb974..a79d7cb 100644
+--- a/shlibs/blkid/src/superblocks/superblocks.h
++++ b/shlibs/blkid/src/superblocks/superblocks.h
+@@ -65,6 +65,7 @@ extern const struct blkid_idinfo vmfs_volume_idinfo;
+ extern const struct blkid_idinfo vmfs_fs_idinfo;
+ extern const struct blkid_idinfo drbd_idinfo;
+ extern const struct blkid_idinfo befs_idinfo;
++extern const struct blkid_idinfo nilfs2_idinfo;
+ extern const struct blkid_idinfo exfat_idinfo;
+
+ /*
+--
+1.7.2.1
+From 67bb0074eec2b154d15bd3dd77b482c3d6125761 Mon Sep 17 00:00:00 2001
+From: Jiro SEKIBA <jir@unicus.jp>
+Date: Tue, 13 Jul 2010 09:14:08 +0200
+Subject: [PATCH] tests: add nilfs2 test for libblkid
+
+Signed-off-by: Jiro SEKIBA <jir@unicus.jp>
+Signed-off-by: Karel Zak <kzak@redhat.com>
+---
+ tests/expected/blkid/low-probe-nilfs2 | 7 +++++++
+ tests/ts/blkid/images-fs/nilfs2.img.bz2 | Bin 0 -> 795 bytes
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+ create mode 100644 tests/expected/blkid/low-probe-nilfs2
+ create mode 100644 tests/ts/blkid/images-fs/nilfs2.img.bz2
+
+diff --git a/tests/expected/blkid/low-probe-nilfs2 b/tests/expected/blkid/low-probe-nilfs2
+new file mode 100644
+index 0000000..bfd8fcd
+--- /dev/null
++++ b/tests/expected/blkid/low-probe-nilfs2
+@@ -0,0 +1,7 @@
++ID_FS_LABEL=test-nilfs2
++ID_FS_LABEL_ENC=test-nilfs2
++ID_FS_TYPE=nilfs
++ID_FS_USAGE=filesystem
++ID_FS_UUID=524025fb-6d31-40e6-baad-1db36cfdf806
++ID_FS_UUID_ENC=524025fb-6d31-40e6-baad-1db36cfdf806
++ID_FS_VERSION=2
+diff --git a/tests/ts/blkid/images-fs/nilfs2.img.bz2 b/tests/ts/blkid/images-fs/nilfs2.img.bz2
+new file mode 100644
+index 0000000000000000000000000000000000000000..a9762eb1ace9f1999aaad3c40f1d836668d856ac
+GIT binary patch
+literal 795
+zcmZ>Y%CIzaj8qGbG`Ml9n}H$iKM?$BcJi+ANKl`nz?|O0@_@lbK*y;^z=e@R;iM8v
+z^#R6D2YV7HdVE!LUvc5DPv^n~3?@drY>Er`xpEzs%?rp}D3rOt`HEDABm)D32?GP;
+z0!EREipv^IOn^)V240{j^Q<Hzqs++;Mp8zSMhpyWZZoCW1WqjeK1)#Iz#6seeHv~(
+zmxJ_T@69=2^IA3QjKnD|>vorkjN+>MH*4-%s37X<)*F#v)Rf{P;KEe-N=h(9AxK5r
+zNaB>=<>ixS2R?swwRU~FskVY@0E2@ILyiK&T}MB??Mn}*D~htZ3cdTZRH0!*OIOhp
+zuF1Yi0SZB_TmsB4k61&aUN!_Ugm_J068*5`gF*w#0teARmnpo_kuT2~GOf!|DtB62
+z!)T++5$eFKB*GXf;<I9F!NQM?v;8`}*7b6px{&k4S4E)bP}5GYFDbo;*GrVLFkN9@
+z@@Z9sSb~JGco?eycMA(Q^Ph&Ju|ft>1p%^G=UuLqkPtM9ycck)X|u7g*QFMo>QK!;
+zURQKH*iWxuZsIwzh@rOT!@1{s7L*D22$pQI7i2k@S1M-~SA2Zm@7XFsJ@fXR;7eg<
+zQ4&<W_Vc7f@7p(fvkiM$nYo*^O$-78_-wK~RVMkbV1D8JQ`OC<q49;V$o`^l=O3L4
+zcH6Z3#E!YsGG`s)RMF~EOO1d3>aY{zarw_8qLWfhCp?&^`$6=_69yh&WHm7`bFf@V
+z(PE04u!6IgDET?h6*ny4n=k(V{?{W7DhkUTSQr9X7>p_oxG=CVFtI2!vN$jZD6(v3
+z;O=l+m1w{)gHeLB;X+0N+bk2QBw&h}z@#bCHj{nH7h4xLj+2u!PE3DPVsFhCSH8Sp
+zT}DV?fa{Ns2bOWHVhs!t%xc}wps|W$-`>x&rn$fKjBA>})U}{HMs?HV9M&t-a)KVS
+zYg}FWIQh_-FYD!hutchUy`86XxmogM<nBjObNPCsG{5_M%3n}$Xkh3NkUdt<dS{}a
+Lh>ElVLy7|cD)2Ck
+
+literal 0
+HcmV?d00001
+
+--
+1.7.2.1
+From 1326e1dfa5c1d06ff7521b8c8162452799164239 Mon Sep 17 00:00:00 2001
+From: Jiro SEKIBA <jir@unicus.jp>
+Date: Thu, 15 Jul 2010 13:40:27 +0900
+Subject: [PATCH] libblkid: fix typo filesystem name nilfs to nilfs2
+
+The correct filesystem name is nilfs2, not nilfs.
+
+Signed-off-by: Jiro SEKIBA <jir@unicus.jp>
+---
+ shlibs/blkid/src/superblocks/nilfs.c | 2 +-
+ tests/expected/blkid/low-probe-nilfs2 | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/shlibs/blkid/src/superblocks/nilfs.c b/shlibs/blkid/src/superblocks/nilfs.c
+index c7aba35..bf16918 100644
+--- a/shlibs/blkid/src/superblocks/nilfs.c
++++ b/shlibs/blkid/src/superblocks/nilfs.c
+@@ -104,7 +104,7 @@ static int probe_nilfs2(blkid_probe pr, const struct blkid_idmag *mag)
+
+ const struct blkid_idinfo nilfs2_idinfo =
+ {
+- .name = "nilfs",
++ .name = "nilfs2",
+ .usage = BLKID_USAGE_FILESYSTEM,
+ .probefunc = probe_nilfs2,
+ .magics =
+diff --git a/tests/expected/blkid/low-probe-nilfs2 b/tests/expected/blkid/low-probe-nilfs2
+index bfd8fcd..c6c9cab 100644
+--- a/tests/expected/blkid/low-probe-nilfs2
++++ b/tests/expected/blkid/low-probe-nilfs2
+@@ -1,6 +1,6 @@
+ ID_FS_LABEL=test-nilfs2
+ ID_FS_LABEL_ENC=test-nilfs2
+-ID_FS_TYPE=nilfs
++ID_FS_TYPE=nilfs2
+ ID_FS_USAGE=filesystem
+ ID_FS_UUID=524025fb-6d31-40e6-baad-1db36cfdf806
+ ID_FS_UUID_ENC=524025fb-6d31-40e6-baad-1db36cfdf806
+--
+1.7.2.1
+