• Jeff Layton's avatar
    cifs: add cifs_async_readv · e28bc5b1
    Jeff Layton authored
    ...which will allow cifs to do an asynchronous read call to the server.
    The caller will allocate and set up cifs_readdata for each READ_AND_X
    call that should be issued on the wire. The pages passed in are added
    to the pagecache, but not placed on the LRU list yet (as we need the
    page->lru to keep the pages on the list in the readdata).
    
    When cifsd identifies the mid, it will see that there is a special
    receive handler for the call, and use that to receive the rest of the
    frame. cifs_readv_receive will then marshal up a kvec array with
    kmapped pages from the pagecache, which eliminates one copy of the
    data. Once the data is received, the pages are added to the LRU list,
    set uptodate, and unlocked.
    Reviewed-and-Tested-by: default avatarPavel Shilovsky <piastry@etersoft.ru>
    Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
    e28bc5b1
cifssmb.c 189 KB