Implemented minimum speed in burn_drive_set_speed()

This commit is contained in:
2007-07-17 08:57:24 +00:00
parent 1087d402f2
commit bdadae6ba5
5 changed files with 65 additions and 46 deletions

View File

@ -1623,17 +1623,23 @@ int burn_drive_get_best_speed(struct burn_drive *d, int speed_goal,
if (flag & 2)
source = -1;
if (speed_goal < 0)
best_speed = 2000000000;
*best_descr = NULL;
for (sd = d->mdata->speed_descriptors; sd != NULL; sd = sd->next) {
if ((source >= 0 && sd->source != source) ||
sd->write_speed <= 0)
continue;
if (flag & 1)
speed = sd->read_speed;
else
speed = sd->write_speed;
if (speed_goal <= 0) {
if ((source >= 0 && sd->source != source) ||
speed <= 0)
continue;
if (speed_goal < 0) {
if (speed < best_speed) {
best_speed = speed;
*best_descr = sd;
}
} else if (speed_goal == 0) {
if ((source == 2 && sd->end_lba > best_lba) ||
((source !=2 || sd->end_lba == best_lba) &&
speed > best_speed)) {