Re: [PATCH] fs: clear writeback errors in inode_init_always

Theodore Y. Ts'o
2018-05-20T19:41:38Z

On Sun, May 20, 2018 at 12:20:09PM -0700, Matthew Wilcox wrote:
> Oh! I misunderstood. I thought that bd_inode->i_mapping pointed to
> lo_backing_file->f_mapping.
>
> So how about this to preserve the error _in the file with the error_?
>
> if (bdev) {
> bdput(bdev);
> invalidate_bdev(bdev);
> + filp->f_mapping->wb_err = bdev->bd_inode->i_mapping->wb_err;
> + bdev->bd_inode->i_mapping->wb_err = 0;
> }
> set_capacity(lo->lo_disk, 0);
> loop_sysfs_exit(lo);

I don't think it's necessary. wb_err on the underlying file would
have already been set when the error was set. So if someone tried
calling fsync(2) on the underlying file, it would have collected the
error already. Re-setting the error when we detach the loop device
doesn't seem to make any sense.

- Ted