Wait. Why do we have this insane cleanup semantic anyway? I've justgrepped through the various readpages() methods out there. None of themdo anything more sophisticated than to call put_pages_list() in case oferror, and several of them get that wrong (including NFS, and CIFS).

Instead of the BUG_ON(), why can't we just stick a put_pages_list() into__do_page_cache_readahead() and then get rid of all that duplicatederror handling in mpage_readpages(), nfs_readpages(), fuse_readpages(),etc?