syslog loves the new driver core code

From: Greg KH (gregkh_at_suse.de)
Date: 03/31/05

  • Next message: Jeff Garzik: "Re: [PATCH] Reduce stack usage in sys.c"
    Date:	Thu, 31 Mar 2005 00:28:14 -0800
    To: Patrick Mochel <mochel@digitalimplant.org>, Andrew Morton <akpm@osdl.org>
    
    

    Andrew pointed out to me that the new driver core code spewes a lot of
    stuff in the syslog for every device it tries to match up with a driver
    (if you look closely, it seems that the if check in __device_attach()
    will never not trigger...)

    Everything still seems to work properly, but it's good if we don't alarm
    people with messages that are incorrect and unneeded. :)

    So, here's a patch that seems to work for me. It stops trying to loop
    through drivers or devices once it finds a match, and it only tells the
    syslog when we have a real error.

    Look acceptable to you?

    thanks,

    greg k-h

    -----------
    Driver core: Fix up the driver and device iterators to be quieter

    Also stops looping over the lists when a match is found.

    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    --- 1.4/drivers/base/dd.c 2005-03-25 09:52:38 -08:00
    +++ edited/drivers/base/dd.c 2005-03-31 00:22:50 -08:00
    @@ -91,20 +91,23 @@ static int __device_attach(struct device
             int error;
     
             error = driver_probe_device(drv, dev);
    -
    - if (error == -ENODEV && error == -ENXIO) {
    - /* Driver matched, but didn't support device
    - * or device not found.
    - * Not an error; keep going.
    - */
    - error = 0;
    - } else {
    - /* driver matched but the probe failed */
    - printk(KERN_WARNING
    - "%s: probe of %s failed with error %d\n",
    - drv->name, dev->bus_id, error);
    + if (error) {
    + if ((error == -ENODEV) || (error == -ENXIO)) {
    + /* Driver matched, but didn't support device
    + * or device not found.
    + * Not an error; keep going.
    + */
    + error = 0;
    + } else {
    + /* driver matched but the probe failed */
    + printk(KERN_WARNING
    + "%s: probe of %s failed with error %d\n",
    + drv->name, dev->bus_id, error);
    + }
    + return error;
             }
    - return 0;
    + /* stop looking, this device is attached */
    + return 1;
     }
     
     
    @@ -142,7 +145,10 @@ static int __driver_attach(struct device
                                            drv->name, dev->bus_id, error);
                             } else
                                     error = 0;
    + return error;
                     }
    + /* stop looking, this driver is attached */
    + return 1;
             }
             return 0;
     }
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/


  • Next message: Jeff Garzik: "Re: [PATCH] Reduce stack usage in sys.c"

    Relevant Pages