* [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.