• J
    Revert "ceph: SetPageError() for writeback pages if writepages fails" · 6fc1fe5e
    Jeff Layton 提交于
    This reverts commit b109eec6.
    
    If I'm filling up a filesystem with this sort of command:
    
        $ dd if=/dev/urandom of=/mnt/cephfs/fillfile bs=2M oflag=sync
    
    ...then I'll eventually get back EIO on a write. Further calls
    will give us ENOSPC.
    
    I'm not sure what prompted this change, but I don't think it's what we
    want to do. If writepages failed, we will have already set the mapping
    error appropriately, and that's what gets reported by fsync() or
    close().
    
    __filemap_fdatawait_range however, does this:
    
    	wait_on_page_writeback(page);
    	if (TestClearPageError(page))
    		ret = -EIO;
    
    ...and that -EIO ends up trumping the mapping's error if one exists.
    
    When writepages fails, we only want to set the error in the mapping,
    and not flag the individual pages.
    Signed-off-by: NJeff Layton <jlayton@redhat.com>
    Reviewed-by: N"Yan, Zheng” <zyan@redhat.com>
    Signed-off-by: NIlya Dryomov <idryomov@gmail.com>
    6fc1fe5e
addr.c 51.6 KB