• Mike Marshall's avatar
    orangefs: remember count when reading. · c2549f8c
    Mike Marshall authored
    Orangefs wins when it can do IO on large (up to four meg) blocks at a time,
    and looses when it has to do tiny "small io" reads and writes. Accessing
    Orangefs through the pagecache with the kernel module helps with small io,
    both reading and writing, a great deal. Readpage generally tries to fetch a
    page (four k) at a time. We'll let users use "count" (as in read(2) or
    pread(2) for example) as a knob to control how much data they get from
    Orangefs at a time and we'll try to use the data to fill extra
    pagecache pages when we get to ->readpage, hopefully resulting in
    fewer calls to readpage and Orangefs userspace.
    
    We need a way to remember how they set count so that we can still have
    it available when we get to ->readpage.
    
     - We'll use file->private_data to keep track of "count".
       We'll wrap generic_file_open with orangefs_file_open and
       initialize private_data to NULL there.
    
     - In ->read_iter we have access to both "count" and file, so
       we'll kmalloc some space onto file->private_data and store
       "count" there.
    
     - We'll kfree file->private_data each time we visit ->flush and
       reinitialize it to NULL.
    Signed-off-by: default avatarMike Marshall <hubcap@omnibond.com>
    Signed-off-by: default avatarMartin Brandenburg <martin@omnibond.com>
    c2549f8c
orangefs-kernel.h 13.2 KB