linux-hotplug.vger.kernel.org archive mirror
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).