lkml.org 
[lkml]   [2008]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 06/18] ide: factor out code unregistering devices from ide_unregister()
    Factor out code unregistering devices from ide_unregister() to
    ide_port_unregister_devices().

    Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    ---
    drivers/ide/ide.c | 30 +++++++++++++++++++-----------
    1 file changed, 19 insertions(+), 11 deletions(-)

    Index: b/drivers/ide/ide.c
    ===================================================================
    --- a/drivers/ide/ide.c
    +++ b/drivers/ide/ide.c
    @@ -494,6 +494,23 @@ void ide_remove_port_from_hwgroup(ide_hw
    spin_unlock_irq(&ide_lock);
    }

    +/* Called with ide_lock held. */
    +static void ide_port_unregister_devices(ide_hwif_t *hwif)
    +{
    + int i;
    +
    + for (i = 0; i < MAX_DRIVES; i++) {
    + ide_drive_t *drive = &hwif->drives[i];
    +
    + if (drive->present) {
    + spin_unlock_irq(&ide_lock);
    + device_unregister(&drive->gendev);
    + wait_for_completion(&drive->gendev_rel_comp);
    + spin_lock_irq(&ide_lock);
    + }
    + }
    +}
    +
    /**
    * ide_unregister - free an IDE interface
    * @index: index of interface (will change soon to a pointer)
    @@ -520,11 +537,10 @@ void ide_remove_port_from_hwgroup(ide_hw

    void ide_unregister(unsigned int index, int init_default, int restore)
    {
    - ide_drive_t *drive;
    ide_hwif_t *hwif, *g;
    static ide_hwif_t tmp_hwif; /* protected by ide_cfg_mtx */
    ide_hwgroup_t *hwgroup;
    - int irq_count = 0, unit;
    + int irq_count = 0;

    BUG_ON(index >= MAX_HWIFS);

    @@ -535,15 +551,7 @@ void ide_unregister(unsigned int index,
    hwif = &ide_hwifs[index];
    if (!hwif->present)
    goto abort;
    - for (unit = 0; unit < MAX_DRIVES; ++unit) {
    - drive = &hwif->drives[unit];
    - if (!drive->present)
    - continue;
    - spin_unlock_irq(&ide_lock);
    - device_unregister(&drive->gendev);
    - wait_for_completion(&drive->gendev_rel_comp);
    - spin_lock_irq(&ide_lock);
    - }
    + ide_port_unregister_devices(hwif);
    hwif->present = 0;

    spin_unlock_irq(&ide_lock);

    \
     
     \ /
      Last update: 2008-02-08 01:37    [W:4.152 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site