All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] export all supported filesystems
@ 2005-11-10 10:53 Hannes Reinecke
  0 siblings, 0 replies; only message in thread
From: Hannes Reinecke @ 2005-11-10 10:53 UTC (permalink / raw)
  To: linux-hotplug

[-- Attachment #1: Type: text/plain, Size: 305 bytes --]

Hi Kay,

as we now have a libvolume_id it might actually be a good idea to tell
others which filesystems we support, no?

Cheers,

Hannes
-- 
Dr. Hannes Reinecke			hare@suse.de
SuSE Linux Products GmbH		S390 & zSeries
Maxfeldstraße 5				+49 911 74053 688
90409 Nürnberg				http://www.suse.de

[-- Attachment #2: udev-volume_id-fs-list.patch --]
[-- Type: text/x-patch, Size: 11084 bytes --]

diff --git a/extras/volume_id/libvolume_id/cramfs.c b/extras/volume_id/libvolume_id/cramfs.c
--- a/extras/volume_id/libvolume_id/cramfs.c
+++ b/extras/volume_id/libvolume_id/cramfs.c
@@ -42,6 +42,10 @@ struct cramfs_super {
 	uint8_t		name[16];
 } __attribute__((__packed__));
 
+char *volume_id_types_cramfs[] = {
+    "cramfs"
+};
+
 int volume_id_probe_cramfs(struct volume_id *id, uint64_t off)
 {
 	struct cramfs_super *cs;
diff --git a/extras/volume_id/libvolume_id/ext.c b/extras/volume_id/libvolume_id/ext.c
--- a/extras/volume_id/libvolume_id/ext.c
+++ b/extras/volume_id/libvolume_id/ext.c
@@ -71,6 +71,10 @@ struct ext2_super_block {
 #define EXT3_MIN_BLOCK_SIZE			0x400
 #define EXT3_MAX_BLOCK_SIZE			0x1000
 
+char *volume_id_types_ext[] = {
+    "ext2", "ext3", "jbd"
+};
+
 int volume_id_probe_ext(struct volume_id *id, uint64_t off)
 {
 	struct ext2_super_block *es;
diff --git a/extras/volume_id/libvolume_id/fat.c b/extras/volume_id/libvolume_id/fat.c
--- a/extras/volume_id/libvolume_id/fat.c
+++ b/extras/volume_id/libvolume_id/fat.c
@@ -125,6 +125,10 @@ static uint8_t *get_attr_volume_id(struc
 	return NULL;
 }
 
+char *volume_id_types_vfat[] = {
+    "vfat"
+};
+
 int volume_id_probe_vfat(struct volume_id *id, uint64_t off)
 {
 	struct vfat_super_block *vs;
diff --git a/extras/volume_id/libvolume_id/hfs.c b/extras/volume_id/libvolume_id/hfs.c
--- a/extras/volume_id/libvolume_id/hfs.c
+++ b/extras/volume_id/libvolume_id/hfs.c
@@ -138,6 +138,10 @@ struct hfsplus_vol_header {
 #define HFS_NODE_LEAF			0xff
 #define HFSPLUS_POR_CNID		1
 
+char *volume_id_types_hfs_hfsplus[] = {
+    "hfs", "hfsplus"
+};
+
 int volume_id_probe_hfs_hfsplus(struct volume_id *id, uint64_t off)
 {
 	unsigned int blocksize;
diff --git a/extras/volume_id/libvolume_id/highpoint.c b/extras/volume_id/libvolume_id/highpoint.c
diff --git a/extras/volume_id/libvolume_id/hpfs.c b/extras/volume_id/libvolume_id/hpfs.c
--- a/extras/volume_id/libvolume_id/hpfs.c
+++ b/extras/volume_id/libvolume_id/hpfs.c
@@ -35,6 +35,10 @@ struct hpfs_super
 
 #define HPFS_SUPERBLOCK_OFFSET			0x2000
 
+char *volume_id_types_hpfs[] = {
+    "hpfs"
+};
+
 int volume_id_probe_hpfs(struct volume_id *id, uint64_t off)
 {
 	struct hpfs_super *hs;
diff --git a/extras/volume_id/libvolume_id/iso9660.c b/extras/volume_id/libvolume_id/iso9660.c
--- a/extras/volume_id/libvolume_id/iso9660.c
+++ b/extras/volume_id/libvolume_id/iso9660.c
@@ -54,6 +54,10 @@ struct high_sierra_volume_descriptor {
 	uint8_t		version;
 } __attribute__((__packed__));
 
+char *volume_id_types_iso9660[] = {
+    "iso9660"
+};
+
 int volume_id_probe_iso9660(struct volume_id *id, uint64_t off)
 {
 	uint8_t *buf;
diff --git a/extras/volume_id/libvolume_id/isw_raid.c b/extras/volume_id/libvolume_id/isw_raid.c
diff --git a/extras/volume_id/libvolume_id/jfs.c b/extras/volume_id/libvolume_id/jfs.c
--- a/extras/volume_id/libvolume_id/jfs.c
+++ b/extras/volume_id/libvolume_id/jfs.c
@@ -42,6 +42,10 @@ struct jfs_super_block {
 
 #define JFS_SUPERBLOCK_OFFSET			0x8000
 
+char *volume_id_types_jfs[] = {
+    "jfs"
+};
+
 int volume_id_probe_jfs(struct volume_id *id, uint64_t off)
 {
 	struct jfs_super_block *js;
diff --git a/extras/volume_id/libvolume_id/minix.c b/extras/volume_id/libvolume_id/minix.c
--- a/extras/volume_id/libvolume_id/minix.c
+++ b/extras/volume_id/libvolume_id/minix.c
@@ -43,6 +43,10 @@ struct minix_super_block
 
 #define MINIX_SUPERBLOCK_OFFSET			0x400
 
+char *volume_id_types_minix[] = {
+    "minix"
+};
+
 int volume_id_probe_minix(struct volume_id *id, uint64_t off)
 {
 	struct minix_super_block *ms;
diff --git a/extras/volume_id/libvolume_id/ntfs.c b/extras/volume_id/libvolume_id/ntfs.c
--- a/extras/volume_id/libvolume_id/ntfs.c
+++ b/extras/volume_id/libvolume_id/ntfs.c
@@ -91,6 +91,10 @@ struct volume_info {
 #define MFT_RECORD_ATTR_OBJECT_ID		0x40
 #define MFT_RECORD_ATTR_END			0xffffffffu
 
+char *volume_id_types_ntfs[] = {
+    "ntfs"
+};
+
 int volume_id_probe_ntfs(struct volume_id *id, uint64_t off)
 {
 	unsigned int sector_size;
diff --git a/extras/volume_id/libvolume_id/ocfs.c b/extras/volume_id/libvolume_id/ocfs.c
--- a/extras/volume_id/libvolume_id/ocfs.c
+++ b/extras/volume_id/libvolume_id/ocfs.c
@@ -127,6 +127,14 @@ struct ocfs2_super_block {
 	uint8_t		s_uuid[16];
 } __attribute__((__packed__));
 
+char *volume_id_types_ocfs1[] = {
+    "ocfs"
+};
+
+char *volume_id_types_ocfs2[] = {
+    "ocfs2"
+};
+
 int volume_id_probe_ocfs1(struct volume_id *id, uint64_t off)
 {
 	const uint8_t *buf;
diff --git a/extras/volume_id/libvolume_id/reiserfs.c b/extras/volume_id/libvolume_id/reiserfs.c
--- a/extras/volume_id/libvolume_id/reiserfs.c
+++ b/extras/volume_id/libvolume_id/reiserfs.c
@@ -55,6 +55,10 @@ struct reiser4_super_block {
 #define REISERFS1_SUPERBLOCK_OFFSET		0x2000
 #define REISERFS_SUPERBLOCK_OFFSET		0x10000
 
+char *volume_id_types_reiserfs[] = {
+    "reiserfs", "reiser4",
+};
+
 int volume_id_probe_reiserfs(struct volume_id *id, uint64_t off)
 {
 	struct reiserfs_super_block *rs;
diff --git a/extras/volume_id/libvolume_id/romfs.c b/extras/volume_id/libvolume_id/romfs.c
--- a/extras/volume_id/libvolume_id/romfs.c
+++ b/extras/volume_id/libvolume_id/romfs.c
@@ -34,6 +34,10 @@ struct romfs_super {
 	uint8_t name[0];
 } __attribute__((__packed__));
 
+char *volume_id_types_romfs[] = {
+    "romfs"
+};
+
 int volume_id_probe_romfs(struct volume_id *id, uint64_t off)
 {
 	struct romfs_super *rfs;
diff --git a/extras/volume_id/libvolume_id/sysv.c b/extras/volume_id/libvolume_id/sysv.c
--- a/extras/volume_id/libvolume_id/sysv.c
+++ b/extras/volume_id/libvolume_id/sysv.c
@@ -90,6 +90,10 @@ struct xenix_super {
 #define XENIX_MAGIC				0x2b5544
 #define SYSV_MAX_BLOCKSIZE			0x800
 
+char *volume_id_types_sysv[] = {
+    "xenix", "sysv",
+};
+
 int volume_id_probe_sysv(struct volume_id *id, uint64_t off)
 {
 	struct sysv_super *vs;
diff --git a/extras/volume_id/libvolume_id/udf.c b/extras/volume_id/libvolume_id/udf.c
--- a/extras/volume_id/libvolume_id/udf.c
+++ b/extras/volume_id/libvolume_id/udf.c
@@ -62,6 +62,10 @@ struct volume_structure_descriptor {
 
 #define UDF_VSD_OFFSET			0x8000
 
+char *volume_id_types_udf[] = {
+    "udf"
+};
+
 int volume_id_probe_udf(struct volume_id *id, uint64_t off)
 {
 	struct volume_descriptor *vd;
diff --git a/extras/volume_id/libvolume_id/ufs.c b/extras/volume_id/libvolume_id/ufs.c
--- a/extras/volume_id/libvolume_id/ufs.c
+++ b/extras/volume_id/libvolume_id/ufs.c
@@ -169,6 +169,10 @@ struct ufs_super_block {
 #define UFS_MAGIC_FEA			0x00195612
 #define UFS_MAGIC_LFN			0x00095014
 
+char *volume_id_types_ufs[] = {
+    "ufs"
+};
+
 int volume_id_probe_ufs(struct volume_id *id, uint64_t off)
 {
 	uint32_t magic;
diff --git a/extras/volume_id/libvolume_id/volume_id.c b/extras/volume_id/libvolume_id/volume_id.c
--- a/extras/volume_id/libvolume_id/volume_id.c
+++ b/extras/volume_id/libvolume_id/volume_id.c
@@ -30,7 +30,6 @@
 #include "logging.h"
 #include "util.h"
 
-
 int volume_id_probe_all(struct volume_id *id, uint64_t off, uint64_t size)
 {
 	if (id == NULL)
diff --git a/extras/volume_id/libvolume_id/volume_id.h b/extras/volume_id/libvolume_id/volume_id.h
--- a/extras/volume_id/libvolume_id/volume_id.h
+++ b/extras/volume_id/libvolume_id/volume_id.h
@@ -69,27 +69,68 @@ extern struct volume_id *volume_id_open_
 extern struct volume_id *volume_id_open_node(const char *path);
 extern int volume_id_probe_all(struct volume_id *id, uint64_t off, uint64_t size);
 extern void volume_id_close(struct volume_id *id);
+extern int volume_id_known_fstype(const char *type);
 
 /* filesystems */
+extern char *volume_id_types_cramfs[];
 extern int volume_id_probe_cramfs(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_ext[];
 extern int volume_id_probe_ext(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_vfat[];
 extern int volume_id_probe_vfat(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_hfs_hfsplus[];
 extern int volume_id_probe_hfs_hfsplus(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_hpfs[];
 extern int volume_id_probe_hpfs(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_iso9660[];
 extern int volume_id_probe_iso9660(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_jfs[];
 extern int volume_id_probe_jfs(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_minix[];
 extern int volume_id_probe_minix(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_ntfs[];
 extern int volume_id_probe_ntfs(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_ocfs1[];
 extern int volume_id_probe_ocfs1(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_ocfs2[];
 extern int volume_id_probe_ocfs2(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_reiserfs[];
 extern int volume_id_probe_reiserfs(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_romfs[];
 extern int volume_id_probe_romfs(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_sysv[];
 extern int volume_id_probe_sysv(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_udf[];
 extern int volume_id_probe_udf(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_ufs[];
 extern int volume_id_probe_ufs(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_vxfs[];
 extern int volume_id_probe_vxfs(struct volume_id *id, uint64_t off);
+extern char *volume_id_probe_xfs[];
 extern int volume_id_probe_xfs(struct volume_id *id, uint64_t off);
 
+char *volume_id_fs_list[] = {
+	volume_id_types_vfat,
+	volume_id_types_xfs,
+	volume_id_types_linux_swap,
+	volume_id_types_ext,
+	volume_id_types_reiserfs,
+	volume_id_types_jfs,
+	volume_id_types_udf,
+	volume_id_types_iso9660,
+	volume_id_types_hfs_hfsplus,
+	volume_id_types_ufs,
+	volume_id_types_ntfs,
+	volume_id_types_cramfs,
+	volume_id_types_romfs,
+	volume_id_types_hpfs,
+	volume_id_types_sysv,
+	volume_id_types_minix,
+	volume_id_types_ocfs1,
+	volume_id_types_ocfs2,
+	volume_id_types_vxfs,
+};
+
 /* special formats */
 extern int volume_id_probe_linux_swap(struct volume_id *id, uint64_t off);
 extern int volume_id_probe_luks(struct volume_id *id, uint64_t off);
diff --git a/extras/volume_id/libvolume_id/vxfs.c b/extras/volume_id/libvolume_id/vxfs.c
--- a/extras/volume_id/libvolume_id/vxfs.c
+++ b/extras/volume_id/libvolume_id/vxfs.c
@@ -34,6 +34,10 @@ struct vxfs_super {
 	int32_t			vs_version;
 } __attribute__((__packed__));
 
+char *volume_id_types_vxfs[] = {
+    "vxfs"
+};
+
 int volume_id_probe_vxfs(struct volume_id *id, uint64_t off)
 {
 	struct vxfs_super *vxs;
diff --git a/extras/volume_id/libvolume_id/xfs.c b/extras/volume_id/libvolume_id/xfs.c
--- a/extras/volume_id/libvolume_id/xfs.c
+++ b/extras/volume_id/libvolume_id/xfs.c
@@ -42,6 +42,10 @@ struct xfs_super_block {
 	uint64_t	fdblocks;
 } __attribute__((__packed__));
 
+char *volume_id_types_xfs[] = {
+    "xfs"
+};
+
 int volume_id_probe_xfs(struct volume_id *id, uint64_t off)
 {
 	struct xfs_super_block *xs;

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-11-10 10:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-10 10:53 [PATCH] export all supported filesystems Hannes Reinecke

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.