[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: OCFS2 support
From: |
Mark Fasheh |
Subject: |
Re: OCFS2 support |
Date: |
Thu, 3 Nov 2005 17:17:14 -0800 |
User-agent: |
Mutt/1.5.11 |
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
address@hidden
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 <address@hidden>
+
+ 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 <address@hidden>
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
+
+
+
+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;
+}
+
+
+
+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 ();