> > + sync_blockdev(bdev); > > Why ignore the return value from sync_blockdev? It calls > filemap_write_and_wait, which clears AS_EIO/AS_ENOSPC from the bdev > mapping, which means that we'll silently drop accumulated IO errors. Because freeze_bdev() has always ignored sync_blockdev() errors so far and I'm not sure what we'd do with that error. We can report it but we might confuse callers that think that the freeze failed when it hasn't. > > > + mutex_unlock(&bdev->bd_holder_lock); > > Also not sure why this fallback case holds bd_holder_lock across the > sync_blockdev but fs_bdev_freeze doesn't? I'll massage that to be consistent. Thanks!