[Ocfs2-devel] [PATCH] Adding ocfs support to blkid
Mark Fasheh
mark.fasheh at oracle.com
Wed Feb 4 10:59:52 CST 2004
Could we call it "ocfs" instead of "ocfs2" below? We will likely be bumping
up the version number in the header for ocfs version 2 when it's released.
--Mark
On Wed, Feb 04, 2004 at 12:38:12AM -0800, Rusty Lynch wrote:
> The following patch adds ocfs support to blkid.
>
> --rusty
>
> # This is a BitKeeper generated patch for the following project:
> # Project Name: Ext2 filesystem utilities
> # This patch format is intended for GNU patch command version 2.5 or higher.
> # This patch includes the following deltas:
> # ChangeSet 1.1327 -> 1.1328
> # lib/blkid/probe.c 1.15 -> 1.16
> # lib/blkid/probe.h 1.9 -> 1.10
> #
> # The following is the BitKeeper ChangeSet Log
> # --------------------------------------------
> # 04/02/03 rusty at stratocaster.com 1.1328
> # Adding support for the Oracle Cluster File System (ocfs)
> # --------------------------------------------
> #
> diff -Nru a/lib/blkid/probe.c b/lib/blkid/probe.c
> --- a/lib/blkid/probe.c Wed Feb 4 00:21:03 2004
> +++ b/lib/blkid/probe.c Wed Feb 4 00:21:03 2004
> @@ -312,6 +312,36 @@
> return 1;
> }
>
> +static int probe_ocfs(int fd __BLKID_ATTR((unused)),
> + blkid_cache cache __BLKID_ATTR((unused)),
> + blkid_dev dev,
> + struct blkid_magic *id __BLKID_ATTR((unused)),
> + unsigned char *buf)
> +{
> + struct ocfs_volume_header ovh;
> + struct ocfs_volume_label ovl;
> +
> + if (lseek(fd, 0, SEEK_SET) != 0)
> + return -1;
> +
> + if (read(fd, (char *) &ovh, sizeof(ovh)) != sizeof(ovh))
> + return -1;
> +
> + if (strncmp(ovh.signature, OCFS_MAGIC, sizeof(OCFS_MAGIC)) != 0)
> + return -1;
> +
> + if (lseek(fd, 512, SEEK_SET) != 512)
> + return -1;
> +
> + if (read(fd, (char *) &ovl, sizeof(ovl)) != sizeof(ovl))
> + return -1;
> +
> + blkid_set_tag(dev, "LABEL", ovl.label, ocfslabellen(ovl));
> + blkid_set_tag(dev, "MOUNT", ovh.mount, ocfsmountlen(ovh));
> + set_uuid(dev, ovl.vol_id);
> + return 0;
> +}
> +
> /*
> * BLKID_BLK_OFFS is at least as large as the highest bim_kboff defined
> * in the type_array table below + bim_kbalign.
> @@ -371,6 +401,7 @@
> { "swap", 0, 0x1ff6, 10, "SWAPSPACE2", 0 },
> { "swap", 0, 0x3ff6, 10, "SWAP-SPACE", 0 },
> { "swap", 0, 0x3ff6, 10, "SWAPSPACE2", 0 },
> + { "ocfs2", 0, 8, 9, "OracleCFS", probe_ocfs },
> { NULL, 0, 0, 0, NULL, NULL }
> };
>
> diff -Nru a/lib/blkid/probe.h b/lib/blkid/probe.h
> --- a/lib/blkid/probe.h Wed Feb 4 00:21:03 2004
> +++ b/lib/blkid/probe.h Wed Feb 4 00:21:03 2004
> @@ -209,6 +209,27 @@
> __u32 h_blksize;
> };
>
> +struct ocfs_volume_header {
> + u_char minor_version[4];
> + u_char major_version[4];
> + u_char signature[128];
> + u_char mount[128];
> + u_char mount_len[2];
> +};
> +
> +struct ocfs_volume_label {
> + u_char disk_lock[48];
> + u_char label[64];
> + u_char label_len[2];
> + u_char vol_id[16];
> + u_char vol_id_len[2];
> +};
> +
> +#define ocfslabellen(o) ((uint)o.label_len[0] + (((uint) o.label_len[1]) << 8))
> +#define ocfsmountlen(o) ((uint)o.mount_len[0] + (((uint) o.mount_len[1])<<8))
> +
> +#define OCFS_MAGIC "OracleCFS"
> +
> #define ISODCL(from, to) (to - from + 1)
> struct iso_volume_descriptor {
> char type[ISODCL(1,1)]; /* 711 */
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> http://oss.oracle.com/mailman/listinfo/ocfs2-devel
--
Mark Fasheh
Software Developer, Oracle Corp
mark.fasheh at oracle.com
More information about the Ocfs2-devel
mailing list