Commit graph

380 commits

Author SHA1 Message Date
Vladimir 'phcoder' Serbinenko
076e7c0fda Merge common RAID and LVM logic to an abstract diskfilter.
Add LDM support using the same framework.

	* Makefile.util.def (libgrubkern): Add grub-core/disk/ldm.c,
	grub-core/disk/diskfilter.c and grub-core/partmap/gpt.c.
	(libgrubmods): Remove grub-core/disk/raid.c and
	grub-core/partmap/gpt.c.
	* grub-core/Makefile.core.def (ldm): New module.
	(raid): Renamed to diskfilter. All users updated.
	* grub-core/disk/raid.c: Moved to ...
	* grub-core/disk/diskfilter.c: ... here.
	* grub-core/disk/diskfilter.c: Rename grub_raid_ to grub_diskfilter_.
	(lv_num): New var.
	(find_array): Renamed to ...
	(find_lv): ... this. Support multi-LV. Skip nameless LVs
	(grub_is_array_readable): Renamed to ...
	(grub_is_lv_readable): ... this. Support multinode hierarchy.
	(insert_array): New argument id.
	(is_node_readable): New function.
	(scan_device): Rename to ...
	(scan_disk): .. this. Restrict to one disk.
	(scan_devices): New function.
	(grub_diskfilter_iterate): Support multi-LV.
	Skip invisible and nameless LVs.
	(grub_diskfilter_memberlist): Support multi-LV.
	(grub_diskfilter_read_node): New function.
	(grub_raid_read): Most of logic moved to ...
	(read_segment): ... here
	(read_lv): New function.
	(grub_diskfilter_get_vg_by_uuid): New function.
	(grub_diskfilter_make_raid): Likewise.
	* grub-core/disk/ldm.c: New file.
	* grub-core/disk/lvm.c (vg_list): Removed.
	(lv_count): Likewise.
	(scan_depth): Likewise.
	(is_lv_readable): Likewise.
	(grub_lvm_getvalue): Advance pointer past the number.
	(find_lv): Removed.
	(do_lvm_scan): Refactored into ...
	(grub_lvm_detect): ... this. Support raid.
	(grub_lvm_iterate): Removed.
	(grub_lvm_memberlist): Likewise.
	(grub_lvm_open): Likewise.
	(grub_lvm_close): Likewise.
	(read_lv): Likewise.
	(read_node): Likewise.
	(is_node_readable): Likewise.
	(is_lv_readable): Likewise.
	(grub_lvm_read): Likewise.
	(grub_lvm_write): Likewise.
	(grub_lvm_dev): Use diskfilter
	(GRUB_MOD_INIT): Likewise.
	(GRUB_MOD_FINI): Likewise.
	* grub-core/disk/dmraid_nvidia.c (grub_dmraid_nv_detect): Use
	new interface.
	* grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Likewise.
	* grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Likewise.
	* grub-core/disk/raid5_recover.c (grub_raid5_recover): Use
	grub_diskfilter_read_node.
	Fix a bug with xor.
	* grub-core/disk/raid6_recover.c (grub_raid6_recover): Use
	grub_diskfilter_read_node.
	Support GRUB_RAID_LAYOUT_MUL_FROM_POS.
	* grub-core/kern/disk.c (grub_disk_dev_list): Make global.
	(grub_disk_dev_iterate): Move from here...
	* include/grub/disk.h (grub_disk_dev_iterate): ... to here. Inlined.
	* grub-core/kern/emu/hostdisk.c (grub_hostdisk_find_partition_start):
	Make global.
	(grub_hostdisk_find_partition_start): Likewise.
	(grub_hostdisk_os_dev_to_grub_drive): New function.
	(grub_util_biosdisk_get_osdev): Check that disk is biosdisk.
	* grub-core/kern/emu/hostdisk.c (make_device_name): Move to ...
	* util/getroot.c (make_device_name): ... here.
	* grub-core/kern/emu/hostdisk.c (grub_util_get_dm_node_linear_info):
	Move to ...
	* util/getroot.c (grub_util_get_dm_node_linear_info): ...here.
	* grub-core/kern/emu/hostdisk.c
	(convert_system_partition_to_system_disk): Move to ...
	* util/getroot.c (convert_system_partition_to_system_disk): ...here.
	* grub-core/kern/emu/hostdisk.c (device_is_wholedisk): Move to ...
	* util/getroot.c (device_is_wholedisk): ... here.
	* grub-core/kern/emu/hostdisk.c (find_system_device): Move to ...
	* util/getroot.c (find_system_device): ... here.
	* grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_is_present):
	Move to ...
	* util/getroot.c (grub_util_biosdisk_is_present): ...here.
	* grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_get_grub_dev):
	Move to ...
	* util/getroot.c (grub_util_biosdisk_get_grub_dev): ... here.
	Handle LDM.
	* grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_is_floppy):
	Move to ...
	* util/getroot.c (grub_util_biosdisk_is_floppy): ... here.
	* grub-core/partmap/gpt.c (grub_gpt_partition_map_iterate): Made global.
	* include/grub/disk.h (grub_disk_dev_id): Replaced RAID and LVM with
	DISKFILTER.
	* include/grub/raid.h: Renamed to ...
	* include/grub/diskfilter.h: ... this.
	* include/grub/diskfilter.h: Rename grub_raid_* to grub_diskfilter_*
	(GRUB_RAID_LAYOUT_*): Make into array.
	(GRUB_RAID_LAYOUT_MUL_FROM_POS): New value.
	(grub_diskfilter_vg): New struct.
	(grub_diskfilter_pv_id): Likewise.
	(grub_raid_member): Removed.
	(grub_raid_array): Likewise.
	(grub_diskfilter_pv): New struct.
	(grub_diskfilter_lv): Likewise.
	(grub_diskfilter_segment): Likewise.
	(grub_diskfilter_node): Likewise.
	(grub_diskfilter_get_vg_by_uuid): New proto.
	(grub_raid_register): Inline.
	(grub_diskfilter_unregister): Likewise.
	(grub_diskfilter_make_raid): New proto.
	(grub_diskfilter_vg_register): Likewise.
	(grub_diskfilter_read_node): Likewise.
	(grub_diskfilter_get_pv_from_disk) [GRUB_UTIL]: Likewise.
	* include/grub/emu/hostdisk.h (grub_util_get_ldm): New proto.
	(grub_util_is_ldm): Likewise.
	(grub_util_ldm_embed) [GRUB_UTIL]: Likewise.
	(grub_hostdisk_find_partition_start): Likewise.
	(grub_hostdisk_os_dev_to_grub_drive): Likewise.
	* include/grub/gpt_partition.h (GRUB_GPT_PARTITION_TYPE_LDM):
	New definition.
	(grub_gpt_partition_map_iterate): New proto.
	* include/grub/lvm.h (grub_lvm_vg): Removed.
	(grub_lvm_pv): Likewise.
	(grub_lvm_lv): Likewise.
	(grub_lvm_segment): Likewise.
	(grub_lvm_node): Likewise.
	* util/getroot.c [...]
	* util/grub-probe.c (probe_raid_level): Handle diskfilter.
	(probe_abstraction): Likewise.
	* util/grub-setup.c (setup): Remove must_embed. Support LDM.
	(main): Remove dead logic.
2012-01-29 14:28:01 +01:00
Vladimir 'phcoder' Serbinenko
8a7f9b9c50 Simplify root device discover and don't fail when trying to open
incorrect devices.

	* grub-core/disk/efi/efidisk.c (get_diskname_from_path_real): New
	function.
	(get_diskname_from_path): Likewise.
	(grub_efidisk_get_device_name): Use get_diskname_from_path instead
	of iterating.
2012-01-28 13:26:20 +01:00
Vladimir 'phcoder' Serbinenko
7626111087 IEEE1275 disk write support.
* grub-core/kern/ieee1275/ieee1275.c (grub_ieee1275_write): Make buffer
	const void *.
	* include/grub/ieee1275/ieee1275.h (grub_ieee1275_write): Likewise.
	* grub-core/disk/ieee1275/ofdisk.c (grub_ofdisk_read): Move open
	and seek loginc to ...
	(grub_ofdisk_prepare): ... here.
	(grub_ofdisk_write): Implement.
2012-01-25 18:32:08 +01:00
Vladimir 'phcoder' Serbinenko
fc36d6038b ARC disk write support.
* grub-core/disk/arc/arcdisk.c (handle_writable): New var.
	(reopen): New argument writable. All users updated.
	Handle required access mode.
	(grub_arcdisk_write): Implement.
	* include/grub/arc/arc.h (grub_arc_file_access): New enum.
	(grub_arc_firmware_vector): Make buffer to write a const buffer.
2012-01-25 16:13:34 +01:00
Vladimir 'phcoder' Serbinenko
87edb8940a Replace single-linked with double-linked lists. It results in more
compact and more efficient code.

	* grub-core/kern/list.c (grub_list_push): Moved from here ...
	* include/grub/list.h (grub_list_push): ... to here. Set prev.
	(grub_list_remove): Moved from here ...
	* include/grub/list.h (grub_list_remove): ... here. Use and set prev.
	(grub_prio_list_insert): Set prev.
	* include/grub/list.h (grub_list): Add prev. All users updated.
2012-01-24 13:31:12 +01:00
Vladimir 'phcoder' Serbinenko
4d1e2bc9e3 * grub-core/disk/dmraid_nvidia.c (grub_dmraid_nv_detect): Skip
disks with unknown size.
	* grub-core/disk/raid.c (scan_devices): Allow disks with unknown sizes.
2012-01-14 11:37:34 +01:00
Vladimir 'phcoder' Serbinenko
9197b0ade5 * grub-core/disk/ieee1275/ofdisk.c (grub_ofdisk_iterate): Add ieee1275/
prefix.
	(grub_ofdisk_open): Check and discard ieee1275 prefix.
	* grub-core/kern/ieee1275/openfw.c (grub_ieee1275_encode_devname):
	Add ieee1275 prefix.
2011-12-24 02:40:18 +01:00
Vladimir 'phcoder' Serbinenko
ca74c50c0b merge mainline into hints 2011-12-23 18:46:06 +01:00
Vladimir 'phcoder' Serbinenko
b70b6d1107 * grub-core/disk/pata.c (grub_pata_pio_read): Handle unaligned buffer.
(grub_pata_pio_write): Likewise.
2011-12-13 15:55:36 +01:00
Vladimir 'phcoder' Serbinenko
02a2bf8384 Add noreturn attributes and remove unreachable code.
* grub-core/bus/cs5536.c (grub_cs5536_smbus_wait): Remove unreachable
	code.
	* grub-core/commands/halt.c (grub_cmd_halt): Remove unreachable
	code. Mark as noreturn.
	* grub-core/commands/minicmd.c (grub_mini_cmd_exit): Likewise.
	* grub-core/commands/reboot.c (grub_cmd_reboot): Likewise.
	* grub-core/disk/efi/efidisk.c (grub_efidisk_get_device_name): Remove
	unreachable code.
	* grub-core/kern/main.c (grub_main): Mark as noreturn.
	* grub-core/kern/rescue_reader.c (grub_rescue_run): Likewise.
	* grub-core/lib/posix_wrap/stdlib.h (abort): Likewise.
	* grub-core/normal/menu.c (run_menu): Remove unreachable code.
	* include/grub/kernel.h (grub_main): Mark as noreturn.
	* include/grub/reader.h (grub_rescue_run): Likewise.
2011-12-13 15:13:51 +01:00
Vladimir 'phcoder' Serbinenko
6166442083 * grub-core/commands/hdparm.c (le16_to_char): Make src and dest uint16 *
to ensure alignment.
	(grub_hdparm_print_identify): Make argument uint16 * to ensure
	alignment. Ensure tmp alignment.
	(grub_cmd_hdparm): Ensure buf alignment.
	* grub-core/disk/ata.c (grub_ata_strncpy): Make src and dest uint16 *
	to ensure alignment.
	(grub_ata_dumpinfo): Ensure text alignment.
	(grub_atapi_identify): Preserve alignment invariant.
	(grub_ata_identify): Likewise. Use grub_get_unaligned32 when necessary.
2011-12-13 14:57:46 +01:00
Vladimir 'phcoder' Serbinenko
564840dc3d * grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Change pointer
arithmetic to conserve alignment invariants.
2011-12-13 02:13:44 +01:00
Vladimir 'phcoder' Serbinenko
496bd07446 Unify and improve RAID and crypto xor.
* grub-core/disk/raid.c (grub_raid_block_xor): Removed. All users
	changed to grub_crypto_xor
	* grub-core/lib/crypto.c (grub_crypto_xor): Moved from here ...
	* include/grub/crypto.h (grub_crypto_xor): ... here. Inlined.
	Use bigger types when possible.
2011-12-13 01:26:53 +01:00
Vladimir 'phcoder' Serbinenko
ef6e433586 * grub-core/disk/raid.c (scan_devices): Fix condition. 2011-12-13 01:19:47 +01:00
Vladimir 'phcoder' Serbinenko
74dbd24466 * include/grub/loader.h (grub_loader_register_preboot_hook):
Use struct preboot * and not void * for handle. All users updated.
	(grub_loader_unregister_preboot_hook): Likewise.
2011-12-13 00:28:14 +01:00
Vladimir 'phcoder' Serbinenko
48d6e45653 * grub-core/disk/ahci.c (grub_ahci_pciinit): Fix compat condition. 2011-12-12 22:20:14 +01:00
Vladimir 'phcoder' Serbinenko
bf3a385792 Add missing const qualifiers.
* grub-core/commands/i386/pc/sendkey.c (keysym): Add missing const.
	* grub-core/commands/lspci.c (grub_pci_classname): Likewise.
	* grub-core/commands/menuentry.c (hotkey_aliases): Likewise.
	* grub-core/disk/lvm.c (grub_lvm_getvalue): Likewise.
	(grub_lvm_check_flag): Likewise.
	* grub-core/efiemu/i386/coredetect.c
	(grub_efiemu_get_default_core_name): Likewise
	* grub-core/efiemu/main.c (grub_efiemu_autocore): Likewise.
	* grub-core/fs/hfsplus.c (grub_hfsplus_catkey_internal): Likewise.
	* grub-core/fs/ntfs.c (fixup): Likewise.
	* grub-core/fs/xfs.c (grub_xfs_iterate_dir): Likewise.
	* grub-core/fs/zfs/zfs.c (decomp_entry): Likewise.
	(fzap_lookup): Likewise.
	(zap_lookup): Likewise.
	* grub-core/gnulib/regcomp.c (init_dfa): Likewise.
	* grub-core/lib/legacy_parse.c (check_option): Likewise.
	* grub-core/lib/posix_wrap/langinfo.h (nl_langinfo): Likewise.
	* grub-core/loader/i386/bsd.c (grub_bsd_add_meta): Likewise.
	(grub_freebsd_add_meta_module): Likewise.
	(grub_cmd_freebsd_module): Likewise.
	* grub-core/loader/i386/xnu.c (tbl_alias): Likewise.
	* grub-core/loader/xnu.c (grub_xnu_register_memory): Likewise.
	(grub_xnu_writetree_get_size): Likewise.
	(grub_xnu_writetree_toheap_real): Likewise.
	(grub_xnu_find_key): Likewise.
	(grub_xnu_create_key): Likewise.
	(grub_xnu_create_value): Likewise.
	(grub_xnu_register_memory): Likewise.
	(grub_xnu_check_os_bundle_required): Likewise.
	(grub_xnu_scan_dir_for_kexts): Likewise.
	(grub_xnu_load_kext_from_dir): Likewise.
	* grub-core/normal/color.c (color_list): Likewise.
	* grub-core/normal/completion.c (current_word): Likewise.
	* grub-core/normal/menu_entry.c (insert_string): Likewise.
	* grub-core/term/serial.c (grub_serial_find): Likewise.
	* grub-core/term/tparm.c (grub_terminfo_tparm): Likewise.
	* include/grub/efiemu/efiemu.h (grub_efiemu_get_default_core_name):
	Likewise.
	* include/grub/i386/bsd.h (grub_bsd_add_meta): Likewise.
	(grub_freebsd_add_meta_module): Likewise.
	* include/grub/lib/arg.h (grub_arg_option): Likewise.
	* include/grub/net.h (grub_net_card_driver): Likewise.
	(grub_net_card): Likewise.
	(grub_net_app_protocol): Likewise.
	* include/grub/parttool.h (grub_parttool_argdesc): Likewise.
	* include/grub/serial.h (grub_serial_find): Likewise.
	* include/grub/tparm.h (grub_terminfo_tparm): Likewise.
	* include/grub/xnu.h (grub_xnu_create_key): Likewise.
	(grub_xnu_create_value): Likewise.
	(grub_xnu_find_key): Likewise.
	(grub_xnu_scan_dir_for_kexts): Likewise.
	(grub_xnu_load_kext_from_dir): Likewise.

	* include/grub/zfs/zio_checksum.h (zio_checksum_t): Moved from here ...
	* grub-core/fs/zfs/zfs.c (zio_checksum_t): ...here.
	* include/grub/zfs/zio_checksum.h (zio_checksum_info):
	Moved from here ...
	* grub-core/fs/zfs/zfs.c (zio_checksum_info): ... here. Added missing const.
2011-11-30 16:20:13 +01:00
Vladimir 'phcoder' Serbinenko
0cddeb0360 Add copyright year. 2011-11-12 23:16:48 +01:00
Vladimir 'phcoder' Serbinenko
5fbdac149b Defer multiboot device parsing until we're in compressed part.
* grub-core/boot/i386/pc/lnxboot.S: Remove setting dos_part and
	bsd_part. setdevice has fallen into disuse.
	* grub-core/boot/i386/pc/startup_raw.S (dos_part): Removed.
	(bsd_part): Likewise.
	(boot_dev): New variable.
	(multiboot_trampoline): Don't parse multiboot device.
	Pass multiboot device in %edx.
	* grub-core/disk/i386/pc/biosdisk.c (GRUB_MOD_INIT): Parse
	grub_boot_device.
	* grub-core/kern/i386/pc/init.c (grub_machine_get_bootlocation):
	Likewise.
	* grub-core/kern/i386/pc/startup.S: Save edx.
	(grub_boot_drive): Removed.
	(grub_install_dos_part): Likewise.
	(grub_install_bsd_part): Likewise.
	(grub_boot_device): New variable.
	* include/grub/i386/pc/kernel.h (grub_install_dos_part): Removed.
	(grub_install_bsd_part): Likewise.
	(grub_boot_drive): Likewise.
	(grub_boot_device): New variable.
	* include/grub/offsets.h (GRUB_KERNEL_I386_PC_INSTALL_DOS_PART):
	Removed.
	(GRUB_KERNEL_I386_PC_INSTALL_BSD_PART): Likewise.
	(GRUB_KERNEL_I386_PC_REED_SOLOMON_REDUNDANCY): Moved lower.
	(GRUB_KERNEL_MACHINE_INSTALL_BSD_PART): Removed.
	(GRUB_KERNEL_MACHINE_INSTALL_DOS_PART): Likewise.
	* util/grub-install.in: Remove redundant condition.
2011-11-12 21:12:52 +01:00
Vladimir 'phcoder' Serbinenko
6e0632e28c * grub-core/commands/acpihalt.c: Gettextized.
* grub-core/commands/cacheinfo.c: Likewise.
	* grub-core/commands/cmp.c: Likewise.
	* grub-core/commands/efi/loadbios.c: Likewise.
	* grub-core/commands/gptsync.c: Likewise.
	* grub-core/commands/ieee1275/suspend.c: Likewise.
	* grub-core/commands/legacycfg.c: Likewise.
	* grub-core/commands/memrw.c: Likewise.
	* grub-core/commands/minicmd.c: Likewise.
	* grub-core/commands/parttool.c: Likewise.
	* grub-core/commands/time.c: Likewise.
	* grub-core/commands/videoinfo.c: Likewise.
	* grub-core/disk/geli.c: Likewise.
	* grub-core/disk/i386/pc/biosdisk.c: Likewise.
	* grub-core/disk/luks.c: Likewise.
	* grub-core/disk/lvm.c: Likewise.
	* grub-core/font/font_cmd.c: Likewise.
	* grub-core/fs/zfs/zfscrypt.c: Likewise.
	* grub-core/fs/zfs/zfsinfo.c: Likewise.
	* grub-core/gfxmenu/view.c: Likewise.
	* grub-core/kern/emu/hostdisk.c: Likewise.
	* grub-core/kern/emu/main.c: Likewise.
	* grub-core/kern/emu/misc.c: Likewise.
	* grub-core/kern/emu/mm.c: Likewise.
	* grub-core/kern/mips/arc/init.c: Likewise.
	* grub-core/kern/mips/loongson/init.c: Likewise.
	* grub-core/kern/partition.c: Likewise.
	* grub-core/lib/i386/halt.c: Likewise.
	* grub-core/lib/mips/arc/reboot.c: Likewise.
	* grub-core/lib/mips/loongson/reboot.c: Likewise.
	* grub-core/loader/i386/pc/chainloader.c: Likewise.
	* grub-core/loader/i386/xnu.c: Likewise.
	* grub-core/loader/multiboot.c: Likewise.
	* grub-core/net/bootp.c: Likewise.
	* grub-core/net/net.c: Likewise.
	* grub-core/normal/term.c: Likewise.
	* grub-core/partmap/bsdlabel.c: Likewise.
	* grub-core/parttool/msdospart.c: Likewise.
	* grub-core/term/gfxterm.c: Likewise.
	* grub-core/term/terminfo.c: Likewise.
	* grub-core/video/i386/pc/vbe.c: Likewise.
	* util/grub-menulst2cfg.c: Likewise.
	* util/grub-mkdevicemap.c: Likewise.
	* util/grub-mklayout.c: Likewise.
	* util/grub-mkrelpath.c: Likewise.
	* util/grub-script-check.c: Likewise.
	* util/ieee1275/grub-ofpathname.c: Likewise.
	* util/resolve.c: Likewise.
2011-11-11 21:44:56 +01:00
Vladimir 'phcoder' Serbinenko
27610c3836 Fix FreeBSD compilation.
* grub-core/disk/geli.c (GRUB_MD_SHA256) [GRUB_UTIL]: Redefine in a way
	to avoid circular dependency.
	(GRUB_MD_SHA512) [GRUB_UTIL]: Likewise.
	* util/getroot.c (grub_util_follow_gpart_up): Move from here...
	* grub-core/kern/emu/hostdisk.c (+grub_util_follow_gpart_up): ... here.
2011-11-08 19:34:19 +01:00
Vladimir 'phcoder' Serbinenko
11ee4389e2 Use a power of generator representation of GF(256) multiplication group
to save space time and complexity.

	* grub-core/disk/raid6_recover.c (raid6_table1): Removed.
	(raid6_table2): Likewise.
	(powx): New array.
	(powx_inv): Likewise.
	(poly): New const.
	(grub_raid_block_mul): Replace with ...
	(grub_raid_block_mulx): ...this.
	(grub_raid6_init_table): Rewritten.
	(grub_raid6_recover): Use power of generator representation.
2011-11-04 13:27:50 +01:00
Vladimir 'phcoder' Serbinenko
09e2763fb1 * grub-core/disk/raid6_recover.c (grub_raid6_recover): Get start_sector
for the right device.
2011-11-04 13:22:38 +01:00
Vladimir 'phcoder' Serbinenko
dbd3a32e43 * grub-core/disk/raid.c (scan_devices): Don't derference NULL on whole
disk.
	* grub-core/disk/lvm.c (do_lvm_scan): Likewise.
2011-11-04 13:15:29 +01:00
Vladimir 'phcoder' Serbinenko
6563f63dfd * grub-core/disk/raid.c (scan_devices): Check partition.
* grub-core/disk/lvm.c (do_lvm_scan): Likewise.
2011-10-28 15:52:15 +02:00
Vladimir 'phcoder' Serbinenko
39705fadd7 Replace grub_module_iterate with FOR_MODULES.
* grub-core/disk/memdisk.c (GRUB_MOD_INIT): Switched to new interface.
	* grub-core/kern/efi/efi.c (grub_arch_modules_addr): Renamed to...
	(grub_efi_modules_addr): ...this.
	* grub-core/kern/efi/init.c (grub_modbase): New variable.
	(grub_efi_init): Set grub_modbase.
	* grub-core/kern/emu/main.c (grub_arch_modules_addr): Removed.
	(grub_modbase): New variable.
	* grub-core/kern/i386/coreboot/init.c (grub_arch_modules_addr): Removed.
	(grub_modbase): New variable.
	(grub_machine_init): Set grub_modbase.
	* grub-core/kern/i386/pc/init.c (grub_arch_modules_addr): Removed.
	(grub_modbase): New variable.
	(grub_machine_init): Set grub_modbase.
	* grub-core/kern/ieee1275/init.c (grub_arch_modules_addr): Removed.
	(grub_modbase): New variable.
	(grub_machine_init): Set grub_modbase.
	* grub-core/kern/main.c (grub_module_iterate): Remove.
	(grub_modules_get_end): Use grub_modbase.
	(grub_load_modules): Use FOR_MODULES.
	(grub_load_config): Likewise.
	* grub-core/kern/mips/arc/init.c (grub_arch_modules_addr): Removed.
	(grub_modbase): New variable.
	(grub_machine_init): Set grub_modbase.
	* grub-core/kern/mips/loongson/init.c (grub_arch_modules_addr): Removed.
	(grub_modbase): New variable.
	(grub_machine_init): Set grub_modbase.
	* grub-core/kern/mips/qemu_mips/init.c (grub_arch_modules_addr):
	Removed.
	(grub_modbase): New variable.
	(grub_machine_init): Set grub_modbase.
	* include/grub/efi/efi.h (grub_efi_modules_addr): New declaration.
	* include/grub/kernel.h (grub_arch_modules_addr): Removed.
	(grub_module_iterate): Likewise.
	(grub_modbase): New variable declaration.
	(FOR_MODULES): New macro.
2011-10-16 15:23:29 +02:00
Vladimir 'phcoder' Serbinenko
6795300e7f Support ATA disks with 4K sectors.
* include/grub/ata.h (grub_ata): New member log_sector_size.
	* grub-core/disk/ata.c (grub_ata_dumpinfo): Show sector size.
	(grub_ata_identify): Read sector size.
	(grub_ata_readwrite): Use log_sector_size rather than hardcoded value.
2011-07-25 08:14:34 +02:00
Vladimir 'phcoder' Serbinenko
583168a216 * grub-core/disk/pata.c (grub_pata_readwrite): Add missing wait. 2011-07-23 18:18:14 +02:00
Vladimir 'phcoder' Serbinenko
c4edd54832 * grub-core/disk/efi/efidisk.c (grub_efidisk_get_device_name): Fix
incorrect memory usage.
2011-07-10 15:33:57 +02:00
Vladimir 'phcoder' Serbinenko
cd8fe79a59 Fix compilation on GNU/Linux.
* grub-core/kern/emu/getroot.c (grub_util_pull_device) [!FreeBSD]:
	Disable geli.
	(grub_util_get_grub_dev) [!FreeBSD]: Likewise.
	(grub_util_pull_device) [HAVE_DEVICE_MAPPER]: Fix const and func name.
	* grub-core/disk/cryptodisk.c (grub_cryptodisk_open): Fix proto.
2011-07-08 03:59:05 +02:00
Vladimir Serbinenko
a251b71915 LUKS and GELI support.
* Makefile.util.def (libgrubkern.a): Add grub-core/lib/crypto.c,
	grub-core/disk/luks.c, grub-core/disk/geli.c,
	grub-core/disk/cryptodisk.c, grub-core/disk/AFSplitter.c,
	grub-core/lib/pbkdf2.c, grub-core/commands/extcmd.c,
	grub-core/lib/arg.c.
	(libgrubmods.a): Remove gcrypts cflags and cppflags.
	Remove grub-core/commands/extcmd.c, grub-core/lib/arg.c,
	grub-core/lib/crypto.c, grub-core/lib/libgcrypt-grub/cipher/sha512.c,
	grub-core/lib/libgcrypt-grub/cipher/crc.c and grub-core/lib/pbkdf2.c.
	(grub-bin2h): Add libgcry.a.
	(grub-mkimage): Likewise.
	(grub-mkrelpath): Likewise.
	(grub-script-check): Likewise.
	(grub-editenv): Likewise.
	(grub-mkpasswd-pbkdf2): Likewise.
	(grub-pe2elf): Likewise.
	(grub-fstest): Likewise.
	(grub-mkfont): Likewise.
	(grub-mkdevicemap): Likewise.
	(grub-probe): Likewise.
	(grub-ofpath): Likewise.
	(grub-mklayout): Likewise.
	(example_unit_test): Likewise.
	(grub-menulst2cfg): Likewise.
	* autogen.sh (UTIL_DEFS): Add Makefile.utilgcry.def.
	* grub-core/Makefile.core.def (cryptodisk): New module.
	(luks): Likewise.
	(geli): Likewise.
	* grub-core/disk/AFSplitter.c: New file.
	* grub-core/disk/cryptodisk.c: Likewise.
	* grub-core/disk/geli.c: Likewise.
	* grub-core/disk/luks.c: Likewise.
	* grub-core/kern/emu/getroot.c (get_dm_uuid): New function based on
	grub_util_is_lvm.
	(grub_util_get_dm_abstraction): New function.
	(grub_util_follow_gpart_up): Likewise.
	(grub_util_get_geom_abstraction): Likewise.
	(grub_util_get_dev_abstraction): Use new functions.
	(grub_util_pull_device): Pull GELI and LUKS.
	(grub_util_get_grub_dev): Handle LUKS and GELI.
	* grub-core/kern/emu/hostdisk.c (grub_util_get_fd_sectors): New function.
	(grub_util_biosdisk_open): Use grub_util_get_fd_sectors.
	(follow_geom_up): Removed.
	(grub_util_fd_seek): New function.
	(open_device): Use grub_util_fd_seek.
	(nread): Rename to ..
	(grub_util_fd_read): ... this. All users updated.
	* grub-core/lib/crypto.c (grub_crypto_ecb_decrypt): A better prototype.
	(grub_crypto_cbc_decrypt): Likewise.
	(grub_crypto_hmac_write): Likewise.
	(grub_crypto_hmac_buffer): Likewise.
	(grub_password_get): Extend to util.
	* include/grub/crypto.h (gcry_cipher_spec) [GRUB_UTIL]:
	New member modname.
	(gcry_md_spec) [GRUB_UTIL]: Likewise.
	* include/grub/cryptodisk.h: New file.
	* include/grub/disk.h (grub_disk_dev_id): Rename LUKS to CRYPTODISK.
	* include/grub/emu/getroot.h (grub_dev_abstraction_types): Add
	LUKS and GELI.
	(grub_util_follow_gpart_up): New proto.
	* include/grub/emu/hostdisk.h (grub_util_fd_seek): Likewise.
	(grub_util_fd_read): Likewise.
	(grub_cryptodisk_cheat_mount): Likewise.
	(grub_util_cryptodisk_print_uuid): Likewise.
	(grub_util_get_fd_sectors): Likewise.
	* util/grub-fstest.c (mount_crypt): New var.
	(fstest): Mount crypto if requested.
	(options): New option -C.
	(argp_parser): Parse -C.
	(main): Init and fini gcry.
	* util/grub-install.in: Support cryptodisk install.
	* util/grub-mkconfig.in: Export GRUB_ENABLE_CRYPTODISK.
	* util/grub-mkconfig_lib.in (is_path_readable_by_grub): Support
	cryptodisk.
	(prepare_grub_to_access_device): Likewise.
	* util/grub-mkpasswd-pbkdf2.c (main): Use grub_password_get.
	* util/grub-probe.c (probe_partmap): Support cryptodisk UUID probe.
	(probe_cryptodisk_uuid): New function.
	(probe_abstraction): Likewise.
	(probe): Use new functions.
	* util/import_gcry.py: Create Makefile.utilgcry.def.
	Add modname member.

	Also-By: Michael Gorven <michael@gorven.za.net>

	Also-By: Clemens Fruhwirth <clemens@endorphin.org>
2011-07-07 23:52:58 +02:00
Vladimir 'phcoder' Serbinenko
9bfdcbbc7d Lazy device scanning.
* Makefile.util.def (libgrubkern.a): Add grub-core/kern/emu/raid.c.
	(grub-setup): Remove util/raid.c.
	* grub-core/Makefile.core.def (kernel): Add kern/emu/raid.c on emu.
	* grub-core/disk/lvm.c (scan_depth): New variable.
	(grub_lvm_iterate): Rescan if necessary.
	(find_lv): New function based on grub_lvm_open.
	(grub_lvm_open): Use find_lv. Rescan on error.
	(is_node_readable): New function.
	(is_lv_readable): Likewise.
	(grub_lvm_scan_device): Skip already found disks.
	(do_lvm_scan): New function. Move grub_lvm_scan_device inside of it.
	Stop if searched device is found and readable.
	* grub-core/disk/raid.c (inscnt): New variable.
	(scan_depth): Likewise.
	(scan_devices): New function based on grub_raid_register. Abort if
	looked for device is found.
	(grub_raid_iterate): Rescan if needed.
	(find_array): NEw function based on -grub_raid_open.
	(grub_raid_open): Use find_array and rescan.
	(insert_array): Set became_readable_at.
	* grub-core/kern/disk.c (grub_disk_dev_iterate): Iterate though "pull.
	* grub-core/kern/emu/getroot.c (grub_util_open_dm) [HAVE_DEVICE_MAPPER]:
	New function.
	(grub_util_is_lvm) [HAVE_DEVICE_MAPPER]: Use grub_util_open_dm.
	(grub_util_pull_device): New function.
	(grub_util_get_grub_dev): Call grub_util_pull_device.
	* util/raid.c: Moved to ..
	* grub-core/kern/emu/raid.c: ... here.
	(grub_util_raid_getmembers): New parameter "bootable".
	All users updated. Support 1.x.
	* include/grub/ata.h (grub_ata_dev): Change iterate prototype.
	All users updated.
	* include/grub/disk.h (grub_disk_pull_t): New enum.
	(grub_disk_dev): Change iterate prototype.
	All users updated.
	* include/grub/emu/getroot.h (grub_util_raid_getmembers) [__linux__]:
	New proto.
	* include/grub/emu/hostdisk.h (grub_util_pull_device): Likewise.
	* include/grub/lvm.h (grub_lvm_lv): New members fullname and compatname.
	* include/grub/raid.h (grub_raid_array): New member became_readable_at.
	* include/grub/scsi.h (grub_scsi_dev): Change iterate prototype.
	All users updated.
	* include/grub/util/raid.h: Removed.
2011-07-07 23:21:59 +02:00
Vladimir 'phcoder' Serbinenko
0044d1db2e Simplify disk opening 2011-07-07 21:46:25 +02:00
Vladimir 'phcoder' Serbinenko
00542307eb merge mainline into lazy 2011-07-07 12:21:53 +02:00
Vladimir 'phcoder' Serbinenko
c97dbbf2f2 Fix a memory leak 2011-07-06 17:40:24 +02:00
Vladimir 'phcoder' Serbinenko
03a0046581 merge mainline into net 2011-07-02 18:52:50 +02:00
Vladimir 'phcoder' Serbinenko
cae730b452 Automatically determine prefix when netbooted on EFI 2011-07-02 16:56:35 +02:00
Vladimir 'phcoder' Serbinenko
574618a2e9 unify prefix handling across platforms 2011-07-02 14:09:36 +02:00
Vladimir 'phcoder' Serbinenko
5afeb5bdd6 * grub-core/disk/pata.c (grub_pata_initialize) [QEMU_MIPS]: Fix a
mismerge.
2011-06-27 19:26:52 +02:00
Vladimir 'phcoder' Serbinenko
1e3d9b8612 * grub-core/disk/scsi.c (grub_scsi_read): Limit SCSI reads to 32K
because of underlying system restrictions.
2011-06-27 10:12:35 +02:00
Vladimir 'phcoder' Serbinenko
41bec7fec9 * grub-core/disk/ahci.c (grub_ahci_readwrite_real): Use proper
definitions for dprintf.
	* grub-core/disk/pata.c (grub_pata_readwrite): Likewise.
2011-06-27 08:43:13 +02:00
Vladimir 'phcoder' Serbinenko
031f22a01f * grub-core/disk/raid.c (insert_array): Ensure uniqueness of readable
names.
2011-06-24 18:26:20 +02:00
Vladimir 'phcoder' Serbinenko
005dd67cb6 * grub-core/disk/ahci.c: Add missing license statements.
* grub-core/fs/romfs.c: Likewise.
	* grub-core/lib/ia64/setjmp.S: Likewise.
	* grub-core/loader/i386/pc/freedos.c: Likewise.
	* grub-core/loader/ia64/efi/linux.c: Likewise.
	* grub-core/video/colors.c: Likewise.
	* include/grub/dl.h (GRUB_MOD_DEP): New macro.
2011-06-24 00:29:21 +02:00
Vladimir 'phcoder' Serbinenko
5ab3f48a92 AHCI support.
* grub-core/Makefile.core.def (ata_pthru): Removed.
	(ahci): New module.
	(pata): Likewise.
	* grub-core/bus/usb/ohci.c (GRUB_MOD_FINI): Unregister preboot hook
	on unload.
	* grub-core/commands/hdparm.c (grub_hdparm_do_ata_cmd): Use ATA
	readwrite.
	(grub_hdparm_do_check_powermode_cmd): Likewise.
	(grub_hdparm_do_smart_cmd): Likewise.
	(grub_hdparm_set_val_cmd): Likewise.
	(grub_cmd_hdparm): Likewise. Check thta we have an ATA device.
	* grub-core/disk/ahci.c: New file.
	* grub-core/disk/ata.c: Factor out the low-level part into ...
	* grub-core/disk/pata.c: ... here.
	* grub-core/disk/ata_pthru.c: Contents moved to ...
	* grub-core/disk/pata.c: ... here.
	* grub-core/disk/scsi.c (grub_scsi_names): New array.
	(grub_scsi_iterate): Use grub_scsi_names.
	(grub_scsi_open): Likewise.
	* grub-core/kern/disk.c (grub_disk_ata_pass_through): Removed.
	* include/grub/ata.h (grub_ata_commands): Add DMA commands.
	(grub_ata_regs_t): New struct.
	(grub_disk_ata_pass_through_parms): Likewise.
	(grub_ata_device): Renamed to ...
	(grub_ata): ... this.
	(grub_ata_dev): New struct.
	Removed all low-level inline functions.
	* include/grub/scsi.h: Add PATA and AHCI subsystems.
	(grub_scsi_dev): Removed 'name' and 'id'. Added 'id' parameter to
	iterate hooks and open. All users updated.
	* util/grub-install.in: Handle AHCI disk module.
2011-06-24 00:07:55 +02:00
Vladimir 'phcoder' Serbinenko
a5edbcb3a1 merge mainline into 4096 2011-06-23 04:08:37 +02:00
Vladimir 'phcoder' Serbinenko
245f4aba48 * grub-core/disk/arc/arcdisk.c (reopen): Close old handle before
opening new one.
2011-05-21 07:05:46 +02:00
Vladimir 'phcoder' Serbinenko
bf947d36e3 Use full 64-bit division.
* grub-core/kern/misc.c (grub_divmod64_full): Renamed to ...
	(grub_divmod64): ... this.
	* include/grub/misc.h (grub_divmod64): Removed. All users switch to full
	version.
2011-05-18 15:35:19 +02:00
Vladimir 'phcoder' Serbinenko
548937c6d6 merge mainline into ahci 2011-05-18 12:36:26 +02:00
Vladimir 'phcoder' Serbinenko
a228ec103a enable ATA on qemu-mips 2011-05-17 14:35:55 +02:00
Vladimir 'phcoder' Serbinenko
8e29b2ffe3 set id on arc disks 2011-05-16 21:50:14 +02:00
Vladimir 'phcoder' Serbinenko
0670a9751b merge mainline into ahci 2011-05-16 17:17:04 +02:00
Vladimir 'phcoder' Serbinenko
bee1aeb9a1 merge mainline into sgi 2011-05-15 02:23:36 +02:00
Vladimir 'phcoder' Serbinenko
36084912c0 Give ATA device a bit more time on first try in order to allow disks
to spin up.

	* grub-core/disk/ata.c (grub_atapi_identify): Use GRUB_ATA_TOUT_DEV_INIT
	if dev->present is 1. Reset dev->present on failure.
	(grub_ata_device_initialize): Set dev->present to 1.
	* include/grub/ata.h (GRUB_ATA_TOUT_DEV_INIT): New value.
	(grub_ata_device): New member 'present'.
2011-05-13 21:41:18 +02:00
Vladimir 'phcoder' Serbinenko
96a29d188b Arc type cleanup 2011-05-13 18:03:20 +02:00
Vladimir 'phcoder' Serbinenko
8906c3dd40 sgi support 2011-05-13 16:36:05 +02:00
Vladimir 'phcoder' Serbinenko
8c767fd198 merge mainline into luks 2011-04-25 17:04:27 +02:00
Vladimir 'phcoder' Serbinenko
6be8715dfc * grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Make mdraid UUID
match the one used by mdadm.
2011-04-25 15:23:37 +02:00
Vladimir 'phcoder' Serbinenko
20a409405b Integrate geli into autoconfiguration system 2011-04-25 14:52:07 +02:00
Vladimir 'phcoder' Serbinenko
f718594e32 update fixme 2011-04-24 21:41:49 +02:00
Vladimir 'phcoder' Serbinenko
8358d7f221 Skip one-time volumes and add option for skipping non-boot volumes 2011-04-24 21:40:13 +02:00
Vladimir 'phcoder' Serbinenko
23432f6542 support UUID for geli 2011-04-24 21:11:14 +02:00
Vladimir 'phcoder' Serbinenko
7efb5c9eea Use hardcoded reference to sha512 and sha256 in geli rather than runtime lookup since they are always used 2011-04-24 20:37:56 +02:00
Vladimir 'phcoder' Serbinenko
371a8f1183 Fix a potential buffer overflow 2011-04-24 17:50:22 +02:00
Vladimir 'phcoder' Serbinenko
171e2be183 geli xts support 2011-04-24 17:41:50 +02:00
Vladimir 'phcoder' Serbinenko
574d268020 Add few FIXME comments 2011-04-24 17:18:18 +02:00
Vladimir 'phcoder' Serbinenko
88ac3146d6 geli v5 (including rekeying support) 2011-04-24 17:15:55 +02:00
Vladimir 'phcoder' Serbinenko
3e90811d88 support non-512B sectors for geli 2011-04-24 14:59:38 +02:00
Vladimir 'phcoder' Serbinenko
572e3ea650 merge 4096 into luks 2011-04-24 03:12:06 +02:00
Vladimir 'phcoder' Serbinenko
b094f07c23 Don't set was_readable for new array 2011-04-24 02:39:21 +02:00
Vladimir 'phcoder' Serbinenko
b6b4ea5fd1 Add IDs for more ciphers 2011-04-24 02:37:23 +02:00
Vladimir 'phcoder' Serbinenko
972d86df5f accept version 2 geli 2011-04-24 02:36:50 +02:00
Vladimir 'phcoder' Serbinenko
7ede8f8b5b support niter == 0 2011-04-24 02:36:04 +02:00
Vladimir 'phcoder' Serbinenko
b44cd9e710 zero-fill hash context for safety 2011-04-24 02:34:32 +02:00
Vladimir 'phcoder' Serbinenko
1a1f408f20 geli support 2011-04-24 00:00:29 +02:00
Vladimir 'phcoder' Serbinenko
8585e54bec factor cryptodisk part out 2011-04-23 18:00:42 +02:00
Vladimir 'phcoder' Serbinenko
fcf3bfb6ff small readability improvement 2011-04-23 16:45:00 +02:00
Vladimir 'phcoder' Serbinenko
b896ae82db small readability improvement 2011-04-23 16:43:55 +02:00
Vladimir 'phcoder' Serbinenko
6f33a8eebc optimize LRW 2011-04-23 16:41:43 +02:00
Vladimir 'phcoder' Serbinenko
6fd80b9ac4 factor luks_set_key out 2011-04-23 12:40:43 +02:00
Vladimir 'phcoder' Serbinenko
2f179c3236 LRW support 2011-04-23 04:51:53 +02:00
Vladimir 'phcoder' Serbinenko
4b35060f6f Fix benbi 2011-04-23 03:18:07 +02:00
Vladimir 'phcoder' Serbinenko
ed38c849f4 pcbc support 2011-04-23 02:27:45 +02:00
Vladimir 'phcoder' Serbinenko
95172af9fa Better IV modes support 2011-04-23 02:04:40 +02:00
Vladimir 'phcoder' Serbinenko
9d647e4e18 New -t luks_uuid 2011-04-22 23:51:16 +02:00
Vladimir 'phcoder' Serbinenko
50ad7d9cae luks grub-probe support 2011-04-22 23:39:36 +02:00
Vladimir 'phcoder' Serbinenko
fe32915a5e XTS support 2011-04-22 21:48:32 +02:00
Vladimir 'phcoder' Serbinenko
84a411c0c3 small argument revamp 2011-04-22 19:51:06 +02:00
Vladimir 'phcoder' Serbinenko
4169260830 grub-fstest luks support 2011-04-22 19:44:41 +02:00
Vladimir 'phcoder' Serbinenko
24089d19e2 Add cheatmounting 2011-04-22 19:20:46 +02:00
Vladimir 'phcoder' Serbinenko
f3470f4eb5 restructure prior to adding cheatmounts 2011-04-22 16:32:27 +02:00
Vladimir 'phcoder' Serbinenko
0aaa85f1a0 merge lazy into luks 2011-04-22 15:13:12 +02:00
Vladimir 'phcoder' Serbinenko
716aa45e40 Fix LVM listing 2011-04-22 14:58:12 +02:00
Vladimir 'phcoder' Serbinenko
4defebbec8 automatic raid members addition 2011-04-22 13:55:30 +02:00
Vladimir 'phcoder' Serbinenko
65b4742cd7 Add lost lvm/ prefix. Autoadd lvm subdevices. 2011-04-22 02:46:36 +02:00
Vladimir 'phcoder' Serbinenko
5dad99b730 more linux-like name for LVM volumes 2011-04-22 01:10:24 +02:00
Vladimir 'phcoder' Serbinenko
24b905a11c Lazy LVM and RAID assembly 2011-04-22 00:09:07 +02:00
Vladimir 'phcoder' Serbinenko
64516e9df6 Fix couple of UUID problems 2011-04-21 12:39:14 +02:00
Vladimir 'phcoder' Serbinenko
79cde98f5d Support luksuuid specification 2011-04-21 11:58:06 +02:00
Vladimir 'phcoder' Serbinenko
a89c3dd3f7 Don't mount the same LUKS volume twice 2011-04-21 11:38:51 +02:00
Vladimir 'phcoder' Serbinenko
5709ed126d small cleanup 2011-04-21 11:17:01 +02:00
Michael Gorven
7217f315d3 LUKS support based on work of Michael Gorven with some code from Clemens Fruhwirth and heavily cleaned up by me (phcoder)
Also-By: Clemens Fruhwirth <clemens@endorphin.org>

	Also-By: Vladimir Serbinenko <phcoder@gmail.com>
2011-04-21 11:14:29 +02:00
Vladimir 'phcoder' Serbinenko
50d2cc5ae5 Identify RAID by its UUID rather than (guessed) name.
* grub-core/disk/raid.c (ascii2hex): New function.
	(grub_raid_open): Accept mduuid/%s specification.
	* grub-core/kern/emu/getroot.c (get_mdadm_name): Revamped into ...
	(get_mdadm_uuid): ... this.
	(grub_util_get_grub_dev): Use mduuid/%s if UUID is available.
2011-04-16 15:27:35 +02:00
Vladimir 'phcoder' Serbinenko
bd671cc4fe Use Block IO on EFI 2011-04-15 18:15:06 +02:00
Vladimir 'phcoder' Serbinenko
e745cf0ca6 Implement automatic module license checking according to new GNU
guidelines.

	* grub-core/kern/dl.c (grub_dl_check_license): New function.
	(grub_dl_load_core): Use grub_dl_check_license.
	* include/grub/dl.h (GRUB_MOD_SECTION): New macro.
	(GRUB_MOD_LICENSE): Likewise.
	(GRUB_MOD_DUAL_LICENSE): Likewise.
	All modules updated.
2011-04-11 23:01:51 +02:00
Vladimir 'phcoder' Serbinenko
3c0e3f142a * grub-core/disk/raid.c [GRUB_UTIL]: Add missing include. 2011-04-08 12:06:55 +02:00
Vladimir 'phcoder' Serbinenko
a562b47916 * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Detect spares
and report them as not RAID members since they are useless for GRUB.
	* grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Likewise.
2011-04-06 12:29:49 +02:00
Vladimir 'phcoder' Serbinenko
6ac14e6cef Fix EFI compilation 2011-04-05 09:34:58 +02:00
Vladimir 'phcoder' Serbinenko
850e937329 Increase LVM implementation robustness in order not to crash on
configurations like pvmove. Previously code assumed that in some places
	only lvs or only pvs are used whereas it seems that they are used
	interchangeably.

	* grub-core/disk/lvm.c (read_node): New function.
	(read_lv): Use read_node.
	(grub_lvm_scan_device): Use only first mirror on pvmove'd lvs.
	Match volumes only at the end when all lvs are found. Take both
	pvs (first) and lvs (second) into account.
	* include/grub/lvm.h (grub_lvm_segment): Merge fields stripe_* and
	mirror_* into node_*. All users updated.
	(grub_lvm_stripe): Merge this ...
	(grub_lvm_mirror): ... and this ...
	(grub_lvm_node): ... into this. All users updated.
2011-04-03 16:28:14 +02:00
Vladimir 'phcoder' Serbinenko
6f33215394 * grub-core/disk/lvm.c (grub_lvm_scan_device): Print errors on the end
of function to allow further scanning for LVMs.
2011-04-03 15:57:44 +02:00
Colin Watson
2cccc747ac Store the loopback device as data on loopback grub_disk structures,
rather than the file it points to.  This fixes use of freed memory
if an existing loopback device is replaced.

* grub-core/disk/loopback.c (grub_loopback_open): Store dev in
disk->data, not dev->file.
(grub_loopback_read): Adjust file assignment to match.
Fixes Ubuntu bug #742967.
2011-04-01 17:04:10 +01:00
Colin Watson
186ae367af * grub-core/disk/loopback.c (grub_cmd_loopback): Fix a memory leak
when replacing an existing device.
2011-04-01 15:35:09 +01:00
Vladimir 'phcoder' Serbinenko
241e41f55c * grub-core/disk/raid.c (insert_array): Add few potentially
useful grub_util_info.
	(grub_raid_register): Likewise.
2011-03-30 16:54:11 +02:00
Vladimir 'phcoder' Serbinenko
87d1aa1927 * grub-core/disk/lvm.c (grub_lvm_scan_device): Remove spurious \n. 2011-03-30 13:02:39 +02:00
Vladimir 'phcoder' Serbinenko
fc18f6a3cb * util/grub.d/10_linux.in: Skip vmlinux-* on x86 platforms. 2011-03-29 19:47:34 +02:00
Colin Watson
61d7156b94 * grub-core/disk/loopback.c (GRUB_MOD_INIT): Stop documenting
removed -p option.
2011-03-29 18:00:23 +01:00
Colin Watson
b4db4f39f0 * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): If
real_sb->size is zero (e.g. RAID-0), get the disk size from
real_sb->data_size instead.
Fixes Ubuntu bug #743136.
2011-03-29 10:51:58 +01:00
Vladimir 'phcoder' Serbinenko
09573499ff Initial variable sector size support 2011-03-29 02:02:55 +02:00
Colin Watson
2414872538 * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Remove stale
comment.
2011-03-28 15:17:22 +01:00
Colin Watson
f329eda79e * grub-core/disk/raid.c (grub_raid_register): Adjust debug message
to be specific about what kind of RAID device we're scanning for.
2011-03-28 13:23:54 +01:00
Vladimir 'phcoder' Serbinenko
b1d2840445 * grub-core/disk/usbms.c (grub_usbms_reset): Transform USB-style error
into GRUB-style one.
2011-03-23 12:21:15 +01:00
Vladimir 'phcoder' Serbinenko
7d4e39d65a * grub-core/bus/usb/usb.c (attach_hooks): Make static.
* grub-core/bus/usb/usbhub.c (hubs): Likewise.
	* grub-core/commands/hashsum.c (aliases): Likewise.
	* grub-core/commands/setpci.c (pci_registers): Likewise.
	* grub-core/disk/usbms.c (attach_hook): Likewise.
	* grub-core/fs/zfs/zfs.c (decomp_table): Likewise.
	(zio_checksum_table): Likewise.
	* grub-core/gettext/gettext.c (grub_gettext_msg_list): Likewise.
	* grub-core/gfxmenu/gfxmenu.c (cached_view): Likewise.
	* grub-core/lib/legacy_parse.c (legacy_commands): Likewise.
	* grub-core/lib/relocator.c (leftovers): Likewise.
	(extra_blocks): Likewise.
	* grub-core/loader/i386/bsd.c (relocator): Likewise.
	* grub-core/loader/i386/multiboot_mbi.c (modules): Likewise.
	(modules_last): Likewise.
	* grub-core/loader/i386/xnu.c (table_aliases): Likewise.
	(devices): Likewise.
	* grub-core/loader/multiboot_mbi2.c (modules): Likewise.
	(modules_last): Likewise.
	* grub-core/normal/auth.c (users): Likewise.
	* grub-core/normal/context.c (initial_menu): Likewise.
	(current_menu): Likewise.
	* grub-core/normal/crypto.c (crypto_specs): Likewise.
	* grub-core/term/serial.c (grub_serial_ports): Likewise.
	(grub_serial_terminfo_input_template): Likewise.
	(grub_serial_terminfo_output_template): Likewise.
	(grub_serial_terminfo_input): Likewise.
	(grub_serial_terminfo_output): Likewise.
	(registered): Likewise.
	* grub-core/term/usb_keyboard.c (attach_hook): Likewise.
2011-03-23 12:05:13 +01:00
Anthony DeRobertis
5d4c5f8914 * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Check
super_offset field.
2011-01-22 15:20:08 +01:00
Vladimir 'phcoder' Serbinenko
5d4f4dd51b * grub-core/disk/scsi.c (grub_scsi_read): Fix binary and check and make
logical expression more readable.
2011-01-22 13:22:46 +01:00
Vladimir 'phcoder' Serbinenko
e489601ad0 * grub-core/disk/raid.c (insert_array): Ensure uniqueness of p->number
even if some elements have a name.
	Reported by: Alexander GQ Gerasiov.
2011-01-22 13:18:05 +01:00
Vladimir 'phcoder' Serbinenko
b44a558c9a Use alias->path rather than buggy "canon".
* grub-core/disk/ieee1275/ofdisk.c (ofdisk_hash_add_real): New function.
	(ofdisk_hash_add): New argument curcan. All users updated.
2011-01-12 11:26:28 +01:00
Vladimir 'phcoder' Serbinenko
cf0eaf13a1 * grub-core/disk/raid.c (insert_array): Display RAID name in duplicate
members errors.
2011-01-10 17:28:29 +01:00
Vladimir 'phcoder' Serbinenko
c0cf26da6b * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Add missing
endian transformations.
	* grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Likewise.
	Based on report by: Doug Nazar.
2011-01-07 16:17:24 +01:00
Doug Nazar
0ca09e6c52 * grub-core/disk/raid5_recover.c (grub_raid5_recover): Add missing
array->members[i].start_sector.
	* grub-core/disk/raid6_recover.c (grub_raid6_recover): Likewise.
2011-01-07 14:41:44 +01:00
Vladimir 'phcoder' Serbinenko
446fa40081 * grub-core/disk/i386/pc/biosdisk.c (GRUB_MOD_INIT): Workaround buggy
BIOSes.
2011-01-04 15:42:47 +01:00
Vladimir 'phcoder' Serbinenko
7a1d4deec9 Fix finalisation/restore 2011-01-03 15:59:20 +01:00
Vladimir 'phcoder' Serbinenko
3d5f359d3b merge mainline into ahci 2010-12-26 11:20:12 +01:00
Jeroen Dekkers
190a011a8b * grub-core/disk/raid.c (insert_array): Don't add spurious members. 2010-12-25 22:32:54 +01:00
Vladimir 'phcoder' Serbinenko
9797178671 Accept ports in state 1 2010-12-25 18:02:43 +01:00
Vladimir 'phcoder' Serbinenko
c76ae9b4da set parms.write on disk write 2010-12-25 17:40:00 +01:00
Vladimir 'phcoder' Serbinenko
3c51ecb82b Fix adressing mode mismatch 2010-12-25 15:47:23 +01:00
Vladimir 'phcoder' Serbinenko
d1e517eb20 extend --disk-module to AHCI and USB 2010-12-25 12:11:54 +01:00
Vladimir 'phcoder' Serbinenko
d9675dbee3 Move 0xE0 to callers rather than to have it in drivers 2010-12-25 03:47:51 +01:00
Vladimir 'phcoder' Serbinenko
a934071d76 Remove unused pata ioaddress2 2010-12-25 03:22:12 +01:00
Vladimir 'phcoder' Serbinenko
188ac234bd use DMA for AHCI commands 2010-12-25 03:12:49 +01:00
Vladimir 'phcoder' Serbinenko
060d0c7ac2 working AHCI (at last) 2010-12-25 03:06:07 +01:00
Vladimir 'phcoder' Serbinenko
51f7e1acb7 DMA ATA commands support 2010-12-25 02:53:20 +01:00
Vladimir 'phcoder' Serbinenko
908a8fc37a Fix several AHCI problems 2010-12-24 19:48:55 +01:00
Vladimir 'phcoder' Serbinenko
ee2b985ef6 rearrange wait_not_busy 2010-12-24 17:11:21 +01:00
Vladimir 'phcoder' Serbinenko
8f5ac9e570 fix ATAPI support 2010-12-24 17:10:41 +01:00
Vladimir 'phcoder' Serbinenko
22a7cc9a6f fix 3rd argument to scsi_iterate 2010-12-24 17:09:56 +01:00
Vladimir 'phcoder' Serbinenko
faec81d97d Add missing buffer specifications 2010-12-24 16:54:33 +01:00
Vladimir 'phcoder' Serbinenko
de2690be7c merge mainline into ahci 2010-12-24 16:16:01 +01:00
Vladimir 'phcoder' Serbinenko
dfd240b122 * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Fix spurious
warning.
2010-11-19 22:52:27 +01:00
Vladimir 'phcoder' Serbinenko
7b61e6096b * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Don't try to
retrieve the metadat sector if size isn't known.
	* grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Likewise.
2010-11-19 22:48:26 +01:00
Vladimir 'phcoder' Serbinenko
1fd08bf111 * grub-core/disk/lvm.c (GRUB_MOD_FINI): Reset the vg_list. Fixes
LVM on RAID support.
2010-11-14 14:13:11 +01:00
Vladimir 'phcoder' Serbinenko
3a1197cdb0 * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Do not put
elements with invlid index.
	* grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Likewise.
	* grub-core/disk/raid.c (insert_array): Automatically reallocate
	members.
	* include/grub/raid.h (grub_raid_member): New struct.
	(grub_raid_array): Transform devices and start_sector into usage of
	grub_raid_member. All users updated
	(allocated_devs): New member.
2010-11-01 10:20:58 +01:00
Szymon Janc
6bdda8f877 * grub-core/commands/legacycfg.c (grub_cmd_legacy_kernel):
Set-but-not-used variable ifdef'ed.
	* grub-core/lib/legacy_parse.c (grub_legacy_parse): Likewise.
	* grub-core/bus/usb/ohci.c (grub_ohci_pci_iter): Set-but-not-used
	variable removed.
	* grub-core/disk/lvm.c (grub_lvm_scan_device): Likewise.
	* grub-core/fs/jfs.c (grub_jfs_find_file): Likewise.
	* grub-core/fs/minix.c (grub_minix_dir): Likewise.
	* grub-core/fs/sfs.c (grub_sfs_read_extent): Likewise.
	* grub-core/fs/ufs.c (grub_ufs_dir): Likewise.
	* grub-core/gfxmenu/gui_list.c (grub_gui_list_new): Likewise.
	* grub-core/gfxmenu/view.c (redraw_menu_visit): Likewise.
	* grub-core/gfxmenu/widget-box.c (draw): Likewise.
	* grub-core/lib/relocator.c (malloc_in_range): Likewise.
	* grub-core/loader/i386/bsdXX.c (grub_netbsd_load_elf_meta): Likewise.
	* grub-core/loader/i386/bsd_pagetable.c (fill_bsd64_pagetable):
	Likewise.
2010-10-16 22:16:52 +02:00
Vladimir 'phcoder' Serbinenko
20c6bb7e9e Correctly distinguish mdraid flavours.
* grub-core/disk/raid.c (grub_raid_getname) [GRUB_UTIL]: New function.
	(insert_array): New argument raid.
	* include/grub/disk.h (grub_disk_dev) [GRUB_UTIL]: New member raidname.
	* include/grub/raid.h (grub_raid_array) [GRUB_UTIL]: New member driver.
	* util/grub-probe.c (probe): PRint raidname instead of plainly "mdraid".
2010-10-08 23:27:27 +02:00
starous
c621fd6ebe CBI Mass Storage support 2010-10-02 22:28:16 +02:00
Colin Watson
d7dbe92395 * grub-core/disk/efi/efidisk.c (grub_efidisk_get_device_name): Make
tpart non-const, so that we can assign to it.  (Since this is a
typedef, the constness refers to the pointer rather than what it
points to.)
2010-09-21 13:41:23 +01:00
Vladimir 'phcoder' Serbinenko
74342e312f Support some annoying BSD and Minix subpartitions.
* Makefile.util.def (libgrub.a): Add grub-core/partmap/bsdlabel.c.
	* grub-core/disk/efi/efidisk.c (grub_efidisk_get_device_name):
	Properly handle concatenation.
	* grub-core/kern/device.c (grub_device_iterate): Likewise.
	* grub-core/normal/completion.c (iterate_partition): Likewise.
	* grub-core/kern/disk.c (grub_disk_open): Make disk->name not
	contain partition. All users updated.
	* grub-core/partmap/bsdlabel.c (grub_netbsdlabel_partition_map): New
	struct.
	(grub_openbsdlabel_partition_map): Likewise.
	(bsdlabel_partition_map_iterate): Rename to ..
	(iterate_real): ... this. New arguments sector, freebsd and pmap.
	(bsdlabel_partition_map_iterate): New function.
	(netopenbsdlabel_partition_map_iterate): Likewise.
	(netbsdlabel_partition_map_iterate): Likewise.
	(openbsdlabel_partition_map_iterate): Likewise.
	(GRUB_MOD_INIT): Register new partmaps.
	(GRUB_MOD_FINI): Unregister new partmaps.
	* grub-core/partmap/msdos.c (pc_partition_map_iterate): Rename to ...
	(grub_partition_msdos_iterate): ... this. All users updated.
	Don't support embedding other than in a minix partition.
	* include/grub/msdos_partition.h (grub_partition_msdos_iterate): New
	proto.
	* include/grub/partition.h (grub_partition): New field msdostype.
	* util/grub-install.in: Handle openbsd and netbsd types being in
	part_bsd module.
2010-09-20 21:45:06 +02:00
Vladimir 'phcoder' Serbinenko
1e8d555b7d Split mdraid.mod into mdraid09.mod and mdraid1x.mod.
* Makefile.util.def (libgrub.a): Add grub-core/disk/mdraid1x_linux.c.
	* grub-core/Makefile.core.def (mdraid): Renamed to ...
	(mdraid09): ... this.
	(mdraid1x): New module.
	* grub-core/disk/mdraid_linux.c: Move 1.x parts ...
	* grub-core/disk/mdraid1x_linux.c: ...here. All users updated.
2010-09-20 20:09:31 +02:00
Vladimir 'phcoder' Serbinenko
a1d84a5e5e Unify memory types.
* grub-core/Makefile.am (KERNEL_HEADER_FILES): Include memory.h.
	* grub-core/commands/lsmmap.c (grub_cmd_lsmmap): Output user-readable
	types.
	* grub-core/kern/i386/multiboot_mmap.c (grub_lower_mem): Removed.
	(grub_upper_mem): Likewise.
	* grub-core/kern/ieee1275/init.c (grub_upper_mem): Likewise.
	* include/grub/memory.h (grub_memory_type_t): New enum.
	All users updated.
2010-09-19 00:04:31 +02:00
Vladimir 'phcoder' Serbinenko
ed80f7d586 * include/grub/command.h (GRUB_COMMAND_FLAG_CMDLINE): Removed. All
users updated.
	(GRUB_COMMAND_FLAG_MENU): Likewise.
	(GRUB_COMMAND_FLAG_BOTH): Likewise.
	(GRUB_COMMAND_FLAG_TITLE): Removed.
	(GRUB_COMMAND_FLAG_NO_ECHO): Likewise.
	(GRUB_COMMAND_FLAG_EXTCMD): Moved into enum.
	(GRUB_COMMAND_FLAG_DYNCMD): Likewise.
	(GRUB_COMMAND_FLAG_BLOCKS): Likewise.
	(grub_command_flags_t): New enum. All users updated.
2010-09-14 23:06:01 +02:00
Vladimir 'phcoder' Serbinenko
94564f81a8 * include/grub/disk.h (grub_disk): Remove has_partitions.
All users updated.
	* disk/loopback.c (grub_loopback): Remove has_partitions.
	All users updated.
	(options): Remove partitions. All users updated.
	* util/grub-fstest.c (fstest): Don't pass "-p" to loopback.
	* util/i386/pc/grub-setup.c (setup): copy partition table only when
	actual partition table is found.
2010-09-13 23:59:22 +02:00
Vladimir 'phcoder' Serbinenko
b2a30ac5e4 Filter devaliases and never open same device twice.
* grub-core/disk/ieee1275/ofdisk.c (last_devpath): New variable.
	(last_ihandle): Likewise.
	(ofdisk_hash_ent): New member shortest.
	(ofdisk_hash_add): Add canonical path too.
	(scan): New function.
	(grub_ofdisk_iterate): Iterate over hashed entries.
	(compute_dev_path): Don't add :0.
	(grub_ofdisk_open): Don't really open the disk.
	(grub_ofdisk_close): Avoid closing unrelated disk.
	(grub_ofdisk_read): Implement reopen logic.
	* grub-core/kern/ieee1275/openfw.c (grub_ieee1275_canonicalise_devname):
	New function.
	* include/grub/ieee1275/ieee1275.h (grub_ieee1275_canonicalise_devname):
	New proto.
2010-09-13 19:17:29 +02:00
Vladimir 'phcoder' Serbinenko
43de930c20 Change to disk->name being raw name. It makes less hidden issues 2010-09-08 21:22:41 +02:00
Vladimir 'phcoder' Serbinenko
dedb5f9be2 merge mainline into nested 2010-09-08 20:40:27 +02:00
Vladimir 'phcoder' Serbinenko
3fcb410549 Fix a double device name 2010-09-08 20:39:57 +02:00
Vladimir 'phcoder' Serbinenko
db0f7e3d20 Rename CD-ROM to cd on BIOS.
* grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_get_drive): Recognise
	"cd".
	(grub_biosdisk_call_hook): Call with "cd" instead of arbitrary hdX.
2010-09-06 09:35:35 +02:00
Vladimir 'phcoder' Serbinenko
294f324d89 * grub-core/disk/lvm.c (grub_lvm_scan_device) [GRUB_UTIL]: Output more
diagnostic info.
2010-09-05 23:20:13 +02:00
Vladimir 'phcoder' Serbinenko
82a8506214 * include/grub/file.h (GRUB_FILE_SIZE_UNKNOWN): New definition.
* grub-core/disk/loopback.c (grub_loopback_open): Handle unknown file
	size.
2010-09-05 17:01:16 +02:00
Vladimir 'phcoder' Serbinenko
df3df23d5c Reorganise memory map handling 2010-09-04 17:10:10 +02:00
BVK Chaitanya
e5a73c4247 merge with mainline 2010-09-04 09:05:21 +05:30
Vladimir 'phcoder' Serbinenko
069c9c5fda merge mainline into intwrap 2010-08-29 23:21:21 +02:00
Vladimir 'phcoder' Serbinenko
671404469c Handle USB pendrives exposed as floppies.
* grub-core/boot/i386/pc/boot.S: Check LBA even on what appears to be
	floppy.
	* grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_open): Likewise.
	Check for partitions on all devices.
2010-08-27 03:44:55 +02:00
BVK Chaitanya
928bad4708 merge with mainline 2010-08-26 09:30:11 +05:30
Vladimir 'phcoder' Serbinenko
afba9f98ec MErge mainline into intwrap 2010-08-25 23:39:42 +02:00
BVK Chaitanya
d84666e6bb merge with mainline 2010-08-22 21:00:22 +05:30
BVK Chaitanya
16c7cb32c8 merge with mainline 2010-08-19 16:54:00 +05:30
BVK Chaitanya
297f0c2b6e merge with mainline 2010-07-13 00:43:28 +05:30
BVK Chaitanya
baea17662b merge with mainline 2010-06-08 09:36:44 +05:30
BVK Chaitanya
a762e3c335 merge with mainline 2010-06-01 17:52:31 +05:30
BVK Chaitanya
16321bf9ca pull-in emu-lite branch 2010-05-06 12:55:47 +05:30
BVK Chaitanya
8c41176882 automake commit without merge history 2010-05-06 11:34:04 +05:30