[Lustre-devel] async write and abort_recov

Alexey Lyashkov alexey.lyashkov at clusterstor.com
Thu Jul 15 12:25:18 PDT 2010


On Jul 15, 2010, at 21:57, John Hammond wrote:

> On 07/15/2010 11:19 AM, Andreas Dilger wrote:
>> On 2010-07-15, at 02:05, Aurelien Degremont wrote:
>>> Andreas Dilger a écrit :
>>>> While I know Lustre will save errors from async write RPCs into
>>>> the file descriptor for later write calls or fsync), I don't know
>>>> if we save any IO error into the file descriptor if we discard
>>>> pages due to eviction.  I think only errors due to currently
>>>> in-flight RPCs that are aborted due to client eviction are
>>>> returned.
> 
> If the async write fails due to eviction then writepage() will store 
> -ESHUTDOWN in the inode info's lli_async_rc member.
no sure. look to ll_ap_completion to correct error reporting.

        } else {                                                                                                
                if (cmd & OBD_BRW_READ) {                                                                       
                        llap->llap_defer_uptodate = 0;                                                          
                }                                                                                               
                SetPageError(page);                                                                             
                if (rc == -ENOSPC)                                                                              
                        set_bit(AS_ENOSPC, &page->mapping->flags);                                              
                else                                                                                            
                        set_bit(AS_EIO, &page->mapping->flags);                                                 
        }                                                                                                       

but that codepath never called if client has dirty data, but async IO don't started.
in that case, client canceled owned locks with local + discard flags set, so ll_page_removal_cb called with discard flag set and error bit don't set in mapping.



--------------------------------------
Alexey Lyashkov
alexey.lyashkov at clusterstor.com







More information about the lustre-devel mailing list