From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hannes Reinecke Date: Thu, 10 Nov 2005 10:53:17 +0000 Subject: [PATCH] export all supported filesystems Message-Id: <4373269D.3090608@suse.de> MIME-Version: 1 Content-Type: multipart/mixed; boundary="------------020504070908050805080906" List-Id: To: linux-hotplug@vger.kernel.org This is a multi-part message in MIME format. --------------020504070908050805080906 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable 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 --=20 Dr. Hannes Reinecke hare@suse.de SuSE Linux Products GmbH S390 & zSeries Maxfeldstra=DFe 5 +49 911 74053 688 90409 N=FCrnberg http://www.suse.de --------------020504070908050805080906 Content-Type: text/x-patch; name="udev-volume_id-fs-list.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="udev-volume_id-fs-list.patch" 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; --------------020504070908050805080906-- ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel