[lkml]   [2002]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: swsusp: don't eat ide disks

> > How do I quiesce a queue? Is it ll_rw_blk stuff?
> Just send a request down the request list, and make sure that
> - the command is marked as being non-mergeable or re-orderable by
> software (as all special commands are)
> - the command is not re-orderable / mergeable by hardware (and since the
> command in question would be something like "flush" or "spindown",
> hardware really would be quite broken if it re-ordered it ;)
> and then just wait for its completion.

Okay, so it can be done.

Is that really the right way to prepare disks for suspend?

I sleep all devices by telling driverfs to sleep them. Should I tell
all block devices, then tell driverfs? Seems hacky to me. Or should
idedisk_suspend generate request for itself, then pass it through

> The code is not that complicated, it looks roughly something like
> struct request *rq;
> rq = blk_get_request(q, WRITE, __GFP_WAIT);
> rq->flags = REQ_BLOCK_PC;
> rq->data = NULL;
> rq->data_len = 0;
> rq->timeout = 5*HZ; /* Or whatever */
> memset(rq->cmd, 0, sizeof(rq->cmd));
> rq->cmd[0] = SYNCHRONIZE_CACHE;
> .. fill in whatever bytes the SYNCHRONIZE_CACHE cmd needs ..
> rq->cmd_len = 10;
> err = blk_do_rq(q, bdev, rq);
> blk_put_request(rq);

Casualities in World Trade Center: ~3k dead inside the building,
cryptography in U.S.A. and free speech in Czech Republic.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:30    [W:0.223 / U:2.604 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site