Re: [PATCH] ide: replace the global ide_lock spinlock by per-hwgroup spinlocks

From: Elias Oltmanns
Date: Sun Oct 12 2008 - 14:02:23 EST


Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> wrote:
> From: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx>
> Subject: [PATCH] ide: replace the global ide_lock spinlock by per-hwgroup spinlocks
>
> Now that (almost) all host drivers have been fixed not to abuse ide_lock
> and core code usage of ide_lock has been sanitized we may safely replace
> ide_lock by per-hwgroup locks.
>
> This patch is partially based on earlier patch from Ravikiran G Thirumalai.
>
> While at it:
> - don't use deprecated HWIF() and HWGROUP() macros
> - update locking documentation in ide.h
>
> Cc: Vaibhav V. Nivargi <vaibhav.nivargi@xxxxxxxxx>
> Cc: Alok N. Kataria <alokk@xxxxxxxxxxxxxx>
> Cc: Ravikiran Thirumalai <kiran@xxxxxxxxxxxx>
> Cc: Shai Fultheim <shai@xxxxxxxxxxxx>
> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx>
> ---
> this is against 2.6.27 + pata tree + pre-patchset posted on Wednesday
> (http://lkml.org/lkml/2008/10/8/221)

I've only had a casual look at this patch, but there is one thing:

[...]
> Index: b/drivers/ide/ide-probe.c
> ===================================================================
> --- a/drivers/ide/ide-probe.c
> +++ b/drivers/ide/ide-probe.c
[...]
> @@ -1091,11 +1092,11 @@ static int init_irq (ide_hwif_t *hwif)
> * linked list, the first entry is the hwif that owns
> * hwgroup->handler - do not change that.
> */
> - spin_lock_irq(&ide_lock);
> + spin_lock_irq(&hwgroup->lock);
> hwif->next = hwgroup->hwif->next;
> hwgroup->hwif->next = hwif;
> BUG_ON(hwif->next == hwif);
> - spin_unlock_irq(&ide_lock);
> + spin_unlock_irq(&hwgroup->lock);
> } else {
> hwgroup = kmalloc_node(sizeof(*hwgroup), GFP_KERNEL|__GFP_ZERO,
> hwif_to_node(hwif));

Something like

spin_lock_init(&hwgroup->lock);

should go into this else clause too.

Regards,

Elias
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/