git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git]
/
drivers
/
ide
/
ide-tape.c
diff --git
a/drivers/ide/ide-tape.c
b/drivers/ide/ide-tape.c
index
f04791a
..
0101d0d
100644
(file)
--- a/
drivers/ide/ide-tape.c
+++ b/
drivers/ide/ide-tape.c
@@
-433,7
+433,6
@@
#include <linux/timer.h>
#include <linux/mm.h>
#include <linux/interrupt.h>
#include <linux/timer.h>
#include <linux/mm.h>
#include <linux/interrupt.h>
-#include <linux/jiffies.h>
#include <linux/major.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/errno.h>
#include <linux/major.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/errno.h>
@@
-444,7
+443,6
@@
#include <linux/smp_lock.h>
#include <linux/completion.h>
#include <linux/bitops.h>
#include <linux/smp_lock.h>
#include <linux/completion.h>
#include <linux/bitops.h>
-#include <linux/mutex.h>
#include <asm/byteorder.h>
#include <asm/irq.h>
#include <asm/byteorder.h>
#include <asm/irq.h>
@@
-1013,7
+1011,7
@@
typedef struct ide_tape_obj {
int debug_level;
} idetape_tape_t;
int debug_level;
} idetape_tape_t;
-static DE
FINE_MUTEX(idetape_ref_mutex
);
+static DE
CLARE_MUTEX(idetape_ref_sem
);
static struct class *idetape_sysfs_class;
static struct class *idetape_sysfs_class;
@@
-1026,11
+1024,11
@@
static struct ide_tape_obj *ide_tape_get(struct gendisk *disk)
{
struct ide_tape_obj *tape = NULL;
{
struct ide_tape_obj *tape = NULL;
-
mutex_lock(&idetape_ref_mutex
);
+
down(&idetape_ref_sem
);
tape = ide_tape_g(disk);
if (tape)
kref_get(&tape->kref);
tape = ide_tape_g(disk);
if (tape)
kref_get(&tape->kref);
-
mutex_unlock(&idetape_ref_mutex
);
+
up(&idetape_ref_sem
);
return tape;
}
return tape;
}
@@
-1038,9
+1036,9
@@
static void ide_tape_release(struct kref *);
static void ide_tape_put(struct ide_tape_obj *tape)
{
static void ide_tape_put(struct ide_tape_obj *tape)
{
-
mutex_lock(&idetape_ref_mutex
);
+
down(&idetape_ref_sem
);
kref_put(&tape->kref, ide_tape_release);
kref_put(&tape->kref, ide_tape_release);
-
mutex_unlock(&idetape_ref_mutex
);
+
up(&idetape_ref_sem
);
}
/*
}
/*
@@
-1292,11
+1290,11
@@
static struct ide_tape_obj *ide_tape_chrdev_get(unsigned int i)
{
struct ide_tape_obj *tape = NULL;
{
struct ide_tape_obj *tape = NULL;
-
mutex_lock(&idetape_ref_mutex
);
+
down(&idetape_ref_sem
);
tape = idetape_devs[i];
if (tape)
kref_get(&tape->kref);
tape = idetape_devs[i];
if (tape)
kref_get(&tape->kref);
-
mutex_unlock(&idetape_ref_mutex
);
+
up(&idetape_ref_sem
);
return tape;
}
return tape;
}
@@
-2337,7
+2335,7
@@
static ide_startstop_t idetape_rw_callback (ide_drive_t *drive)
}
if (time_after(jiffies, tape->insert_time))
tape->insert_speed = tape->insert_size / 1024 * HZ / (jiffies - tape->insert_time);
}
if (time_after(jiffies, tape->insert_time))
tape->insert_speed = tape->insert_size / 1024 * HZ / (jiffies - tape->insert_time);
- if (
time_after_eq(jiffies, tape->avg_time + HZ)
) {
+ if (
jiffies - tape->avg_time >= HZ
) {
tape->avg_speed = tape->avg_size * HZ / (jiffies - tape->avg_time) / 1024;
tape->avg_size = 0;
tape->avg_time = jiffies;
tape->avg_speed = tape->avg_size * HZ / (jiffies - tape->avg_time) / 1024;
tape->avg_size = 0;
tape->avg_time = jiffies;
@@
-2498,7
+2496,7
@@
static ide_startstop_t idetape_do_request(ide_drive_t *drive,
} else {
return ide_do_reset(drive);
}
} else {
return ide_do_reset(drive);
}
- } else if (
time_after(jiffies, tape->dsc_polling_start + IDETAPE_DSC_MA_THRESHOLD)
)
+ } else if (
jiffies - tape->dsc_polling_start > IDETAPE_DSC_MA_THRESHOLD
)
tape->dsc_polling_frequency = IDETAPE_DSC_MA_SLOW;
idetape_postpone_request(drive);
return ide_stopped;
tape->dsc_polling_frequency = IDETAPE_DSC_MA_SLOW;
idetape_postpone_request(drive);
return ide_stopped;
@@
-4872,11
+4870,11
@@
static int ide_tape_probe(ide_drive_t *drive)
drive->driver_data = tape;
drive->driver_data = tape;
-
mutex_lock(&idetape_ref_mutex
);
+
down(&idetape_ref_sem
);
for (minor = 0; idetape_devs[minor]; minor++)
;
idetape_devs[minor] = tape;
for (minor = 0; idetape_devs[minor]; minor++)
;
idetape_devs[minor] = tape;
-
mutex_unlock(&idetape_ref_mutex
);
+
up(&idetape_ref_sem
);
idetape_setup(drive, tape, minor);
idetape_setup(drive, tape, minor);