From: Hannes Reinecke <hare@suse.de>
To: linux-hotplug@vger.kernel.org
Subject: [PATCH] export all supported filesystems
Date: Thu, 10 Nov 2005 10:53:17 +0000 [thread overview]
Message-ID: <4373269D.3090608@suse.de> (raw)
[-- 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;
reply other threads:[~2005-11-10 10:53 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4373269D.3090608@suse.de \
--to=hare@suse.de \
--cc=linux-hotplug@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).