The mapping_set_error() helper sets the correct AS_ flag for the mapping
so there is no reason to open code it.  Use the helper directly.
[akpm@linux-foundation.org: be honest about conversion from -ENXIO to -EIO]
Link: http://lkml.kernel.org/r/20160912111608.2588-2-mhocko@kernel.org
Signed-off-by: Michal Hocko <mhocko@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
                obj->vob_discard_page_warned = 0;
        } else {
                SetPageError(vmpage);
-               if (ioret == -ENOSPC)
-                       set_bit(AS_ENOSPC, &inode->i_mapping->flags);
-               else
-                       set_bit(AS_EIO, &inode->i_mapping->flags);
+               mapping_set_error(inode->i_mapping, ioret);
 
                if ((ioret == -ESHUTDOWN || ioret == -EINTR) &&
                    obj->vob_discard_page_warned == 0) {
 
                switch (ret) {
                case -EDQUOT:
                case -ENOSPC:
-                       set_bit(AS_ENOSPC,
-                               &wb->vnode->vfs_inode.i_mapping->flags);
+                       mapping_set_error(wb->vnode->vfs_inode.i_mapping, -ENOSPC);
                        break;
                case -EROFS:
                case -EIO:
                case -ENOMEDIUM:
                case -ENXIO:
                        afs_kill_pages(wb->vnode, true, first, last);
-                       set_bit(AS_EIO, &wb->vnode->vfs_inode.i_mapping->flags);
+                       mapping_set_error(wb->vnode->vfs_inode.i_mapping, -EIO);
                        break;
                case -EACCES:
                case -EPERM:
 
                set_buffer_uptodate(bh);
        } else {
                buffer_io_error(bh, ", lost async page write");
-               set_bit(AS_EIO, &page->mapping->flags);
+               mapping_set_error(page->mapping, -EIO);
                set_buffer_write_io_error(bh);
                clear_buffer_uptodate(bh);
                SetPageError(page);
        bh = head;
        do {
                if (buffer_write_io_error(bh) && page->mapping)
-                       set_bit(AS_EIO, &page->mapping->flags);
+                       mapping_set_error(page->mapping, -EIO);
                if (buffer_busy(bh))
                        goto failed;
                bh = bh->b_this_page;
 
 fail:
        EXOFS_DBGMSG("Error: writepage_strip(0x%lx, 0x%lx)=>%d\n",
                     inode->i_ino, page->index, ret);
-       set_bit(AS_EIO, &page->mapping->flags);
+       mapping_set_error(page->mapping, -EIO);
        unlock_page(page);
        return ret;
 }
 
 
                if (bio->bi_error) {
                        SetPageError(page);
-                       set_bit(AS_EIO, &page->mapping->flags);
+                       mapping_set_error(page->mapping, -EIO);
                }
                bh = head = page_buffers(page);
                /*
 
                fscrypt_pullback_bio_page(&page, true);
 
                if (unlikely(bio->bi_error)) {
-                       set_bit(AS_EIO, &page->mapping->flags);
+                       mapping_set_error(page->mapping, -EIO);
                        f2fs_stop_checkpoint(sbi, true);
                }
                end_page_writeback(page);
 
                         * filemap_fdatawait_range(), set it again so
                         * that user process can get -EIO from fsync().
                         */
-                       set_bit(AS_EIO,
-                               &jinode->i_vfs_inode->i_mapping->flags);
+                       mapping_set_error(jinode->i_vfs_inode->i_mapping, -EIO);
 
                        if (!ret)
                                ret = err;