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 -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html