• Suparna Bhattacharya's avatar
    [PATCH] AIO: retry infrastructure fixes and enhancements · 63b05203
    Suparna Bhattacharya authored
    From: Daniel McNeil <daniel@osdl.org>
    From: Chris Mason <mason@suse.com>
    
     AIO: retry infrastructure fixes and enhancements
    
     Reorganises, comments and fixes the AIO retry logic. Fixes 
     and enhancements include:
    
       - Split iocb setup and execution in io_submit
            (also fixes io_submit error reporting)
       - Use aio workqueue instead of keventd for retries
       - Default high level retry methods
       - Subtle use_mm/unuse_mm fix
       - Code commenting
       - Fix aio process hang on EINVAL (Daniel McNeil)
       - Hold the context lock across unuse_mm
       - Acquire task_lock in use_mm()
       - Allow fops to override the retry method with their own
       - Elevated ref count for AIO retries (Daniel McNeil)
       - set_fs needed when calling use_mm
       - Flush workqueue on __put_ioctx (Chris Mason)
       - Fix io_cancel to work with retries (Chris Mason)
       - Read-immediate option for socket/pipe retry support
    
     Note on default high-level retry methods support
     ================================================
    
     High-level retry methods allows an AIO request to be executed as a series of
     non-blocking iterations, where each iteration retries the remaining part of
     the request from where the last iteration left off, by reissuing the
     corresponding AIO fop routine with modified arguments representing the
     remaining I/O.  The retries are "kicked" via the AIO waitqueue callback
     aio_wake_function() which replaces the default wait queue entry used for
     blocking waits.
    
     The high level retry infrastructure is responsible for running the
     iterations in the mm context (address space) of the caller, and ensures that
     only one retry instance is active at a given time, thus relieving the fops
     themselves from having to deal with potential races of that sort.
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    63b05203
aio.c 42.8 KB