[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.021 / U:54.428 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site