Messages in this thread Patch in this message | | | Date | Thu, 10 Aug 2006 08:35:32 +0200 | From | Jens Axboe <> | Subject | Re: mm snapshot broken-out-2006-08-08-00-59.tar.gz uploaded |
| |
On Thu, Aug 10 2006, Michal Piotrowski wrote: > Hi, > > On 09/08/06, Michal Piotrowski <michal.k.k.piotrowski@gmail.com> wrote: > >On 08/08/06, akpm@osdl.org <akpm@osdl.org> wrote: > >> The mm snapshot broken-out-2006-08-08-00-59.tar.gz has been uploaded to > >> > >> > >ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/mm/broken-out-2006-08-08-00-59.tar.gz > >> > > > >When I want to halt system I type "init 0", but it stops on > > > >Halting system... > >Synchronizing SCSI cache for disk sda > >Shutdown: hda > > > >Problem appears on 2.6.18-rc3-mm*. I guess that this is an IDE or ACPI bug. > >I'll revert IDE and ACPI patches. If it won't help, I'll do binary search. > > It's a git-block.patch > > Jens, can you look at this? > > Here is a config file > http://www.stardust.webpages.pl/files/mm/2.6.18-rc4-mm1/mm-config2
It's the already solved bug, I believe. The version referenced above still has the fixed REQ_TYPE_ATA_TASKFILE and ->end_io_data for suspend problem.
Let me know if it works or not with this applied.
diff -urp linux-2.6.18-rc3.virgin/drivers/ide/ide.c linux-2.6.18-rc3/drivers/ide/ide.c --- linux-2.6.18-rc3.virgin/drivers/ide/ide.c 2006-08-10 08:32:18.000000000 +0200 +++ linux-2.6.18-rc3/drivers/ide/ide.c 2006-08-10 08:34:05.000000000 +0200 @@ -1223,7 +1223,7 @@ static int generic_ide_suspend(struct de memset(&args, 0, sizeof(args)); rq.cmd_type = REQ_TYPE_PM_SUSPEND; rq.special = &args; - rq.end_io_data = &rqpm; + rq.data = &rqpm; rqpm.pm_step = ide_pm_state_start_suspend; if (mesg.event == PM_EVENT_PRETHAW) mesg.event = PM_EVENT_FREEZE; @@ -1244,7 +1244,7 @@ static int generic_ide_resume(struct dev memset(&args, 0, sizeof(args)); rq.cmd_type = REQ_TYPE_PM_RESUME; rq.special = &args; - rq.end_io_data = &rqpm; + rq.data = &rqpm; rqpm.pm_step = ide_pm_state_start_resume; rqpm.pm_state = PM_EVENT_ON; diff -urp linux-2.6.18-rc3.virgin/drivers/ide/ide-io.c linux-2.6.18-rc3/drivers/ide/ide-io.c --- linux-2.6.18-rc3.virgin/drivers/ide/ide-io.c 2006-08-10 08:32:18.000000000 +0200 +++ linux-2.6.18-rc3/drivers/ide/ide-io.c 2006-08-10 08:34:20.000000000 +0200 @@ -141,7 +141,7 @@ enum { static void ide_complete_power_step(ide_drive_t *drive, struct request *rq, u8 stat, u8 error) { - struct request_pm_state *pm = rq->end_io_data; + struct request_pm_state *pm = rq->data; if (drive->media != ide_disk) return; @@ -167,7 +167,7 @@ static void ide_complete_power_step(ide_ static ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *rq) { - struct request_pm_state *pm = rq->end_io_data; + struct request_pm_state *pm = rq->data; ide_task_t *args = rq->special; memset(args, 0, sizeof(*args)); @@ -402,7 +402,7 @@ void ide_end_drive_cmd (ide_drive_t *dri args[5] = hwif->INB(IDE_HCYL_REG); args[6] = hwif->INB(IDE_SELECT_REG); } - } else if (rq->cmd_type & REQ_TYPE_ATA_TASKFILE) { + } else if (rq->cmd_type == REQ_TYPE_ATA_TASKFILE) { ide_task_t *args = (ide_task_t *) rq->special; if (rq->errors == 0) rq->errors = !OK_STAT(stat,READY_STAT,BAD_STAT); @@ -433,7 +433,7 @@ void ide_end_drive_cmd (ide_drive_t *dri } } } else if (blk_pm_request(rq)) { - struct request_pm_state *pm = rq->end_io_data; + struct request_pm_state *pm = rq->data; #ifdef DEBUG_PM printk("%s: complete_power_step(step: %d, stat: %x, err: %x)\n", drive->name, rq->pm->pm_step, stat, err); @@ -945,7 +945,7 @@ done: static void ide_check_pm_state(ide_drive_t *drive, struct request *rq) { - struct request_pm_state *pm = rq->end_io_data; + struct request_pm_state *pm = rq->data; if (blk_pm_suspend_request(rq) && pm->pm_step == ide_pm_state_start_suspend) @@ -1030,7 +1030,7 @@ static ide_startstop_t start_request (id rq->cmd_type == REQ_TYPE_ATA_TASKFILE) return execute_drive_cmd(drive, rq); else if (blk_pm_request(rq)) { - struct request_pm_state *pm = rq->end_io_data; + struct request_pm_state *pm = rq->data; #ifdef DEBUG_PM printk("%s: start_power_step(step: %d)\n", drive->name, rq->pm->pm_step); -- Jens Axboe
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |