From: Mark Fasheh <mark.fasheh@oracle.com>
To: The development of GRUB 2 <grub-devel@gnu.org>
Subject: Re: OCFS2 support
Date: Thu, 3 Nov 2005 17:17:14 -0800 [thread overview]
Message-ID: <20051104011714.GE28731@ca-server1.us.oracle.com> (raw)
In-Reply-To: <20051104011349.GD28731@ca-server1.us.oracle.com>
On Thu, Nov 03, 2005 at 05:13:49PM -0800, Mark Fasheh wrote:
> Ok. Attached is an updated patch.
Oops. That last patch was no good. A better one is attached. Sorry about
that!
--Mark
--
Mark Fasheh
Senior Software Developer, Oracle
mark.fasheh@oracle.com
diff -uprN --exclude='*~' --exclude=CVS --exclude=configure ../tmp/grub2/ChangeLog ./ChangeLog
--- ../tmp/grub2/ChangeLog 2005-10-27 20:14:31.000000000 -0700
+++ ./ChangeLog 2005-11-03 12:17:20.737439000 -0800
@@ -1,3 +1,32 @@
+2005-11-03 Mark Fasheh <mark.fasheh@oracle.com>
+
+ Adds support for the OCFS2 filesystem.
+
+ * fs/ocfs2.c: New file.
+
+ * DISTLIST: Added `fs/ocfs2.c'.
+
+ * conf/i386-pc.rmk (grub_setup_SOURCES): Add `fs/ocfs2.c'.
+ (grub_probefs_SOURCES): Likewise.
+ (grub_emu_SOURCES): Likewise.
+ (pkgdata_MODULES): Add `ocfs2.mod'.
+ (ocfs2_mod_SOURCES): New variable.
+ (ocfs2_mod_CFLAGS): Likewise.
+
+ * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add `fs/ocfs2.c'.
+ (pkgdata_MODULES): Add `ocfs2.mod'.
+ (ocfs2_mod_SOURCES): New variable.
+ (ocfs2_mod_CFLAGS): Likewise.
+
+ * util/grub-emu.c (main): Call `grub_ocfs2_init' and
+ `grub_ocfs2_fini'.
+
+ * include/grub/fs.h (grub_ocfs2_init): New prototype.
+ (grub_ocfs2_fini): Likewise.
+
+ * util/i386/pc/grub-probefs.c Call grub_ocfs2_init and
+ grub_ocfs2_fini.
+
2005-10-28 Yoshinori K. Okuji <okuji@enbug.org>
From Timothy Baldwin:
diff -uprN --exclude='*~' --exclude=CVS --exclude=configure ../tmp/grub2/conf/i386-pc.mk ./conf/i386-pc.mk
--- ../tmp/grub2/conf/i386-pc.mk 2005-10-24 03:23:46.000000000 -0700
+++ ./conf/i386-pc.mk 2005-11-03 14:03:06.344760000 -0800
@@ -322,11 +322,11 @@ grub_setup_SOURCES = util/i386/pc/grub-s
util/misc.c util/i386/pc/getroot.c kern/device.c kern/disk.c \
kern/err.c kern/misc.c fs/fat.c fs/ext2.c fs/xfs.c fs/affs.c \
fs/sfs.c kern/parser.c kern/partition.c partmap/pc.c \
- fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c kern/file.c kern/fs.c kern/env.c fs/fshelp.c
-CLEANFILES += grub-setup grub_setup-util_i386_pc_grub_setup.o grub_setup-util_i386_pc_biosdisk.o grub_setup-util_misc.o grub_setup-util_i386_pc_getroot.o grub_setup-kern_device.o grub_setup-kern_disk.o grub_setup-kern_err.o grub_setup-kern_misc.o grub_setup-fs_fat.o grub_setup-fs_ext2.o grub_setup-fs_xfs.o grub_setup-fs_affs.o grub_setup-fs_sfs.o grub_setup-kern_parser.o grub_setup-kern_partition.o grub_setup-partmap_pc.o grub_setup-fs_ufs.o grub_setup-fs_minix.o grub_setup-fs_hfs.o grub_setup-fs_jfs.o grub_setup-kern_file.o grub_setup-kern_fs.o grub_setup-kern_env.o grub_setup-fs_fshelp.o
-MOSTLYCLEANFILES += grub_setup-util_i386_pc_grub_setup.d grub_setup-util_i386_pc_biosdisk.d grub_setup-util_misc.d grub_setup-util_i386_pc_getroot.d grub_setup-kern_device.d grub_setup-kern_disk.d grub_setup-kern_err.d grub_setup-kern_misc.d grub_setup-fs_fat.d grub_setup-fs_ext2.d grub_setup-fs_xfs.d grub_setup-fs_affs.d grub_setup-fs_sfs.d grub_setup-kern_parser.d grub_setup-kern_partition.d grub_setup-partmap_pc.d grub_setup-fs_ufs.d grub_setup-fs_minix.d grub_setup-fs_hfs.d grub_setup-fs_jfs.d grub_setup-kern_file.d grub_setup-kern_fs.d grub_setup-kern_env.d grub_setup-fs_fshelp.d
+ fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c fs/ocfs2.c kern/file.c kern/fs.c kern/env.c fs/fshelp.c
+CLEANFILES += grub-setup grub_setup-util_i386_pc_grub_setup.o grub_setup-util_i386_pc_biosdisk.o grub_setup-util_misc.o grub_setup-util_i386_pc_getroot.o grub_setup-kern_device.o grub_setup-kern_disk.o grub_setup-kern_err.o grub_setup-kern_misc.o grub_setup-fs_fat.o grub_setup-fs_ext2.o grub_setup-fs_xfs.o grub_setup-fs_affs.o grub_setup-fs_sfs.o grub_setup-kern_parser.o grub_setup-kern_partition.o grub_setup-partmap_pc.o grub_setup-fs_ufs.o grub_setup-fs_minix.o grub_setup-fs_hfs.o grub_setup-fs_jfs.o grub_setup-fs_ocfs2.o grub_setup-kern_file.o grub_setup-kern_fs.o grub_setup-kern_env.o grub_setup-fs_fshelp.o
+MOSTLYCLEANFILES += grub_setup-util_i386_pc_grub_setup.d grub_setup-util_i386_pc_biosdisk.d grub_setup-util_misc.d grub_setup-util_i386_pc_getroot.d grub_setup-kern_device.d grub_setup-kern_disk.d grub_setup-kern_err.d grub_setup-kern_misc.d grub_setup-fs_fat.d grub_setup-fs_ext2.d grub_setup-fs_xfs.d grub_setup-fs_affs.d grub_setup-fs_sfs.d grub_setup-kern_parser.d grub_setup-kern_partition.d grub_setup-partmap_pc.d grub_setup-fs_ufs.d grub_setup-fs_minix.d grub_setup-fs_hfs.d grub_setup-fs_jfs.d grub_setup-fs_ocfs2.d grub_setup-kern_file.d grub_setup-kern_fs.d grub_setup-kern_env.d grub_setup-fs_fshelp.d
-grub-setup: grub_setup-util_i386_pc_grub_setup.o grub_setup-util_i386_pc_biosdisk.o grub_setup-util_misc.o grub_setup-util_i386_pc_getroot.o grub_setup-kern_device.o grub_setup-kern_disk.o grub_setup-kern_err.o grub_setup-kern_misc.o grub_setup-fs_fat.o grub_setup-fs_ext2.o grub_setup-fs_xfs.o grub_setup-fs_affs.o grub_setup-fs_sfs.o grub_setup-kern_parser.o grub_setup-kern_partition.o grub_setup-partmap_pc.o grub_setup-fs_ufs.o grub_setup-fs_minix.o grub_setup-fs_hfs.o grub_setup-fs_jfs.o grub_setup-kern_file.o grub_setup-kern_fs.o grub_setup-kern_env.o grub_setup-fs_fshelp.o
+grub-setup: grub_setup-util_i386_pc_grub_setup.o grub_setup-util_i386_pc_biosdisk.o grub_setup-util_misc.o grub_setup-util_i386_pc_getroot.o grub_setup-kern_device.o grub_setup-kern_disk.o grub_setup-kern_err.o grub_setup-kern_misc.o grub_setup-fs_fat.o grub_setup-fs_ext2.o grub_setup-fs_xfs.o grub_setup-fs_affs.o grub_setup-fs_sfs.o grub_setup-kern_parser.o grub_setup-kern_partition.o grub_setup-partmap_pc.o grub_setup-fs_ufs.o grub_setup-fs_minix.o grub_setup-fs_hfs.o grub_setup-fs_jfs.o grub_setup-fs_ocfs2.o grub_setup-kern_file.o grub_setup-kern_fs.o grub_setup-kern_env.o grub_setup-fs_fshelp.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(grub_setup_LDFLAGS)
grub_setup-util_i386_pc_grub_setup.o: util/i386/pc/grub-setup.c
@@ -489,6 +489,14 @@ grub_setup-fs_jfs.d: fs/jfs.c
-include grub_setup-fs_jfs.d
+grub_setup-fs_ocfs2.o: fs/ocfs2.c
+ $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
+
+grub_setup-fs_ocfs2.d: fs/ocfs2.c
+ set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -M $< | sed 's,ocfs2\.o[ :]*,grub_setup-fs_ocfs2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
+
+-include grub_setup-fs_ocfs2.d
+
grub_setup-kern_file.o: kern/file.c
$(BUILD_CC) -Ikern -I$(srcdir)/kern $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_setup_CFLAGS) -c -o $@ $<
@@ -553,11 +561,11 @@ grub_probefs_SOURCES = util/i386/pc/grub
kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \
fs/ext2.c kern/parser.c kern/partition.c partmap/pc.c fs/ufs.c \
fs/minix.c fs/hfs.c fs/jfs.c kern/fs.c kern/env.c fs/fshelp.c \
- fs/xfs.c fs/affs.c fs/sfs.c
-CLEANFILES += grub-probefs grub_probefs-util_i386_pc_grub_probefs.o grub_probefs-util_i386_pc_biosdisk.o grub_probefs-util_misc.o grub_probefs-util_i386_pc_getroot.o grub_probefs-kern_device.o grub_probefs-kern_disk.o grub_probefs-kern_err.o grub_probefs-kern_misc.o grub_probefs-fs_fat.o grub_probefs-fs_ext2.o grub_probefs-kern_parser.o grub_probefs-kern_partition.o grub_probefs-partmap_pc.o grub_probefs-fs_ufs.o grub_probefs-fs_minix.o grub_probefs-fs_hfs.o grub_probefs-fs_jfs.o grub_probefs-kern_fs.o grub_probefs-kern_env.o grub_probefs-fs_fshelp.o grub_probefs-fs_xfs.o grub_probefs-fs_affs.o grub_probefs-fs_sfs.o
-MOSTLYCLEANFILES += grub_probefs-util_i386_pc_grub_probefs.d grub_probefs-util_i386_pc_biosdisk.d grub_probefs-util_misc.d grub_probefs-util_i386_pc_getroot.d grub_probefs-kern_device.d grub_probefs-kern_disk.d grub_probefs-kern_err.d grub_probefs-kern_misc.d grub_probefs-fs_fat.d grub_probefs-fs_ext2.d grub_probefs-kern_parser.d grub_probefs-kern_partition.d grub_probefs-partmap_pc.d grub_probefs-fs_ufs.d grub_probefs-fs_minix.d grub_probefs-fs_hfs.d grub_probefs-fs_jfs.d grub_probefs-kern_fs.d grub_probefs-kern_env.d grub_probefs-fs_fshelp.d grub_probefs-fs_xfs.d grub_probefs-fs_affs.d grub_probefs-fs_sfs.d
+ fs/xfs.c fs/affs.c fs/sfs.c fs/ocfs2.c
+CLEANFILES += grub-probefs grub_probefs-util_i386_pc_grub_probefs.o grub_probefs-util_i386_pc_biosdisk.o grub_probefs-util_misc.o grub_probefs-util_i386_pc_getroot.o grub_probefs-kern_device.o grub_probefs-kern_disk.o grub_probefs-kern_err.o grub_probefs-kern_misc.o grub_probefs-fs_fat.o grub_probefs-fs_ext2.o grub_probefs-kern_parser.o grub_probefs-kern_partition.o grub_probefs-partmap_pc.o grub_probefs-fs_ufs.o grub_probefs-fs_minix.o grub_probefs-fs_hfs.o grub_probefs-fs_jfs.o grub_probefs-kern_fs.o grub_probefs-kern_env.o grub_probefs-fs_fshelp.o grub_probefs-fs_xfs.o grub_probefs-fs_affs.o grub_probefs-fs_sfs.o grub_probefs-fs_ocfs2.o
+MOSTLYCLEANFILES += grub_probefs-util_i386_pc_grub_probefs.d grub_probefs-util_i386_pc_biosdisk.d grub_probefs-util_misc.d grub_probefs-util_i386_pc_getroot.d grub_probefs-kern_device.d grub_probefs-kern_disk.d grub_probefs-kern_err.d grub_probefs-kern_misc.d grub_probefs-fs_fat.d grub_probefs-fs_ext2.d grub_probefs-kern_parser.d grub_probefs-kern_partition.d grub_probefs-partmap_pc.d grub_probefs-fs_ufs.d grub_probefs-fs_minix.d grub_probefs-fs_hfs.d grub_probefs-fs_jfs.d grub_probefs-kern_fs.d grub_probefs-kern_env.d grub_probefs-fs_fshelp.d grub_probefs-fs_xfs.d grub_probefs-fs_affs.d grub_probefs-fs_sfs.d grub_probefs-fs_ocfs2.d
-grub-probefs: grub_probefs-util_i386_pc_grub_probefs.o grub_probefs-util_i386_pc_biosdisk.o grub_probefs-util_misc.o grub_probefs-util_i386_pc_getroot.o grub_probefs-kern_device.o grub_probefs-kern_disk.o grub_probefs-kern_err.o grub_probefs-kern_misc.o grub_probefs-fs_fat.o grub_probefs-fs_ext2.o grub_probefs-kern_parser.o grub_probefs-kern_partition.o grub_probefs-partmap_pc.o grub_probefs-fs_ufs.o grub_probefs-fs_minix.o grub_probefs-fs_hfs.o grub_probefs-fs_jfs.o grub_probefs-kern_fs.o grub_probefs-kern_env.o grub_probefs-fs_fshelp.o grub_probefs-fs_xfs.o grub_probefs-fs_affs.o grub_probefs-fs_sfs.o
+grub-probefs: grub_probefs-util_i386_pc_grub_probefs.o grub_probefs-util_i386_pc_biosdisk.o grub_probefs-util_misc.o grub_probefs-util_i386_pc_getroot.o grub_probefs-kern_device.o grub_probefs-kern_disk.o grub_probefs-kern_err.o grub_probefs-kern_misc.o grub_probefs-fs_fat.o grub_probefs-fs_ext2.o grub_probefs-kern_parser.o grub_probefs-kern_partition.o grub_probefs-partmap_pc.o grub_probefs-fs_ufs.o grub_probefs-fs_minix.o grub_probefs-fs_hfs.o grub_probefs-fs_jfs.o grub_probefs-kern_fs.o grub_probefs-kern_env.o grub_probefs-fs_fshelp.o grub_probefs-fs_xfs.o grub_probefs-fs_affs.o grub_probefs-fs_sfs.o grub_probefs-fs_ocfs2.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(grub_probefs_LDFLAGS)
grub_probefs-util_i386_pc_grub_probefs.o: util/i386/pc/grub-probefs.c
@@ -744,6 +752,14 @@ grub_probefs-fs_sfs.d: fs/sfs.c
-include grub_probefs-fs_sfs.d
+grub_probefs-fs_ocfs2.o: fs/ocfs2.c
+ $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_probefs_CFLAGS) -c -o $@ $<
+
+grub_probefs-fs_ocfs2.d: fs/ocfs2.c
+ set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_probefs_CFLAGS) -M $< | sed 's,ocfs2\.o[ :]*,grub_probefs-fs_ocfs2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
+
+-include grub_probefs-fs_ocfs2.d
+
# For grub-emu.
grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c \
@@ -753,7 +769,7 @@ grub_emu_SOURCES = commands/boot.c comma
commands/i386/pc/halt.c commands/i386/pc/reboot.c \
disk/loopback.c \
fs/affs.c fs/ext2.c fs/fat.c fs/fshelp.c fs/hfs.c fs/iso9660.c \
- fs/jfs.c fs/minix.c fs/sfs.c fs/ufs.c fs/xfs.c \
+ fs/jfs.c fs/minix.c fs/sfs.c fs/ufs.c fs/xfs.c fs/ocfs2.c \
io/gzio.c \
kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c \
kern/file.c kern/fs.c kern/loader.c kern/main.c kern/misc.c \
@@ -765,10 +781,10 @@ grub_emu_SOURCES = commands/boot.c comma
util/console.c util/grub-emu.c util/misc.c \
util/i386/pc/biosdisk.c util/i386/pc/getroot.c \
util/i386/pc/misc.c
-CLEANFILES += grub-emu grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_search.o grub_emu-commands_timeout.o grub_emu-commands_i386_pc_halt.o grub_emu-commands_i386_pc_reboot.o grub_emu-disk_loopback.o grub_emu-fs_affs.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_sfs.o grub_emu-fs_ufs.o grub_emu-fs_xfs.o grub_emu-io_gzio.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_parser.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_completion.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-normal_misc.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_i386_pc_misc.o
-MOSTLYCLEANFILES += grub_emu-commands_boot.d grub_emu-commands_cat.d grub_emu-commands_cmp.d grub_emu-commands_configfile.d grub_emu-commands_default.d grub_emu-commands_help.d grub_emu-commands_terminal.d grub_emu-commands_ls.d grub_emu-commands_search.d grub_emu-commands_timeout.d grub_emu-commands_i386_pc_halt.d grub_emu-commands_i386_pc_reboot.d grub_emu-disk_loopback.d grub_emu-fs_affs.d grub_emu-fs_ext2.d grub_emu-fs_fat.d grub_emu-fs_fshelp.d grub_emu-fs_hfs.d grub_emu-fs_iso9660.d grub_emu-fs_jfs.d grub_emu-fs_minix.d grub_emu-fs_sfs.d grub_emu-fs_ufs.d grub_emu-fs_xfs.d grub_emu-io_gzio.d grub_emu-kern_device.d grub_emu-kern_disk.d grub_emu-kern_dl.d grub_emu-kern_env.d grub_emu-kern_err.d grub_emu-kern_file.d grub_emu-kern_fs.d grub_emu-kern_loader.d grub_emu-kern_main.d grub_emu-kern_misc.d grub_emu-kern_parser.d grub_emu-kern_partition.d grub_emu-kern_rescue.d grub_emu-kern_term.d grub_emu-normal_arg.d grub_emu-normal_cmdline.d grub_emu-normal_command.d grub_emu-normal_completion.d grub_emu-normal_context.d grub_emu-normal_main.d grub_emu-normal_menu.d grub_emu-normal_menu_entry.d grub_emu-normal_misc.d grub_emu-partmap_amiga.d grub_emu-partmap_apple.d grub_emu-partmap_pc.d grub_emu-partmap_sun.d grub_emu-util_console.d grub_emu-util_grub_emu.d grub_emu-util_misc.d grub_emu-util_i386_pc_biosdisk.d grub_emu-util_i386_pc_getroot.d grub_emu-util_i386_pc_misc.d
+CLEANFILES += grub-emu grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_search.o grub_emu-commands_timeout.o grub_emu-commands_i386_pc_halt.o grub_emu-commands_i386_pc_reboot.o grub_emu-disk_loopback.o grub_emu-fs_affs.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_sfs.o grub_emu-fs_ufs.o grub_emu-fs_xfs.o grub_emu-fs_ocfs2.o grub_emu-io_gzio.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_parser.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_completion.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-normal_misc.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_i386_pc_misc.o
+MOSTLYCLEANFILES += grub_emu-commands_boot.d grub_emu-commands_cat.d grub_emu-commands_cmp.d grub_emu-commands_configfile.d grub_emu-commands_default.d grub_emu-commands_help.d grub_emu-commands_terminal.d grub_emu-commands_ls.d grub_emu-commands_search.d grub_emu-commands_timeout.d grub_emu-commands_i386_pc_halt.d grub_emu-commands_i386_pc_reboot.d grub_emu-disk_loopback.d grub_emu-fs_affs.d grub_emu-fs_ext2.d grub_emu-fs_fat.d grub_emu-fs_fshelp.d grub_emu-fs_hfs.d grub_emu-fs_iso9660.d grub_emu-fs_jfs.d grub_emu-fs_minix.d grub_emu-fs_sfs.d grub_emu-fs_ufs.d grub_emu-fs_xfs.d grub_emu-fs_ocfs2.d grub_emu-io_gzio.d grub_emu-kern_device.d grub_emu-kern_disk.d grub_emu-kern_dl.d grub_emu-kern_env.d grub_emu-kern_err.d grub_emu-kern_file.d grub_emu-kern_fs.d grub_emu-kern_loader.d grub_emu-kern_main.d grub_emu-kern_misc.d grub_emu-kern_parser.d grub_emu-kern_partition.d grub_emu-kern_rescue.d grub_emu-kern_term.d grub_emu-normal_arg.d grub_emu-normal_cmdline.d grub_emu-normal_command.d grub_emu-normal_completion.d grub_emu-normal_context.d grub_emu-normal_main.d grub_emu-normal_menu.d grub_emu-normal_menu_entry.d grub_emu-normal_misc.d grub_emu-partmap_amiga.d grub_emu-partmap_apple.d grub_emu-partmap_pc.d grub_emu-partmap_sun.d grub_emu-util_console.d grub_emu-util_grub_emu.d grub_emu-util_misc.d grub_emu-util_i386_pc_biosdisk.d grub_emu-util_i386_pc_getroot.d grub_emu-util_i386_pc_misc.d
-grub-emu: grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_search.o grub_emu-commands_timeout.o grub_emu-commands_i386_pc_halt.o grub_emu-commands_i386_pc_reboot.o grub_emu-disk_loopback.o grub_emu-fs_affs.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_sfs.o grub_emu-fs_ufs.o grub_emu-fs_xfs.o grub_emu-io_gzio.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_parser.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_completion.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-normal_misc.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_i386_pc_misc.o
+grub-emu: grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_search.o grub_emu-commands_timeout.o grub_emu-commands_i386_pc_halt.o grub_emu-commands_i386_pc_reboot.o grub_emu-disk_loopback.o grub_emu-fs_affs.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_sfs.o grub_emu-fs_ufs.o grub_emu-fs_xfs.o grub_emu-fs_ocfs2.o grub_emu-io_gzio.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_parser.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_completion.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-normal_misc.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_i386_pc_misc.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(grub_emu_LDFLAGS)
grub_emu-commands_boot.o: commands/boot.c
@@ -963,6 +979,14 @@ grub_emu-fs_xfs.d: fs/xfs.c
-include grub_emu-fs_xfs.d
+grub_emu-fs_ocfs2.o: fs/ocfs2.c
+ $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
+
+grub_emu-fs_ocfs2.d: fs/ocfs2.c
+ set -e; $(BUILD_CC) -Ifs -I$(srcdir)/fs $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,ocfs2\.o[ :]*,grub_emu-fs_ocfs2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
+
+-include grub_emu-fs_ocfs2.d
+
grub_emu-io_gzio.o: io/gzio.c
$(BUILD_CC) -Iio -I$(srcdir)/io $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
@@ -1275,7 +1299,7 @@ pkgdata_MODULES = _chain.mod _linux.mod
apple.mod pc.mod sun.mod loopback.mod reboot.mod halt.mod \
help.mod default.mod timeout.mod configfile.mod vbe.mod \
vesafb.mod vbetest.mod vbeinfo.mod search.mod gzio.mod \
- terminfo.mod serial.mod xfs.mod affs.mod sfs.mod
+ terminfo.mod serial.mod xfs.mod affs.mod sfs.mod ocfs2.mod
# For _chain.mod.
_chain_mod_SOURCES = loader/i386/pc/chainloader.c
@@ -1894,6 +1918,57 @@ fs-sfs.lst: fs/sfs.c genfslist.sh
sfs_mod_CFLAGS = $(COMMON_CFLAGS)
sfs_mod_LDFLAGS = $(COMMON_LDFLAGS)
+# For ocfs2.mod.
+ocfs2_mod_SOURCES = fs/ocfs2.c
+CLEANFILES += ocfs2.mod mod-ocfs2.o mod-ocfs2.c pre-ocfs2.o ocfs2_mod-fs_ocfs2.o def-ocfs2.lst und-ocfs2.lst
+MOSTLYCLEANFILES += ocfs2_mod-fs_ocfs2.d
+DEFSYMFILES += def-ocfs2.lst
+UNDSYMFILES += und-ocfs2.lst
+
+ocfs2.mod: pre-ocfs2.o mod-ocfs2.o
+ -rm -f $@
+ $(LD) $(ocfs2_mod_LDFLAGS) $(LDFLAGS) -r -d -o $@ $^
+ $(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
+
+pre-ocfs2.o: ocfs2_mod-fs_ocfs2.o
+ -rm -f $@
+ $(LD) $(ocfs2_mod_LDFLAGS) -r -d -o $@ $^
+
+mod-ocfs2.o: mod-ocfs2.c
+ $(CC) $(CPPFLAGS) $(CFLAGS) $(ocfs2_mod_CFLAGS) -c -o $@ $<
+
+mod-ocfs2.c: moddep.lst genmodsrc.sh
+ sh $(srcdir)/genmodsrc.sh 'ocfs2' $< > $@ || (rm -f $@; exit 1)
+
+def-ocfs2.lst: pre-ocfs2.o
+ $(NM) -g --defined-only -P -p $< | sed 's/^\([^ ]*\).*/\1 ocfs2/' > $@
+
+und-ocfs2.lst: pre-ocfs2.o
+ echo 'ocfs2' > $@
+ $(NM) -u -P -p $< | cut -f1 -d' ' >> $@
+
+ocfs2_mod-fs_ocfs2.o: fs/ocfs2.c
+ $(CC) -Ifs -I$(srcdir)/fs $(CPPFLAGS) $(CFLAGS) $(ocfs2_mod_CFLAGS) -c -o $@ $<
+
+ocfs2_mod-fs_ocfs2.d: fs/ocfs2.c
+ set -e; $(CC) -Ifs -I$(srcdir)/fs $(CPPFLAGS) $(CFLAGS) $(ocfs2_mod_CFLAGS) -M $< | sed 's,ocfs2\.o[ :]*,ocfs2_mod-fs_ocfs2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
+
+-include ocfs2_mod-fs_ocfs2.d
+
+CLEANFILES += cmd-ocfs2.lst fs-ocfs2.lst
+COMMANDFILES += cmd-ocfs2.lst
+FSFILES += fs-ocfs2.lst
+
+cmd-ocfs2.lst: fs/ocfs2.c gencmdlist.sh
+ set -e; $(CC) -Ifs -I$(srcdir)/fs $(CPPFLAGS) $(CFLAGS) $(ocfs2_mod_CFLAGS) -E $< | sh $(srcdir)/gencmdlist.sh ocfs2 > $@ || (rm -f $@; exit 1)
+
+fs-ocfs2.lst: fs/ocfs2.c genfslist.sh
+ set -e; $(CC) -Ifs -I$(srcdir)/fs $(CPPFLAGS) $(CFLAGS) $(ocfs2_mod_CFLAGS) -E $< | sh $(srcdir)/genfslist.sh ocfs2 > $@ || (rm -f $@; exit 1)
+
+
+ocfs2_mod_CFLAGS = $(COMMON_CFLAGS)
+ocfs2_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
# For _linux.mod.
_linux_mod_SOURCES = loader/i386/pc/linux.c
CLEANFILES += _linux.mod mod-_linux.o mod-_linux.c pre-_linux.o _linux_mod-loader_i386_pc_linux.o def-_linux.lst und-_linux.lst
diff -uprN --exclude='*~' --exclude=CVS --exclude=configure ../tmp/grub2/conf/i386-pc.rmk ./conf/i386-pc.rmk
--- ../tmp/grub2/conf/i386-pc.rmk 2005-10-24 03:23:46.000000000 -0700
+++ ./conf/i386-pc.rmk 2005-11-03 12:06:17.355857000 -0800
@@ -64,7 +64,7 @@ grub_setup_SOURCES = util/i386/pc/grub-s
util/misc.c util/i386/pc/getroot.c kern/device.c kern/disk.c \
kern/err.c kern/misc.c fs/fat.c fs/ext2.c fs/xfs.c fs/affs.c \
fs/sfs.c kern/parser.c kern/partition.c partmap/pc.c \
- fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c kern/file.c kern/fs.c kern/env.c fs/fshelp.c
+ fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c fs/ocfs2.c kern/file.c kern/fs.c kern/env.c fs/fshelp.c
# For grub-mkdevicemap.
grub_mkdevicemap_SOURCES = util/i386/pc/grub-mkdevicemap.c util/misc.c
@@ -75,7 +75,7 @@ grub_probefs_SOURCES = util/i386/pc/grub
kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \
fs/ext2.c kern/parser.c kern/partition.c partmap/pc.c fs/ufs.c \
fs/minix.c fs/hfs.c fs/jfs.c kern/fs.c kern/env.c fs/fshelp.c \
- fs/xfs.c fs/affs.c fs/sfs.c
+ fs/xfs.c fs/affs.c fs/sfs.c fs/ocfs2.c
# For grub-emu.
grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c \
@@ -85,7 +85,7 @@ grub_emu_SOURCES = commands/boot.c comma
commands/i386/pc/halt.c commands/i386/pc/reboot.c \
disk/loopback.c \
fs/affs.c fs/ext2.c fs/fat.c fs/fshelp.c fs/hfs.c fs/iso9660.c \
- fs/jfs.c fs/minix.c fs/sfs.c fs/ufs.c fs/xfs.c \
+ fs/jfs.c fs/minix.c fs/sfs.c fs/ufs.c fs/xfs.c fs/ocfs2.c \
io/gzio.c \
kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c \
kern/file.c kern/fs.c kern/loader.c kern/main.c kern/misc.c \
@@ -117,7 +117,7 @@ pkgdata_MODULES = _chain.mod _linux.mod
apple.mod pc.mod sun.mod loopback.mod reboot.mod halt.mod \
help.mod default.mod timeout.mod configfile.mod vbe.mod \
vesafb.mod vbetest.mod vbeinfo.mod search.mod gzio.mod \
- terminfo.mod serial.mod xfs.mod affs.mod sfs.mod
+ terminfo.mod serial.mod xfs.mod affs.mod sfs.mod ocfs2.mod
# For _chain.mod.
_chain_mod_SOURCES = loader/i386/pc/chainloader.c
@@ -184,6 +184,11 @@ sfs_mod_SOURCES = fs/sfs.c
sfs_mod_CFLAGS = $(COMMON_CFLAGS)
sfs_mod_LDFLAGS = $(COMMON_LDFLAGS)
+# For ocfs2.mod.
+ocfs2_mod_SOURCES = fs/ocfs2.c
+ocfs2_mod_CFLAGS = $(COMMON_CFLAGS)
+ocfs2_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
# For _linux.mod.
_linux_mod_SOURCES = loader/i386/pc/linux.c
_linux_mod_CFLAGS = $(COMMON_CFLAGS)
diff -uprN --exclude='*~' --exclude=CVS --exclude=configure ../tmp/grub2/conf/powerpc-ieee1275.mk ./conf/powerpc-ieee1275.mk
--- ../tmp/grub2/conf/powerpc-ieee1275.mk 2005-11-02 21:05:05.000000000 -0800
+++ ./conf/powerpc-ieee1275.mk 2005-11-03 14:03:06.406760000 -0800
@@ -71,7 +71,7 @@ grub_emu_SOURCES = commands/boot.c comma
commands/ieee1275/halt.c commands/ieee1275/reboot.c \
disk/loopback.c \
fs/affs.c fs/ext2.c fs/fat.c fs/fshelp.c fs/hfs.c fs/iso9660.c \
- fs/jfs.c fs/minix.c fs/sfs.c fs/ufs.c fs/xfs.c \
+ fs/jfs.c fs/minix.c fs/sfs.c fs/ufs.c fs/xfs.c fs.ocfs2.c \
io/gzio.c \
kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c \
kern/file.c kern/fs.c kern/loader.c kern/main.c kern/misc.c \
@@ -83,10 +83,10 @@ grub_emu_SOURCES = commands/boot.c comma
util/console.c util/grub-emu.c util/misc.c \
util/i386/pc/biosdisk.c util/i386/pc/getroot.c \
util/powerpc/ieee1275/misc.c
-CLEANFILES += grub-emu grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_search.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_timeout.o grub_emu-commands_ieee1275_halt.o grub_emu-commands_ieee1275_reboot.o grub_emu-disk_loopback.o grub_emu-fs_affs.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_sfs.o grub_emu-fs_ufs.o grub_emu-fs_xfs.o grub_emu-io_gzio.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_parser.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_completion.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-normal_misc.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_powerpc_ieee1275_misc.o
-MOSTLYCLEANFILES += grub_emu-commands_boot.d grub_emu-commands_cat.d grub_emu-commands_cmp.d grub_emu-commands_configfile.d grub_emu-commands_default.d grub_emu-commands_help.d grub_emu-commands_search.d grub_emu-commands_terminal.d grub_emu-commands_ls.d grub_emu-commands_timeout.d grub_emu-commands_ieee1275_halt.d grub_emu-commands_ieee1275_reboot.d grub_emu-disk_loopback.d grub_emu-fs_affs.d grub_emu-fs_ext2.d grub_emu-fs_fat.d grub_emu-fs_fshelp.d grub_emu-fs_hfs.d grub_emu-fs_iso9660.d grub_emu-fs_jfs.d grub_emu-fs_minix.d grub_emu-fs_sfs.d grub_emu-fs_ufs.d grub_emu-fs_xfs.d grub_emu-io_gzio.d grub_emu-kern_device.d grub_emu-kern_disk.d grub_emu-kern_dl.d grub_emu-kern_env.d grub_emu-kern_err.d grub_emu-kern_file.d grub_emu-kern_fs.d grub_emu-kern_loader.d grub_emu-kern_main.d grub_emu-kern_misc.d grub_emu-kern_parser.d grub_emu-kern_partition.d grub_emu-kern_rescue.d grub_emu-kern_term.d grub_emu-normal_arg.d grub_emu-normal_cmdline.d grub_emu-normal_command.d grub_emu-normal_completion.d grub_emu-normal_context.d grub_emu-normal_main.d grub_emu-normal_menu.d grub_emu-normal_menu_entry.d grub_emu-normal_misc.d grub_emu-partmap_amiga.d grub_emu-partmap_apple.d grub_emu-partmap_pc.d grub_emu-partmap_sun.d grub_emu-util_console.d grub_emu-util_grub_emu.d grub_emu-util_misc.d grub_emu-util_i386_pc_biosdisk.d grub_emu-util_i386_pc_getroot.d grub_emu-util_powerpc_ieee1275_misc.d
+CLEANFILES += grub-emu grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_search.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_timeout.o grub_emu-commands_ieee1275_halt.o grub_emu-commands_ieee1275_reboot.o grub_emu-disk_loopback.o grub_emu-fs_affs.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_sfs.o grub_emu-fs_ufs.o grub_emu-fs_xfs.o grub_emu-fs_ocfs2.o grub_emu-io_gzio.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_parser.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_completion.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-normal_misc.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_powerpc_ieee1275_misc.o
+MOSTLYCLEANFILES += grub_emu-commands_boot.d grub_emu-commands_cat.d grub_emu-commands_cmp.d grub_emu-commands_configfile.d grub_emu-commands_default.d grub_emu-commands_help.d grub_emu-commands_search.d grub_emu-commands_terminal.d grub_emu-commands_ls.d grub_emu-commands_timeout.d grub_emu-commands_ieee1275_halt.d grub_emu-commands_ieee1275_reboot.d grub_emu-disk_loopback.d grub_emu-fs_affs.d grub_emu-fs_ext2.d grub_emu-fs_fat.d grub_emu-fs_fshelp.d grub_emu-fs_hfs.d grub_emu-fs_iso9660.d grub_emu-fs_jfs.d grub_emu-fs_minix.d grub_emu-fs_sfs.d grub_emu-fs_ufs.d grub_emu-fs_xfs.d grub_emu-fs_ocfs2.d grub_emu-io_gzio.d grub_emu-kern_device.d grub_emu-kern_disk.d grub_emu-kern_dl.d grub_emu-kern_env.d grub_emu-kern_err.d grub_emu-kern_file.d grub_emu-kern_fs.d grub_emu-kern_loader.d grub_emu-kern_main.d grub_emu-kern_misc.d grub_emu-kern_parser.d grub_emu-kern_partition.d grub_emu-kern_rescue.d grub_emu-kern_term.d grub_emu-normal_arg.d grub_emu-normal_cmdline.d grub_emu-normal_command.d grub_emu-normal_completion.d grub_emu-normal_context.d grub_emu-normal_main.d grub_emu-normal_menu.d grub_emu-normal_menu_entry.d grub_emu-normal_misc.d grub_emu-partmap_amiga.d grub_emu-partmap_apple.d grub_emu-partmap_pc.d grub_emu-partmap_sun.d grub_emu-util_console.d grub_emu-util_grub_emu.d grub_emu-util_misc.d grub_emu-util_i386_pc_biosdisk.d grub_emu-util_i386_pc_getroot.d grub_emu-util_powerpc_ieee1275_misc.d
-grub-emu: grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_search.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_timeout.o grub_emu-commands_ieee1275_halt.o grub_emu-commands_ieee1275_reboot.o grub_emu-disk_loopback.o grub_emu-fs_affs.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_sfs.o grub_emu-fs_ufs.o grub_emu-fs_xfs.o grub_emu-io_gzio.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_parser.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_completion.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-normal_misc.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_powerpc_ieee1275_misc.o
+grub-emu: grub_emu-commands_boot.o grub_emu-commands_cat.o grub_emu-commands_cmp.o grub_emu-commands_configfile.o grub_emu-commands_default.o grub_emu-commands_help.o grub_emu-commands_search.o grub_emu-commands_terminal.o grub_emu-commands_ls.o grub_emu-commands_timeout.o grub_emu-commands_ieee1275_halt.o grub_emu-commands_ieee1275_reboot.o grub_emu-disk_loopback.o grub_emu-fs_affs.o grub_emu-fs_ext2.o grub_emu-fs_fat.o grub_emu-fs_fshelp.o grub_emu-fs_hfs.o grub_emu-fs_iso9660.o grub_emu-fs_jfs.o grub_emu-fs_minix.o grub_emu-fs_sfs.o grub_emu-fs_ufs.o grub_emu-fs_xfs.o grub_emu-fs_ocfs2.o grub_emu-io_gzio.o grub_emu-kern_device.o grub_emu-kern_disk.o grub_emu-kern_dl.o grub_emu-kern_env.o grub_emu-kern_err.o grub_emu-kern_file.o grub_emu-kern_fs.o grub_emu-kern_loader.o grub_emu-kern_main.o grub_emu-kern_misc.o grub_emu-kern_parser.o grub_emu-kern_partition.o grub_emu-kern_rescue.o grub_emu-kern_term.o grub_emu-normal_arg.o grub_emu-normal_cmdline.o grub_emu-normal_command.o grub_emu-normal_completion.o grub_emu-normal_context.o grub_emu-normal_main.o grub_emu-normal_menu.o grub_emu-normal_menu_entry.o grub_emu-normal_misc.o grub_emu-partmap_amiga.o grub_emu-partmap_apple.o grub_emu-partmap_pc.o grub_emu-partmap_sun.o grub_emu-util_console.o grub_emu-util_grub_emu.o grub_emu-util_misc.o grub_emu-util_i386_pc_biosdisk.o grub_emu-util_i386_pc_getroot.o grub_emu-util_powerpc_ieee1275_misc.o
$(BUILD_CC) -o $@ $^ $(BUILD_LDFLAGS) $(grub_emu_LDFLAGS)
grub_emu-commands_boot.o: commands/boot.c
@@ -281,6 +281,14 @@ grub_emu-fs_xfs.d: fs/xfs.c
-include grub_emu-fs_xfs.d
+grub_emu-fs_ocfs2.o: fs.ocfs2.c
+ $(BUILD_CC) -I. -I$(srcdir)/. $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
+
+grub_emu-fs_ocfs2.d: fs.ocfs2.c
+ set -e; $(BUILD_CC) -I. -I$(srcdir)/. $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -M $< | sed 's,fs\.ocfs2\.o[ :]*,grub_emu-fs_ocfs2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
+
+-include grub_emu-fs_ocfs2.d
+
grub_emu-io_gzio.o: io/gzio.c
$(BUILD_CC) -Iio -I$(srcdir)/io $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) -DGRUB_UTIL=1 $(grub_emu_CFLAGS) -c -o $@ $<
@@ -810,7 +818,7 @@ pkgdata_MODULES = _linux.mod linux.mod f
boot.mod cmp.mod cat.mod terminal.mod fshelp.mod amiga.mod apple.mod \
pc.mod suspend.mod loopback.mod help.mod reboot.mod halt.mod sun.mod \
default.mod timeout.mod configfile.mod search.mod gzio.mod xfs.mod \
- affs.mod sfs.mod
+ affs.mod sfs.mod ocfs2.mod
# For fshelp.mod.
fshelp_mod_SOURCES = fs/fshelp.c
@@ -1316,6 +1324,56 @@ fs-sfs.lst: fs/sfs.c genfslist.sh
sfs_mod_CFLAGS = $(COMMON_CFLAGS)
+# For ocfs2.mod.
+ocfs2_mod_SOURCES = fs/ocfs2.c
+CLEANFILES += ocfs2.mod mod-ocfs2.o mod-ocfs2.c pre-ocfs2.o ocfs2_mod-fs_ocfs2.o def-ocfs2.lst und-ocfs2.lst
+MOSTLYCLEANFILES += ocfs2_mod-fs_ocfs2.d
+DEFSYMFILES += def-ocfs2.lst
+UNDSYMFILES += und-ocfs2.lst
+
+ocfs2.mod: pre-ocfs2.o mod-ocfs2.o
+ -rm -f $@
+ $(LD) $(ocfs2_mod_LDFLAGS) $(LDFLAGS) -r -d -o $@ $^
+ $(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
+
+pre-ocfs2.o: ocfs2_mod-fs_ocfs2.o
+ -rm -f $@
+ $(LD) $(ocfs2_mod_LDFLAGS) -r -d -o $@ $^
+
+mod-ocfs2.o: mod-ocfs2.c
+ $(CC) $(CPPFLAGS) $(CFLAGS) $(ocfs2_mod_CFLAGS) -c -o $@ $<
+
+mod-ocfs2.c: moddep.lst genmodsrc.sh
+ sh $(srcdir)/genmodsrc.sh 'ocfs2' $< > $@ || (rm -f $@; exit 1)
+
+def-ocfs2.lst: pre-ocfs2.o
+ $(NM) -g --defined-only -P -p $< | sed 's/^\([^ ]*\).*/\1 ocfs2/' > $@
+
+und-ocfs2.lst: pre-ocfs2.o
+ echo 'ocfs2' > $@
+ $(NM) -u -P -p $< | cut -f1 -d' ' >> $@
+
+ocfs2_mod-fs_ocfs2.o: fs/ocfs2.c
+ $(CC) -Ifs -I$(srcdir)/fs $(CPPFLAGS) $(CFLAGS) $(ocfs2_mod_CFLAGS) -c -o $@ $<
+
+ocfs2_mod-fs_ocfs2.d: fs/ocfs2.c
+ set -e; $(CC) -Ifs -I$(srcdir)/fs $(CPPFLAGS) $(CFLAGS) $(ocfs2_mod_CFLAGS) -M $< | sed 's,ocfs2\.o[ :]*,ocfs2_mod-fs_ocfs2.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
+
+-include ocfs2_mod-fs_ocfs2.d
+
+CLEANFILES += cmd-ocfs2.lst fs-ocfs2.lst
+COMMANDFILES += cmd-ocfs2.lst
+FSFILES += fs-ocfs2.lst
+
+cmd-ocfs2.lst: fs/ocfs2.c gencmdlist.sh
+ set -e; $(CC) -Ifs -I$(srcdir)/fs $(CPPFLAGS) $(CFLAGS) $(ocfs2_mod_CFLAGS) -E $< | sh $(srcdir)/gencmdlist.sh ocfs2 > $@ || (rm -f $@; exit 1)
+
+fs-ocfs2.lst: fs/ocfs2.c genfslist.sh
+ set -e; $(CC) -Ifs -I$(srcdir)/fs $(CPPFLAGS) $(CFLAGS) $(ocfs2_mod_CFLAGS) -E $< | sh $(srcdir)/genfslist.sh ocfs2 > $@ || (rm -f $@; exit 1)
+
+
+ocfs2_mod_CFLAGS = $(COMMON_CFLAGS)
+
# For _linux.mod.
_linux_mod_SOURCES = loader/powerpc/ieee1275/linux.c
CLEANFILES += _linux.mod mod-_linux.o mod-_linux.c pre-_linux.o _linux_mod-loader_powerpc_ieee1275_linux.o def-_linux.lst und-_linux.lst
diff -uprN --exclude='*~' --exclude=CVS --exclude=configure ../tmp/grub2/conf/powerpc-ieee1275.rmk ./conf/powerpc-ieee1275.rmk
--- ../tmp/grub2/conf/powerpc-ieee1275.rmk 2005-11-02 21:05:05.000000000 -0800
+++ ./conf/powerpc-ieee1275.rmk 2005-11-03 12:12:12.667484000 -0800
@@ -41,7 +41,7 @@ grub_emu_SOURCES = commands/boot.c comma
commands/ieee1275/halt.c commands/ieee1275/reboot.c \
disk/loopback.c \
fs/affs.c fs/ext2.c fs/fat.c fs/fshelp.c fs/hfs.c fs/iso9660.c \
- fs/jfs.c fs/minix.c fs/sfs.c fs/ufs.c fs/xfs.c \
+ fs/jfs.c fs/minix.c fs/sfs.c fs/ufs.c fs/xfs.c fs.ocfs2.c \
io/gzio.c \
kern/device.c kern/disk.c kern/dl.c kern/env.c kern/err.c \
kern/file.c kern/fs.c kern/loader.c kern/main.c kern/misc.c \
@@ -84,7 +84,7 @@ pkgdata_MODULES = _linux.mod linux.mod f
boot.mod cmp.mod cat.mod terminal.mod fshelp.mod amiga.mod apple.mod \
pc.mod suspend.mod loopback.mod help.mod reboot.mod halt.mod sun.mod \
default.mod timeout.mod configfile.mod search.mod gzio.mod xfs.mod \
- affs.mod sfs.mod
+ affs.mod sfs.mod ocfs2.mod
# For fshelp.mod.
fshelp_mod_SOURCES = fs/fshelp.c
@@ -130,6 +130,10 @@ affs_mod_CFLAGS = $(COMMON_CFLAGS)
sfs_mod_SOURCES = fs/sfs.c
sfs_mod_CFLAGS = $(COMMON_CFLAGS)
+# For ocfs2.mod.
+ocfs2_mod_SOURCES = fs/ocfs2.c
+ocfs2_mod_CFLAGS = $(COMMON_CFLAGS)
+
# For _linux.mod.
_linux_mod_SOURCES = loader/powerpc/ieee1275/linux.c
_linux_mod_CFLAGS = $(COMMON_CFLAGS)
diff -uprN --exclude='*~' --exclude=CVS --exclude=configure ../tmp/grub2/DISTLIST ./DISTLIST
--- ../tmp/grub2/DISTLIST 2005-10-15 11:10:37.000000000 -0700
+++ ./DISTLIST 2005-11-03 11:14:05.582654000 -0800
@@ -66,6 +66,7 @@ fs/minix.c
fs/ufs.c
fs/sfs.c
fs/xfs.c
+fs/ocfs2.c
hello/hello.c
include/grub/arg.h
include/grub/boot.h
diff -uprN --exclude='*~' --exclude=CVS --exclude=configure ../tmp/grub2/fs/ocfs2.c ./fs/ocfs2.c
--- ../tmp/grub2/fs/ocfs2.c 1969-12-31 16:00:00.000000000 -0800
+++ ./fs/ocfs2.c 2005-11-03 16:57:04.832948000 -0800
@@ -0,0 +1,717 @@
+/* ocfs2.c - Oracle Clustered File System 2. */
+/*
+ * GRUB -- GRand Unified Bootloader
+ *
+ * Some of this code taken from ext2.c and xfs.c in the grub2
+ * distribution and are copyright (C) 2003, 2004, 2005 Free Software
+ * Foundation, Inc. The rest is Copyright (C) 2005 Oracle.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <grub/err.h>
+#include <grub/file.h>
+#include <grub/mm.h>
+#include <grub/misc.h>
+#include <grub/disk.h>
+#include <grub/dl.h>
+#include <grub/types.h>
+#include <grub/fshelp.h>
+
+/*
+ * An OCFS2 volume starts this way:
+ * Sector 0: Valid ocfs1_vol_disk_hdr that cleanly fails to mount OCFS.
+ * Sector 1: Valid ocfs1_vol_label that cleanly fails to mount OCFS.
+ * Block OCFS2_SUPER_BLOCK_BLKNO: OCFS2 superblock.
+ *
+ * All other structures are found from the superblock information.
+ *
+ * OCFS2_SUPER_BLOCK_BLKNO is in blocks, not sectors. eg, for a
+ * blocksize of 2K, it is 4096 bytes into disk.
+ */
+#define OCFS2_SUPER_BLOCK_BLKNO 2
+
+/* Filesystem magic number */
+#define OCFS2_SUPER_MAGIC 0x7461636f
+
+#define OCFS2_SUPER_BLOCK_SIGNATURE "OCFSV2"
+#define OCFS2_INODE_SIGNATURE "INODE01"
+#define OCFS2_EXTENT_BLOCK_SIGNATURE "EXBLK01"
+
+#define OCFS2_VOL_UUID_LEN 16
+#define OCFS2_MAX_VOL_LABEL_LEN 64
+
+#define OCFS2_MAX_BLOCKSIZE 4096
+
+#define OCFS2_FT_UNKNOWN 0
+#define OCFS2_FT_REG_FILE 1
+#define OCFS2_FT_DIR 2
+#define OCFS2_FT_CHRDEV 3
+#define OCFS2_FT_BLKDEV 4
+#define OCFS2_FT_FIFO 5
+#define OCFS2_FT_SOCK 6
+#define OCFS2_FT_SYMLINK 7
+
+#define OCFS2_FT_MAX 8
+
+#define S_IFMT 00170000
+#define S_IFLNK 0120000
+#define GRUB_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
+
+struct grub_ocfs2_extent_rec
+{
+ grub_uint32_t cpos;
+ grub_uint32_t clusters;
+ grub_uint64_t blkno;
+};
+
+struct grub_ocfs2_extent_list
+{
+ grub_uint16_t tree_depth;
+ grub_uint16_t count;
+ grub_uint16_t next_free_rec;
+ grub_uint16_t reserved1;
+ grub_uint64_t reserved2;
+ struct grub_ocfs2_extent_rec recs[0];
+};
+
+struct grub_ocfs2_extent_block
+{
+ grub_uint8_t signature[8];
+ grub_uint64_t reserved1;
+ grub_uint16_t suballoc_slot;
+ grub_uint16_t suballoc_bit;
+ grub_uint32_t fs_generation;
+ grub_uint64_t blkno;
+ grub_uint64_t reserved3;
+ grub_uint64_t next_leaf_blk;
+ struct grub_ocfs2_extent_list list;
+};
+
+struct grub_ocfs2_sblock {
+ grub_uint16_t major_rev_level;
+ grub_uint16_t minor_rev_level;
+ grub_uint16_t mnt_count;
+ grub_uint16_t max_mnt_count;
+ grub_uint16_t state;
+ grub_uint16_t errors;
+ grub_uint32_t checkinterval;
+ grub_uint64_t lastcheck;
+ grub_uint32_t creator_os;
+ grub_uint32_t feature_compat;
+ grub_uint32_t feature_incompat;
+ grub_uint32_t feature_ro_compat;
+ grub_uint64_t root_blkno;
+ grub_uint64_t system_dir_blkno;
+ grub_uint32_t blocksize_bits;
+ grub_uint32_t clustersize_bits;
+ grub_uint16_t max_slots;
+ grub_uint16_t reserved1;
+ grub_uint32_t reserved2;
+ grub_uint64_t first_cluster_group;
+ grub_uint8_t label[OCFS2_MAX_VOL_LABEL_LEN];
+ grub_uint8_t uuid[OCFS2_VOL_UUID_LEN];
+} ocfs2_super_block;
+
+struct grub_ocfs2_inode {
+ grub_uint8_t signature[8];
+ grub_uint32_t generation;
+ grub_uint16_t suballoc_slot;
+ grub_uint16_t suballoc_bit;
+ grub_uint32_t reserved0;
+ grub_uint32_t clusters;
+ grub_uint32_t uid;
+ grub_uint32_t gid;
+ grub_uint64_t size;
+ grub_uint16_t mode;
+ grub_uint16_t links_count;
+ grub_uint32_t flags;
+ grub_uint64_t atime;
+ grub_uint64_t ctime;
+ grub_uint64_t mtime;
+ grub_uint64_t dtime;
+ grub_uint64_t blkno;
+ grub_uint64_t last_eb_blk;
+ grub_uint32_t fs_generation;
+ grub_uint32_t atime_nsec;
+ grub_uint32_t ctime_nsec;
+ grub_uint32_t mtime_nsec;
+ grub_uint64_t reserved1[9];
+ union {
+ grub_uint64_t pad1;
+ struct {
+ grub_uint64_t rdev;
+ } dev1;
+ struct {
+ grub_uint32_t used;
+ grub_uint32_t total;
+ } bitmap1;
+ struct {
+ grub_uint32_t flags;
+ grub_uint32_t pad;
+ } journal1;
+ } id1;
+ union {
+ /* Some union members omitted here */
+ struct grub_ocfs2_sblock super;
+ struct grub_ocfs2_extent_list list;
+ grub_uint8_t symlink[0];
+ } id2;
+};
+
+/* This differs from ocfs2_fs.h in that the filename field is omitted
+ because it makes grub_ocfs2_iterate_dir easier to code. */
+struct grub_ocfs2_dir_entry {
+ grub_uint64_t inode;
+ grub_uint16_t rec_len;
+ grub_uint8_t name_len;
+ grub_uint8_t file_type;
+} __attribute__ ((packed));
+
+struct grub_fshelp_node
+{
+ struct grub_ocfs2_data *data;
+
+ char inode_block[OCFS2_MAX_BLOCKSIZE];
+ struct grub_ocfs2_inode *inode;
+
+ char eb_block[OCFS2_MAX_BLOCKSIZE];
+ struct grub_ocfs2_extent_block *eb;
+
+ grub_uint64_t ino;
+ int inode_read;
+};
+
+/* Information about a "mounted" ocfs2 filesystem. */
+struct grub_ocfs2_data
+{
+ grub_disk_t disk;
+
+ struct grub_fshelp_node diropen;
+
+ char label[OCFS2_MAX_VOL_LABEL_LEN];
+ int blkbits;
+ int clusterbits;
+};
+
+#ifndef GRUB_UTIL
+static grub_dl_t my_mod;
+#endif
+
+\f
+
+static unsigned long
+grub_ocfs2_blocks_to_sectors (struct grub_ocfs2_data *data,
+ grub_uint64_t blocks)
+{
+ return blocks << (data->blkbits - GRUB_DISK_SECTOR_BITS);
+}
+
+
+static grub_err_t
+grub_ocfs2_load_superblock (grub_disk_t disk, struct grub_ocfs2_data *data)
+{
+ unsigned long sector;
+ struct grub_ocfs2_inode *super = data->diropen.inode;
+
+ for (data->blkbits = 9; data->blkbits < 13; data->blkbits++)
+ {
+ sector = grub_ocfs2_blocks_to_sectors (data,
+ OCFS2_SUPER_BLOCK_BLKNO);
+
+ if (grub_disk_read (disk, sector, 0, 1 << data->blkbits,
+ (char *) super))
+ return grub_errno;
+
+ if (!grub_strncmp (super->signature, OCFS2_SUPER_BLOCK_SIGNATURE,
+ sizeof(OCFS2_SUPER_BLOCK_SIGNATURE)))
+ return 0;
+ }
+
+ return grub_error (GRUB_ERR_BAD_FS, "not an OCFS2 filesystem");
+}
+
+
+static grub_err_t
+grub_ocfs2_read_inode (struct grub_ocfs2_data *data, grub_uint64_t blkno,
+ struct grub_ocfs2_inode *inode)
+{
+ unsigned long sector = grub_ocfs2_blocks_to_sectors(data, blkno);
+
+ if (grub_disk_read(data->disk, sector, 0, 1 << data->blkbits, (char *)inode))
+ return grub_errno;
+
+ if (grub_strncmp(inode->signature, OCFS2_INODE_SIGNATURE,
+ sizeof(OCFS2_INODE_SIGNATURE)))
+ return grub_error (GRUB_ERR_BAD_FS, "not a correct OCFS2 inode.");
+ return 0;
+}
+
+
+static struct grub_ocfs2_data *
+grub_ocfs2_mount (grub_disk_t disk)
+{
+ struct grub_ocfs2_data *data;
+ struct grub_fshelp_node *diropen;
+
+ data = grub_malloc (sizeof (struct grub_ocfs2_data));
+ if (!data)
+ return 0;
+
+ data->disk = disk;
+
+ diropen = &data->diropen;
+ diropen->data = data;
+ diropen->inode = (struct grub_ocfs2_inode *) diropen->inode_block;
+ diropen->eb = (struct grub_ocfs2_extent_block *) diropen->eb_block;
+
+ grub_ocfs2_load_superblock (disk, data);
+ if (grub_errno)
+ goto fail;
+
+ data->blkbits =
+ grub_le_to_cpu32(diropen->inode->id2.super.blocksize_bits);
+ data->clusterbits =
+ grub_le_to_cpu32(diropen->inode->id2.super.clustersize_bits);
+ grub_memcpy(data->label, diropen->inode->id2.super.label,
+ OCFS2_MAX_VOL_LABEL_LEN);
+
+ diropen->ino = grub_le_to_cpu64(diropen->inode->id2.super.root_blkno);
+ diropen->inode_read = 1;
+
+ grub_ocfs2_read_inode (data, diropen->ino, diropen->inode);
+ if (grub_errno)
+ goto fail;
+
+ return data;
+
+ fail:
+ grub_free (data);
+ return 0;
+}
+
+
+static grub_err_t
+grub_ocfs2_label (grub_device_t device, char **label)
+{
+ struct grub_ocfs2_data *data;
+ grub_disk_t disk = device->disk;
+
+#ifndef GRUB_UTIL
+ grub_dl_ref (my_mod);
+#endif
+
+ data = grub_ocfs2_mount (disk);
+ if (data)
+ *label = grub_strndup (data->label, OCFS2_MAX_VOL_LABEL_LEN);
+ else
+ *label = 0;
+
+#ifndef GRUB_UTIL
+ grub_dl_unref (my_mod);
+#endif
+
+ grub_free (data);
+
+ return grub_errno;
+}
+
+
+static unsigned long
+grub_ocfs2_clusters_to_blocks (struct grub_ocfs2_data *data,
+ grub_uint32_t clusters)
+{
+ return (unsigned long) clusters << (data->clusterbits - data->blkbits);
+}
+
+
+static int
+grub_ocfs2_find_index (struct grub_ocfs2_data *data,
+ struct grub_ocfs2_extent_list *el, int block)
+{
+ struct grub_ocfs2_extent_rec *rec;
+ int index = 0;
+ int block_pos;
+ int block_highest;
+ grub_uint32_t cpos;
+ grub_uint32_t clusters;
+
+ if (!el->next_free_rec) {
+ grub_error (GRUB_ERR_FILE_READ_ERROR, "empty extent list");
+ return 0;
+ }
+
+ while (index < grub_le_to_cpu16(el->next_free_rec))
+ {
+ rec = &el->recs[index];
+
+ cpos = grub_le_to_cpu32(rec->cpos);
+ clusters = grub_le_to_cpu32(rec->clusters);
+
+ block_pos = grub_ocfs2_clusters_to_blocks (data, cpos);
+ block_highest = grub_ocfs2_clusters_to_blocks (data, cpos + clusters);
+
+ if (block >= block_pos && block < block_highest)
+ break;
+ index++;
+ }
+
+ if (index == grub_le_to_cpu16(el->next_free_rec))
+ {
+ grub_error (GRUB_ERR_FILE_READ_ERROR, "index not found in extent list");
+ return 0;
+ }
+
+ return index;
+}
+
+
+static int
+grub_ocfs2_read_block (grub_fshelp_node_t node, int fileblock)
+{
+ int i, physical;
+ unsigned long sector;
+ struct grub_ocfs2_data *data = node->data;
+ struct grub_ocfs2_inode *inode = node->inode;
+ struct grub_ocfs2_extent_block *eb = node->eb;
+ struct grub_ocfs2_extent_list *el;
+ struct grub_ocfs2_extent_rec *rec;
+
+ el = &inode->id2.list;
+ while (el->tree_depth)
+ {
+ i = grub_ocfs2_find_index (data, el, fileblock);
+ if (grub_errno)
+ return grub_errno;
+
+ rec = &el->recs[i];
+ sector = grub_ocfs2_blocks_to_sectors (data,
+ grub_le_to_cpu64(rec->blkno));
+ if (grub_disk_read (data->disk, sector, 0, 1 << data->blkbits,
+ (char *)eb))
+ return grub_errno;
+
+ if (grub_strncmp (eb->signature, OCFS2_EXTENT_BLOCK_SIGNATURE,
+ sizeof(OCFS2_EXTENT_BLOCK_SIGNATURE)))
+ {
+ grub_error (GRUB_ERR_FILE_READ_ERROR, "bad extent block");
+ return grub_errno;
+ }
+
+ el = &eb->list;
+ }
+
+ i = grub_ocfs2_find_index (data, el, fileblock);
+ if (grub_errno)
+ return grub_errno;
+
+ rec = &el->recs[i];
+
+ physical = grub_le_to_cpu64(rec->blkno) + fileblock;
+ physical -= grub_ocfs2_clusters_to_blocks(data, grub_le_to_cpu32(rec->cpos));
+
+ return physical;
+}
+
+
+/* Read LEN bytes from the file described by DATA starting with byte
+ POS. Return the amount of read bytes in READ. */
+static grub_ssize_t
+grub_ocfs2_read_file (grub_fshelp_node_t node,
+ void (*read_hook) (unsigned long sector,
+ unsigned offset, unsigned length),
+ int pos, unsigned int len, char *buf)
+{
+ return grub_fshelp_read_file (node->data->disk, node, read_hook,
+ pos, len, buf, grub_ocfs2_read_block,
+ grub_le_to_cpu64 (node->inode->size),
+ node->data->blkbits - GRUB_DISK_SECTOR_BITS);
+}
+
+
+static char *
+grub_ocfs2_read_symlink (grub_fshelp_node_t node)
+{
+ char *symlink;
+ struct grub_fshelp_node *diro = node;
+ grub_uint64_t inode_size;
+
+ if (!diro->inode_read)
+ {
+ grub_ocfs2_read_inode (diro->data, diro->ino, diro->inode);
+ if (grub_errno)
+ return 0;
+ }
+
+ if (!GRUB_ISLNK (grub_le_to_cpu16 (diro->inode->mode)))
+ {
+ grub_error (GRUB_ERR_BAD_FILE_TYPE, "inode is not a symlink");
+ return 0;
+ }
+
+ inode_size = grub_le_to_cpu64 (diro->inode->size);
+ symlink = grub_malloc (inode_size + 1);
+ if (!symlink)
+ return 0;
+
+ /* fast symlink */
+ if (!diro->inode->clusters)
+ {
+ grub_strncpy (symlink, diro->inode->id2.symlink, inode_size);
+ }
+ else
+ {
+ grub_ocfs2_read_file (diro, 0, 0, inode_size, symlink);
+ if (grub_errno)
+ {
+ grub_free (symlink);
+ return 0;
+ }
+ }
+
+ symlink[inode_size] = '\0';
+
+ return symlink;
+}
+
+
+static int
+grub_ocfs2_iterate_dir (grub_fshelp_node_t dir,
+ int NESTED_FUNC_ATTR
+ (*hook) (const char *filename,
+ enum grub_fshelp_filetype filetype,
+ grub_fshelp_node_t node))
+{
+ unsigned int fpos = 0;
+ struct grub_fshelp_node *diro = (struct grub_fshelp_node *) dir;
+
+ if (!diro->inode_read)
+ {
+ grub_ocfs2_read_inode (diro->data, diro->ino, diro->inode);
+ if (grub_errno)
+ return 0;
+ }
+
+ /* Search the file. */
+ while (fpos < grub_le_to_cpu64 (diro->inode->size))
+ {
+ struct grub_ocfs2_dir_entry dirent;
+
+ grub_ocfs2_read_file (diro, 0, fpos,
+ sizeof (struct grub_ocfs2_dir_entry),
+ (char *) &dirent);
+ if (grub_errno)
+ return 0;
+
+ if (dirent.name_len)
+ {
+ char filename[dirent.name_len + 1];
+ struct grub_fshelp_node *fdiro;
+ enum grub_fshelp_filetype type = GRUB_FSHELP_UNKNOWN;
+
+ grub_ocfs2_read_file (diro, 0,
+ fpos + sizeof (struct grub_ocfs2_dir_entry),
+ dirent.name_len, filename);
+ if (grub_errno)
+ return 0;
+
+ fdiro = grub_malloc (sizeof (struct grub_fshelp_node));
+ if (!fdiro)
+ return 0;
+
+ fdiro->data = diro->data;
+ fdiro->ino = grub_le_to_cpu64 (dirent.inode);
+ fdiro->inode = (struct grub_ocfs2_inode *) fdiro->inode_block;
+ fdiro->eb = (struct grub_ocfs2_extent_block *) fdiro->eb_block;
+ fdiro->inode_read = 0;
+
+ filename[dirent.name_len] = '\0';
+
+ if (dirent.file_type == OCFS2_FT_DIR)
+ type = GRUB_FSHELP_DIR;
+ else if (dirent.file_type == OCFS2_FT_SYMLINK)
+ type = GRUB_FSHELP_SYMLINK;
+ else if (dirent.file_type == OCFS2_FT_REG_FILE)
+ type = GRUB_FSHELP_REG;
+
+ if (hook (filename, type, fdiro))
+ return 1;
+ }
+ fpos += grub_le_to_cpu16 (dirent.rec_len);
+ }
+
+ return 0;
+}
+
+
+/* Open a file named NAME and initialize FILE. */
+static grub_err_t
+grub_ocfs2_open (struct grub_file *file, const char *name)
+{
+ struct grub_ocfs2_data *data;
+ struct grub_fshelp_node *fdiro = 0;
+
+#ifndef GRUB_UTIL
+ grub_dl_ref (my_mod);
+#endif
+
+ data = grub_ocfs2_mount (file->device->disk);
+ if (!data)
+ goto fail;
+
+ grub_fshelp_find_file (name, &data->diropen, &fdiro, grub_ocfs2_iterate_dir,
+ grub_ocfs2_read_symlink, GRUB_FSHELP_REG);
+ if (grub_errno)
+ goto fail;
+
+ if (!fdiro->inode_read)
+ {
+ grub_ocfs2_read_inode (data, fdiro->ino, fdiro->inode);
+ if (grub_errno)
+ goto fail;
+ }
+
+ grub_memcpy (data->diropen.inode, fdiro->inode, 1 << data->blkbits);
+ grub_free (fdiro);
+
+ file->size = grub_le_to_cpu64 (data->diropen.inode->size);
+ file->data = data;
+ file->offset = 0;
+
+ return 0;
+
+ fail:
+
+#ifndef GRUB_UTIL
+ grub_dl_unref (my_mod);
+#endif
+ return grub_errno;
+}
+
+
+static grub_err_t
+grub_ocfs2_close (grub_file_t file)
+{
+ grub_free (file->data);
+
+#ifndef GRUB_UTIL
+ grub_dl_unref (my_mod);
+#endif
+
+ return GRUB_ERR_NONE;
+}
+
+
+/* Read LEN bytes data from FILE into BUF. */
+static grub_ssize_t
+grub_ocfs2_read (grub_file_t file, char *buf, grub_ssize_t len)
+{
+ struct grub_ocfs2_data *data =
+ (struct grub_ocfs2_data *) file->data;
+
+ return grub_ocfs2_read_file (&data->diropen, file->read_hook,
+ file->offset, len, buf);
+}
+
+
+static grub_err_t
+grub_ocfs2_dir (grub_device_t device, const char *path,
+ int (*hook) (const char *filename, int dir))
+{
+ struct grub_ocfs2_data *data = 0;
+ struct grub_fshelp_node *fdiro = 0;
+
+ auto int NESTED_FUNC_ATTR iterate (const char *filename,
+ enum grub_fshelp_filetype filetype,
+ grub_fshelp_node_t node);
+
+ int NESTED_FUNC_ATTR iterate (const char *filename,
+ enum grub_fshelp_filetype filetype,
+ grub_fshelp_node_t node)
+ {
+ grub_free (node);
+
+ if (filetype == GRUB_FSHELP_DIR)
+ return hook (filename, 1);
+ else
+ return hook (filename, 0);
+
+ return 0;
+ }
+
+#ifndef GRUB_UTIL
+ grub_dl_ref (my_mod);
+#endif
+
+ data = grub_ocfs2_mount (device->disk);
+ if (!data)
+ goto fail;
+
+ grub_fshelp_find_file (path, &data->diropen, &fdiro, grub_ocfs2_iterate_dir,
+ grub_ocfs2_read_symlink, GRUB_FSHELP_DIR);
+ if (grub_errno)
+ goto fail;
+
+ grub_ocfs2_iterate_dir (fdiro, iterate);
+
+ fail:
+ if (fdiro != &data->diropen)
+ grub_free (fdiro);
+ grub_free (data);
+
+#ifndef GRUB_UTIL
+ grub_dl_unref (my_mod);
+#endif
+
+ return grub_errno;
+}
+
+\f
+
+static struct grub_fs grub_ocfs2_fs =
+ {
+ .name = "ocfs2",
+ .dir = grub_ocfs2_dir,
+ .open = grub_ocfs2_open,
+ .read = grub_ocfs2_read,
+ .close = grub_ocfs2_close,
+ .label = grub_ocfs2_label,
+ .next = 0
+ };
+
+#ifdef GRUB_UTIL
+void
+grub_ocfs2_init (void)
+{
+ grub_fs_register (&grub_ocfs2_fs);
+}
+
+void
+grub_ocfs2_fini (void)
+{
+ grub_fs_unregister (&grub_ocfs2_fs);
+}
+#else /* ! GRUB_UTIL */
+GRUB_MOD_INIT
+{
+ grub_fs_register (&grub_ocfs2_fs);
+ my_mod = mod;
+}
+
+GRUB_MOD_FINI
+{
+ grub_fs_unregister (&grub_ocfs2_fs);
+}
+#endif /* ! GRUB_UTIL */
diff -uprN --exclude='*~' --exclude=CVS --exclude=configure ../tmp/grub2/include/grub/fs.h ./include/grub/fs.h
--- ../tmp/grub2/include/grub/fs.h 2005-10-09 06:03:53.000000000 -0700
+++ ./include/grub/fs.h 2005-11-03 11:14:39.712707000 -0800
@@ -91,6 +91,8 @@ void grub_affs_init (void);
void grub_affs_fini (void);
void grub_sfs_init (void);
void grub_sfs_fini (void);
+void grub_ocfs2_init (void);
+void grub_ocfs2_fini (void);
void grub_iso9660_init (void);
#endif /* GRUB_UTIL */
diff -uprN --exclude='*~' --exclude=CVS --exclude=configure ../tmp/grub2/util/grub-emu.c ./util/grub-emu.c
--- ../tmp/grub2/util/grub-emu.c 2005-10-09 06:03:53.000000000 -0700
+++ ./util/grub-emu.c 2005-11-03 11:13:06.648652000 -0800
@@ -206,6 +206,7 @@ main (int argc, char *argv[])
grub_xfs_init ();
grub_sfs_init ();
grub_affs_init ();
+ grub_ocfs2_init ();
grub_ls_init ();
grub_boot_init ();
grub_cmp_init ();
@@ -237,6 +238,7 @@ main (int argc, char *argv[])
grub_loop_fini ();
grub_util_biosdisk_fini ();
grub_normal_fini ();
+ grub_ocfs2_fini ();
grub_affs_fini ();
grub_sfs_fini ();
grub_xfs_fini ();
diff -uprN --exclude='*~' --exclude=CVS --exclude=configure ../tmp/grub2/util/i386/pc/grub-probefs.c ./util/i386/pc/grub-probefs.c
--- ../tmp/grub2/util/i386/pc/grub-probefs.c 2005-10-19 16:17:09.000000000 -0700
+++ ./util/i386/pc/grub-probefs.c 2005-11-03 11:08:26.060717000 -0800
@@ -188,6 +188,7 @@ main (int argc, char *argv[])
grub_minix_init ();
grub_jfs_init ();
grub_xfs_init ();
+ grub_ocfs2_init ();
/* Do it. */
probe (path);
@@ -199,6 +200,7 @@ main (int argc, char *argv[])
grub_minix_fini ();
grub_jfs_fini ();
grub_xfs_fini ();
+ grub_ocfs2_fini ();
grub_pc_partition_map_fini ();
grub_util_biosdisk_fini ();
prev parent reply other threads:[~2005-11-04 1:17 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-03 22:15 OCFS2 support Mark Fasheh
2005-11-03 22:42 ` Marco Gerards
2005-11-03 23:19 ` Mark Fasheh
2005-11-03 23:43 ` Marco Gerards
2005-11-04 1:13 ` Mark Fasheh
2005-11-04 1:17 ` Mark Fasheh [this message]
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=20051104011714.GE28731@ca-server1.us.oracle.com \
--to=mark.fasheh@oracle.com \
--cc=grub-devel@gnu.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 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.