From 69203a9992203564f22b566b83289522e54d99a7 Mon Sep 17 00:00:00 2001 From: hollisb Date: Fri, 27 Oct 2006 18:14:00 +0000 Subject: [PATCH] 2006-10-27 Hollis Blanchard * kern/disk.c (grub_disk_open): Print debug messages when opening a disk. (grub_disk_close): Print debug messages when closing a disk. (grub_disk_read): Print debug messages when disk read fails. * kern/fs.c (grub_fs_probe): Print debug messages when detecting filesystem type. * kern/partition.c: Include misc.h. (grub_partition_iterate): Print debug messages when detecting partition type. --- ChangeLog | 12 ++++++++++++ kern/disk.c | 24 +++++++++++++++++++++--- kern/fs.c | 11 ++++++++--- kern/partition.c | 8 +++++++- 4 files changed, 48 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5b42899d8..566a54d78 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2006-10-27 Hollis Blanchard + + * kern/disk.c (grub_disk_open): Print debug messages when opening a + disk. + (grub_disk_close): Print debug messages when closing a disk. + (grub_disk_read): Print debug messages when disk read fails. + * kern/fs.c (grub_fs_probe): Print debug messages when detecting + filesystem type. + * kern/partition.c: Include misc.h. + (grub_partition_iterate): Print debug messages when detecting + partition type. + 2006-10-27 Hollis Blanchard * disk/ieee1275/ofdisk.c (grub_ofdisk_read): Return error if `status' diff --git a/kern/disk.c b/kern/disk.c index 114d3ae49..7f8c44020 100644 --- a/kern/disk.c +++ b/kern/disk.c @@ -214,7 +214,9 @@ grub_disk_open (const char *name) grub_disk_dev_t dev; char *raw = (char *) name; unsigned long current_time; - + + grub_dprintf ("disk", "Opening `%s'...\n", name); + disk = (grub_disk_t) grub_malloc (sizeof (*disk)); if (! disk) return 0; @@ -291,6 +293,10 @@ grub_disk_open (const char *name) if (grub_errno != GRUB_ERR_NONE) { + grub_error_push (); + grub_dprintf ("disk", "Opening `%s' failed.\n", name); + grub_error_pop (); + grub_disk_close (disk); return 0; } @@ -301,6 +307,8 @@ grub_disk_open (const char *name) void grub_disk_close (grub_disk_t disk) { + grub_dprintf ("disk", "Closing `%s'.\n", disk->name); + if (disk->dev && disk->dev->close) (disk->dev->close) (disk); @@ -353,7 +361,12 @@ grub_disk_read (grub_disk_t disk, grub_disk_addr_t sector, /* First of all, check if the region is within the disk. */ if (grub_disk_check_range (disk, §or, &offset, size) != GRUB_ERR_NONE) - return grub_errno; + { + grub_error_push (); + grub_dprintf ("disk", "Read out of range: sector 0x%lx.\n", sector); + grub_error_pop (); + return grub_errno; + } real_offset = offset; @@ -406,7 +419,12 @@ grub_disk_read (grub_disk_t disk, grub_disk_addr_t sector, num = ((size + GRUB_DISK_SECTOR_SIZE - 1) >> GRUB_DISK_SECTOR_BITS); if ((disk->dev->read) (disk, sector, num, tmp_buf)) - goto finish; + { + grub_error_push (); + grub_dprintf ("disk", "%s read failed\n", disk->name); + grub_error_pop (); + goto finish; + } grub_memcpy (buf, tmp_buf + real_offset, size); diff --git a/kern/fs.c b/kern/fs.c index 2ef314510..cc9c5ada8 100644 --- a/kern/fs.c +++ b/kern/fs.c @@ -78,16 +78,21 @@ grub_fs_probe (grub_device_t device) { /* Make it sure not to have an infinite recursive calls. */ static int count = 0; - + for (p = grub_fs_list; p; p = p->next) { + grub_dprintf ("fs", "Detecting %s...\n", p->name); (p->dir) (device, "/", dummy_func); if (grub_errno == GRUB_ERR_NONE) return p; - + + grub_error_push (); + grub_dprintf ("fs", "%s detection failed.\n", p->name); + grub_error_pop (); + if (grub_errno != GRUB_ERR_BAD_FS) return 0; - + grub_errno = GRUB_ERR_NONE; } diff --git a/kern/partition.c b/kern/partition.c index af0c95de7..9fbf79cc5 100644 --- a/kern/partition.c +++ b/kern/partition.c @@ -17,6 +17,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include #include #include @@ -103,15 +104,20 @@ grub_partition_iterate (struct grub_disk *disk, int part_map_iterate (const grub_partition_map_t p) { - grub_err_t err = p->iterate (disk, part_map_iterate_hook); + grub_err_t err; + + grub_dprintf ("partition", "Detecting %s...\n", p->name); + err = p->iterate (disk, part_map_iterate_hook); if (err != GRUB_ERR_NONE) { /* Continue to next partition map type. */ + grub_dprintf ("partition", "%s detection failed.\n", p->name); grub_errno = GRUB_ERR_NONE; return 0; } + grub_dprintf ("partition", "%s detection succeeded.\n", p->name); partmap = p; return 1; }