libata-core error handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello!

I'd like to suggest some minor changes to improve error reporting
in libata_core.c function ata_device_add().

I had terrible time to find the reason of kernel oops after
enabling in config ACPI without X86_LOCAL_APIC (by the way -
I don't understand why acpi irq routing is used then).

As it turned out messages from libata are very misleading,
because it tries to unregister too much and they cover on the
screen real reasons (bad irq request). No need to tell this
messages aren't added to logs.

I enclose this small diff, which was prepared with kernel
version 2.6.15.4, but it applied to 2.6.16-6 and 2.6.17-rc3
as well. 

Best regards from Poland,

Jarek P.


--- libata-core.c-	2006-02-10 02:22:48.000000000 -0500
+++ libata-core.c	2006-04-23 22:30:14.000000000 -0400
@@ -4357,8 +4357,11 @@
 
 	/* obtain irq, that is shared between channels */
 	if (request_irq(ent->irq, ent->port_ops->irq_handler, ent->irq_flags,
-			DRV_NAME, host_set))
+			DRV_NAME, host_set)) {
+		printk(KERN_ERR "ata: unable to allocate irq %lu\n",
+			ent->irq);
 		goto err_out;
+	}
 
 	/* perform each probe synchronously */
 	DPRINTK("probe begin\n");
@@ -4406,9 +4409,14 @@
 	VPRINTK("EXIT, returning %u\n", ent->n_ports);
 	return ent->n_ports; /* success */
 
+/* FIXME: goto after scsi_add_host
+ * err_out_remove:
+ *	for (i = 0; i < count; i++) {
+ *		ata_host_remove(host_set->ports[i], 1);
+ *	}
+ */
 err_out:
 	for (i = 0; i < count; i++) {
-		ata_host_remove(host_set->ports[i], 1);
 		scsi_host_put(host_set->ports[i]->host);
 	}
 err_free_ret:
-
: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux