Vladimir 'phcoder' Serbinenko
3ae17eb83c
Fix potential problem with calling zfs_to_cpu and cpu_to_be in a row.
...
* grub-core/fs/zfs/zfscrypt.c (grub_zfs_decrypt_real): Use explicit
byteswap when needed.
2011-11-08 19:44:18 +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
4a19b6017d
Fix ZFS crypto error types.
...
* grub-core/fs/zfs/zfscrypt.c (grub_ccm_decrypt): Fix return type.
(grub_gcm_decrypt): Likewise.
(grub_zfs_load_key_real): Fix error code type. Handle possible error
from PBKDF2.
2011-11-08 16:07:27 +01:00
Vladimir 'phcoder' Serbinenko
958ee22168
Illumos support.
...
* Makefile.util.def (10_illumos): New script.
* configure.ac: Set COND_HOST_ILLUMOS.
* grub-core/kern/emu/hostdisk.c (grub_util_get_fd_sectors) [__sun__]:
Support Illumos calls.
(find_partition_start) [__sun__]: Likewise.
(convert_system_partition_to_system_disk) [__sun__]: Likewise.
(device_is_wholedisk) [__sun__]: Handle Illumos naming scheme.
(grub_util_biosdisk_get_grub_dev) [__sun__]: Handle Illumos.
* util/getroot.c (find_root_device_from_libzfs) [__sun__]: Return raw
device.
* util/grub-probe.c (probe) [__sun__]: Do character check.
* util/grub.d/10_illumos.in: New file.
2011-11-08 12:38:30 +01:00
Vladimir 'phcoder' Serbinenko
cac14fb663
Support escaped commas in hostdisk.
...
* grub-core/kern/emu/hostdisk.c (unescape_cmp): New function.
(find_grub_drive): Use unescape_cmp.
(make_device_name): Escape commas.
2011-11-08 12:15:57 +01:00
Vladimir 'phcoder' Serbinenko
78e08dc3cb
* util/grub.d/10_kfreebsd.in: Use ${grub_mkrelpath} not grub-mkrelpath.
2011-11-08 12:06:27 +01:00
Vladimir 'phcoder' Serbinenko
9f421dd1f0
* grub-core/fs/zfs/zfs.c (zap_iterate): Remove set but not used
...
variable.
2011-11-08 11:32:19 +01:00
Vladimir 'phcoder' Serbinenko
ed64e9e279
Support trampoline jumps on powerpc.
...
* grub-core/kern/dl.c (grub_dl_load_segments) [__powerpc__]: Follow
__ia64__ path.
(grub_dl_load_segments): Set mod->sz.
(grub_dl_flush_cache): Flush whole space occupied by module, not just
segments.
* grub-core/kern/ia64/dl.c (nopm): Make const while on it.
(jump): Likewise.
* grub-core/kern/powerpc/dl.c (grub_arch_dl_get_tramp_got_size): New
function.
(trampoline): New struct.
(trampoline_template): New const.
(grub_arch_dl_relocate_symbols): Create trampolines on overflow.
* include/grub/dl.h (grub_dl): Add sz element.
[__powerpc__]: Follow __ia64__.
(GRUB_ARCH_DL_TRAMP_ALIGN): Define on ppc.
(GRUB_ARCH_DL_GOT_ALIGN): Likewise.
(GRUB_ARCH_DL_TRAMP_SIZE): Likewise.
(grub_arch_dl_get_tramp_got_size) [__powerpc__]: New proto.
2011-11-08 11:23:56 +01:00
Vladimir 'phcoder' Serbinenko
3084ede4c7
ZFS crypto support.
...
* Makefile.util.def (libgrubmods): Add grub-core/fs/zfs/zfscrypt.c.
* grub-core/Makefile.core.def (zfscrypt): New module.
* grub-core/fs/zfs/zfs.c (subvolume): New structure.
(grub_zfs_data): Replace mdn with subvol. Put case_insensitivity inside
it. All users updated.
(grub_zfs_decrypt): New var.
(grub_zfs_load_key): Likewise.
(zio_checksum_functions): Add SHA256+MAC.
(zio_checksum_verify): Handle incomplete comparison due to MAC.
(zio_read): Handle encrypted blocks.
(zap_verify): Remove incorrect check.
(fzap_iterate): Handle non-standard fzap.
(zap_iterate): Likewise.
(zap_iterate_u64): New function.
(dnode_get_fullpath): Load keys.
* grub-core/fs/zfs/zfscrypt.c: New file.
* grub-core/lib/crypto.c (grub_crypto_cipher_close): Removed.
(grub_crypto_ecb_encrypt): Make input const.
* include/grub/crypto.h (grub_crypto_cipher_close): Inline.
(grub_crypto_ecb_encrypt): Make input const.
(GRUB_CIPHER_AES): New macro.
* include/grub/zfs/dmu.h (dmu_object_type): Add DMU_OT_DSL_KEYCHAIN.
* include/grub/zfs/dsl_dir.h (dsl_dir_phys): Add keychain.
* include/grub/zfs/spa.h (grub_zfs_endian): Moved from here ...
* include/grub/zfs/zfs.h (grub_zfs_endian): ... here. Added GURB_ZFS_
prefix. All users updated.
(grub_zfs_add_key): New proto.
(grub_zfs_decrypt): Likewise.
(grub_zfs_load_key): Likewise.
* include/grub/zfs/zio.h (zio_checksum): Add SHA256+MAC.
* util/grub-fstest.c (options): Add -K option.
(argp_parser): Likewise.
2011-11-06 21:44:48 +01:00
Vladimir 'phcoder' Serbinenko
b632b404e0
Support zle compression on ZFS.
...
* grub-core/fs/zfs/zfs.c (zle_decompress): New function.
(decomp_table): Add zle.
* include/grub/zfs/zio.h (zio_compress): Add zle.
2011-11-05 14:50:53 +01:00
Vladimir 'phcoder' Serbinenko
c7ba4f6984
Support BtrFS embedding.
...
* grub-core/fs/btrfs.c (grub_btrfs_embed) [GRUB_UTIL]: New function.
(grub_btrfs_fs) [GRUB_UTIL]: Set embed.
* include/grub/fs.h (grub_fs) [GRUB_UTIL]: New field embed.
* util/grub-setup.c (setup): Use fs embedding if available.
Add additional sanity check.
2011-11-05 14:47:25 +01:00
Vladimir 'phcoder' Serbinenko
455377d93d
* util/grub-install.in: Fix condition for config_opt.
2011-11-05 12:15:07 +01:00
Vladimir 'phcoder' Serbinenko
c2fd16cacb
Support third redundancy strip on raidz3.
...
* grub-core/fs/zfs/zfs.c (recovery): Add Gauss for general case.
Return error on singularity. All users updated.
(read_device): Don't stop on 3rd failure on raidz3.
2011-11-04 15:19:23 +01:00
Vladimir 'phcoder' Serbinenko
8622923b66
Support case-insensitive ZFS subvolumes.
...
* grub-core/fs/zfs/zfs.c (mzap_lookup): New parameter case_insensitive.
All users updated.
(zap_hash): Likewise.
(name_cmp): New function.
(zap_leaf_array_equal): New parameter case_insensitive.
All users updated.
(zap_leaf_lookup): Likewise.
(fzap_lookup): Likewise.
(zap_lookup): Likewise.
(dnode_get_path): New parameter case_insensitive. Retrieve case
sensitiviness of a volume. All users updated.
(dnode_get_fullpath): New parameter case_insensitive.
All users updated.
(grub_zfs_dir): Set info.case_insensitiveness.
2011-11-04 13:44:56 +01:00
Vladimir 'phcoder' Serbinenko
95f2e86095
Support second redundancy strip on raidz(2,3).
...
* grub-core/fs/zfs/zfs.c (powx): New array.
(powx_inv): Likewise.
(poly): New const.
(xor_out): New function.
(gf_mul): Likewise.
(recovery): Likewise.
(read_device): Use second redundancy strip.
2011-11-04 13:36:08 +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
8bec9a284b
* include/grub/kernel.h (grub_module_header): Make type into uint32 as
...
expected by grub-mkimage and it's more clear since there is no implicit
padding.
2011-11-04 13:18:30 +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
Philipp Matthias Hahn
182c872a7b
* util/grub-mkrescue.in: Fix handling xorriso option.
2011-11-03 16:49:02 +01:00
Vladimir 'phcoder' Serbinenko
1e51cabd7b
* grub-core/gettext/gettext.c (grub_gettext_init_ext): Exit if local is
...
NULL.
2011-11-03 16:04:26 +01:00
crocket
9cc3581d7d
* util/grub.d/10_linux.in: Add Slackware initrd naming.
2011-11-03 15:21:47 +01:00
Vladimir 'phcoder' Serbinenko
158dc1ea26
XZ CRC64 and SHA256 support.
...
* Makefile.util.def (libgrubmods): Add crc64.c.
* grub-core/Makefile.core.def (crc64): New module.
* grub-core/lib/crc64.c: New file.
* grub-core/lib/xzembed/xz_dec_stream.c (xz_dec_hash)
[!GRUB_EMBED_DECOMPRESSOR]: Rename crc32_context to hash_context.
Fix the type.
(MAX_HASH_SIZE): New define.
(xz_dec) [!GRUB_EMBED_DECOMPRESSOR]: Add generic hash fields.
(dec_block) [!GRUB_EMBED_DECOMPRESSOR]: Handle non-crc32 hashes.
(index_update) [!GRUB_EMBED_DECOMPRESSOR]: Likewise.
(dec_index) [!GRUB_EMBED_DECOMPRESSOR]: Likewise.
(crc32_validate) [!GRUB_EMBED_DECOMPRESSOR]: Rename to ...
(hash_validate) [!GRUB_EMBED_DECOMPRESSOR]: ... this.
Handle non-crc32 hashes.
(hashes) [!GRUB_EMBED_DECOMPRESSOR]: New variable.
(dec_stream_header): Handle non-crc32 hashes.
(dec_stream_footer): Likewise.
(dec_block_header): Likewise.
(dec_main): Likewise.
(xz_dec_init): Likewise.
(xz_dec_reset): Likewise.
(xz_dec_end): Likewise.
* util/import_gcry.py: Add CRC64 line.
2011-11-03 15:13:30 +01:00
Vladimir 'phcoder' Serbinenko
9d9b3d2f02
* grub-core/fs/ufs.c (grub_ufs_mtime) [MODE_UFS2]: Check mtime field
...
as well.
2011-11-03 15:00:45 +01:00
Vladimir 'phcoder' Serbinenko
7d0ac93163
Make reiserfs label retrieval similar to other *_label functions.
...
* grub-core/fs/reiserfs.c (grub_reiserfs_superblock): New field label.
(REISERFS_MAX_LABEL_LENGTH): Removed.
(REISERFS_LABEL_OFFSET): Likewise.
(grub_reiserfs_label): Rewritten.
2011-11-03 14:57:34 +01:00
Vladimir 'phcoder' Serbinenko
cf5ba824ea
* grub-core/fs/zfs/zfs.c (read_device): Support raidz3.
2011-11-03 07:29:35 +01:00
Vladimir 'phcoder' Serbinenko
177440046d
* grub-core/fs/zfs/zfs.c (read_device): Add ability to sustain a single
...
drive failure on both raidz and raidz2.
2011-11-02 23:28:25 +01:00
Vladimir 'phcoder' Serbinenko
aca5aefc7c
Fix RAIDZ(2) for >= 5 devices.
...
* grub-core/fs/zfs/zfs.c (read_device): Fix length formula. Remove
asize argument. All users updated.
2011-11-02 20:48:04 +01:00
Vladimir 'phcoder' Serbinenko
ce8ca56ed9
Fix RAIDZ(2).
...
* grub-core/fs/zfs/zfs.c (grub_zfs_device_desc): New member ashift.
(fill_vdev_info_real): Set ashift.
(read_device): Rewrite RAIDZ part based on reverse engineering.
2011-11-01 20:05:28 +01:00
Vladimir 'phcoder' Serbinenko
7c01e783dc
* grub-core/fs/btrfs.c (grub_btrfs_extent_read): Add sanity check and
...
don't report potentially unavialiable fields in debug output.
(find_path): Fix double-free and memory leak.
2011-10-31 13:56:52 +01:00
Vladimir 'phcoder' Serbinenko
ce109e843c
Read label on UFS1.
...
* grub-core/fs/ufs.c (grub_ufs_label): Remove MODE_UFS2 condition.
(grub_ufs_fs): Always set .label.
2011-10-31 10:52:39 +01:00
Vladimir 'phcoder' Serbinenko
87661123b2
Use shifts in UFS.
...
* grub-core/fs/ufs.c (UFS_LOG_BLKSZ): New macro.
(grub_ufs_data): New field log2_blksz.
(grub_ufs_read_file): Use shifts.
(grub_ufs_mount): Check block size and logarithm it.
2011-10-31 10:50:43 +01:00
Vladimir 'phcoder' Serbinenko
46bc1dc244
* grub-core/fs/ufs.c (grub_ufs_lookup_symlink): Fix handling of
...
long symlinks.
2011-10-31 10:40:30 +01:00
Vladimir 'phcoder' Serbinenko
19ee298767
Handle symlinks and long names on tar and cpio.
...
* grub-core/fs/cpio.c (ATTR_TYPE): New definition.
(ATTR_FILE): Likewise.
(ATTR_DIR): Likewise.
(ATTR_LNK): Likewise.
(grub_cpio_data) [MODE_USTAR]: New fields linkname and linkname_alloc.
(grub_cpio_find_file): Fill mode, handle linkname field as well as
L and K entries.
(grub_cpio_mount): Zero-fill data.
(handle_symlink): New function.
2011-10-30 23:06:25 +01:00
Vladimir 'phcoder' Serbinenko
c83a08d84a
Fix iso9660 filename limitations and fix memory leaks.
...
* grub-core/fs/iso9660.c (set_rockridge): Free sua at the end.
(grub_iso9660_iterate_dir): Fix slash handling in symlinks.
2011-10-30 20:23:05 +01:00
Vladimir 'phcoder' Serbinenko
45cdd3ea37
Fix JFS file name length limitations.
...
* grub-core/fs/jfs.c (grub_jfs_inode): Fix in-place symlink length.
(grub_jfs_diropen): Fix maximum filename length.
(grub_jfs_getent): Fix filename length.
(grub_jfs_lookup_symlink): Fix size checks.
2011-10-30 20:14:57 +01:00
Vladimir 'phcoder' Serbinenko
94ef05c265
* grub-core/loader/mips/linux.c (loongson_machtypes): Fix fuloong type
...
string.
2011-10-30 19:30:04 +01:00
Vladimir 'phcoder' Serbinenko
eb0b6b45f3
Leverage BFS implementation to read AFS.
...
* Makefile.util.def (libgrubmods): Add afs.c.
* grub-core/Makefile.core.def (afs): New module
* grub-core/fs/afs.c: New file.
* grub-core/fs/bfs.c [MODE_AFS]: Adapt for AFS.
2011-10-30 16:10:18 +01:00
Vladimir 'phcoder' Serbinenko
785ab8c760
* grub-core/fs/bfs.c: MAcroify and add some necessary sanity checks.
2011-10-30 14:17:44 +01:00
Vladimir 'phcoder' Serbinenko
c4a1628f67
* grub-core/fs/bfs.c: Run indent.
2011-10-30 13:27:53 +01:00
Vladimir 'phcoder' Serbinenko
5825b3794b
BFS implementation based on the specification.
...
* grub-core/fs/bfs.c: New file.
* Makefile.util.def (libgrubmods): Add bfs.c.
* grub-core/Makefile.core.def (bfs): New module.
2011-10-30 13:25:51 +01:00
Vladimir 'phcoder' Serbinenko
42b2a706bf
* util/grub-fstest.c (cmd_cp): Clarify error message.
...
(cmd_cmp): Likewise.
2011-10-30 13:18:22 +01:00
Yves Blusseau
61b99bfc2a
* po/POTFILES.in: Regenerate because of the removal of afs, afs_be, befs
...
and befs_be.
2011-10-30 11:16:23 +01:00
Vladimir 'phcoder' Serbinenko
faba3d163a
Remove afs and befs because of copyright problem.
...
* grub-core/fs/afs.c: Removed.
* grub-core/fs/afs_be.c: Removed.
* grub-core/fs/befs.c: Removed.
* grub-core/fs/befs_be.c: Removed.
* Makefile.util.def (libgrubkern): Remove afs, afs_be, befs and befs_be.
* grub-core/Makefile.core.def (afs): Removed.
(afs_be): Likewise.
(befs): Likewise.
(befs_be): Likewise.
2011-10-29 11:29:34 +02:00
Vladimir 'phcoder' Serbinenko
c39224b052
Prefer rockridge over Joliet.
...
* grub-core/fs/iso9660.c (grub_iso9660_mount): Move rockridge detection
to ...
(set_rockridge): ... here.
(grub_iso9660_mount): Check rockridge on the primary label when
discovering. Ignore Joliet if Rockridge is present.
2011-10-28 16:26:17 +02:00
Vladimir 'phcoder' Serbinenko
e551115a26
Use shifts in nilfs2.
...
* grub-core/fs/nilfs2.c (LOG_INODE_SIZE): New definition.
(LOG_NILFS_DAT_ENTRY_SIZE): Likewise.
(grub_nilfs2_palloc_entries_per_group): Replace with ...
(grub_nilfs2_log_palloc_entries_per_group): ... this.
(grub_nilfs2_palloc_group): Use shifts and bitmasks.
(grub_nilfs2_entries_per_block): Replaced with ...
(grub_nilfs2_log_entries_per_block_log): ... this.
(grub_nilfs2_blocks_per_group): Replaced with ...
(grub_nilfs2_blocks_per_group_log): ... this.
(grub_nilfs2_blocks_per_desc_block): Replaced with ...
(grub_nilfs2_blocks_per_desc_block_log): ... this.
(grub_nilfs2_palloc_desc_block_offset): Replaced with ...
(grub_nilfs2_palloc_desc_block_offset_log): ... this.
(grub_nilfs2_palloc_entry_offset): Replaced ...
(grub_nilfs2_palloc_entry_offset_log): ... this. Use shifts.
(grub_nilfs2_dat_translate): Use shifts.
(grub_nilfs2_read_inode): Likewise.
(GRUB_MOD_INIT): Ensure that logs are correct.
2011-10-28 16:21:18 +02:00
Vladimir 'phcoder' Serbinenko
564dd58c2a
Use shifts in minix filesystem.
...
* grub-core/fs/minix.c (GRUB_MINIX_ZONESZ): Use log_block_size.
(GRUB_MINIX_ZONE2SECT): Likewise.
(grub_minix_data): Replace block_size with log_block_size.
(grub_minix_read_file): Use shifts.
(grub_minix_mount): Check block size and take a logarithm.
2011-10-28 16:09:20 +02:00
Vladimir 'phcoder' Serbinenko
ed9ba06dd0
Use shifts in squash4.
...
* grub-core/fs/squash4.c (grub_squash_data): New field log2_blksz.
(squash_mount): Check block size and take logarithm.
(direct_read): Use shifts.
2011-10-28 16:05:16 +02:00
Vladimir 'phcoder' Serbinenko
ad03fe768e
Correct befs block counting logic.
...
* grub-core/fs/afs.c (GRUB_AFS_BLOCKS_PER_DI_RUN): Replaced with...
(GRUB_AFS_LOG_BLOCKS_PER_DI_RUN): ... this.
(GRUB_AFS_BLOCKRUN_LOG_SIZE): New definition.
(grub_afs_read_inode): Use block_shift.
(RANGE_SHIFT): New definition.
(grub_afs_read_block): Account for RANGE_SHIFT, emit errors on
unexpected conditions, use shifts and appropriate types.
(GRUB_MOD_INIT): Check the value of GRUB_AFS_BLOCKRUN_LOG_SIZE.
2011-10-28 15:59:47 +02: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