Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 107646
b: refs/heads/master
c: d3e33ff
h: refs/heads/master
v: v3
  • Loading branch information
Bartlomiej Zolnierkiewicz committed Aug 5, 2008
1 parent e10e871 commit 94c3a8e
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 26 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b5b9309d3415480b3e66314a1d6c89db58bff9de
refs/heads/master: d3e33ff59facec005e48ba3360502b73a04e4b4e
12 changes: 7 additions & 5 deletions trunk/drivers/ide/ide-cd.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,21 +66,23 @@ static struct cdrom_info *ide_cd_get(struct gendisk *disk)
mutex_lock(&idecd_ref_mutex);
cd = ide_cd_g(disk);
if (cd) {
kref_get(&cd->kref);
if (ide_device_get(cd->drive)) {
kref_put(&cd->kref, ide_cd_release);
if (ide_device_get(cd->drive))
cd = NULL;
}
else
kref_get(&cd->kref);

}
mutex_unlock(&idecd_ref_mutex);
return cd;
}

static void ide_cd_put(struct cdrom_info *cd)
{
ide_drive_t *drive = cd->drive;

mutex_lock(&idecd_ref_mutex);
ide_device_put(cd->drive);
kref_put(&cd->kref, ide_cd_release);
ide_device_put(drive);
mutex_unlock(&idecd_ref_mutex);
}

Expand Down
11 changes: 6 additions & 5 deletions trunk/drivers/ide/ide-disk.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,21 +65,22 @@ static struct ide_disk_obj *ide_disk_get(struct gendisk *disk)
mutex_lock(&idedisk_ref_mutex);
idkp = ide_disk_g(disk);
if (idkp) {
kref_get(&idkp->kref);
if (ide_device_get(idkp->drive)) {
kref_put(&idkp->kref, ide_disk_release);
if (ide_device_get(idkp->drive))
idkp = NULL;
}
else
kref_get(&idkp->kref);
}
mutex_unlock(&idedisk_ref_mutex);
return idkp;
}

static void ide_disk_put(struct ide_disk_obj *idkp)
{
ide_drive_t *drive = idkp->drive;

mutex_lock(&idedisk_ref_mutex);
ide_device_put(idkp->drive);
kref_put(&idkp->kref, ide_disk_release);
ide_device_put(drive);
mutex_unlock(&idedisk_ref_mutex);
}

Expand Down
11 changes: 6 additions & 5 deletions trunk/drivers/ide/ide-floppy.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,21 +167,22 @@ static struct ide_floppy_obj *ide_floppy_get(struct gendisk *disk)
mutex_lock(&idefloppy_ref_mutex);
floppy = ide_floppy_g(disk);
if (floppy) {
kref_get(&floppy->kref);
if (ide_device_get(floppy->drive)) {
kref_put(&floppy->kref, idefloppy_cleanup_obj);
if (ide_device_get(floppy->drive))
floppy = NULL;
}
else
kref_get(&floppy->kref);
}
mutex_unlock(&idefloppy_ref_mutex);
return floppy;
}

static void ide_floppy_put(struct ide_floppy_obj *floppy)
{
ide_drive_t *drive = floppy->drive;

mutex_lock(&idefloppy_ref_mutex);
ide_device_put(floppy->drive);
kref_put(&floppy->kref, idefloppy_cleanup_obj);
ide_device_put(drive);
mutex_unlock(&idefloppy_ref_mutex);
}

Expand Down
11 changes: 6 additions & 5 deletions trunk/drivers/ide/ide-tape.c
Original file line number Diff line number Diff line change
Expand Up @@ -331,21 +331,22 @@ static struct ide_tape_obj *ide_tape_get(struct gendisk *disk)
mutex_lock(&idetape_ref_mutex);
tape = ide_tape_g(disk);
if (tape) {
kref_get(&tape->kref);
if (ide_device_get(tape->drive)) {
kref_put(&tape->kref, ide_tape_release);
if (ide_device_get(tape->drive))
tape = NULL;
}
else
kref_get(&tape->kref);
}
mutex_unlock(&idetape_ref_mutex);
return tape;
}

static void ide_tape_put(struct ide_tape_obj *tape)
{
ide_drive_t *drive = tape->drive;

mutex_lock(&idetape_ref_mutex);
ide_device_put(tape->drive);
kref_put(&tape->kref, ide_tape_release);
ide_device_put(drive);
mutex_unlock(&idetape_ref_mutex);
}

Expand Down
11 changes: 6 additions & 5 deletions trunk/drivers/scsi/ide-scsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,21 +102,22 @@ static struct ide_scsi_obj *ide_scsi_get(struct gendisk *disk)
mutex_lock(&idescsi_ref_mutex);
scsi = ide_scsi_g(disk);
if (scsi) {
scsi_host_get(scsi->host);
if (ide_device_get(scsi->drive)) {
scsi_host_put(scsi->host);
if (ide_device_get(scsi->drive))
scsi = NULL;
}
else
scsi_host_get(scsi->host);
}
mutex_unlock(&idescsi_ref_mutex);
return scsi;
}

static void ide_scsi_put(struct ide_scsi_obj *scsi)
{
ide_drive_t *drive = scsi->drive;

mutex_lock(&idescsi_ref_mutex);
ide_device_put(scsi->drive);
scsi_host_put(scsi->host);
ide_device_put(drive);
mutex_unlock(&idescsi_ref_mutex);
}

Expand Down

0 comments on commit 94c3a8e

Please sign in to comment.