"NeilBrown" [off-list ref] writes:
congestion_wait() in this context is just a sleep - block devices do not
in general support congestion signalling any more.
The goal here is to wait for any recently written data to get to
storage. This can be achieved using blkdev_issue_flush().
Purpose of flush option should be for making umount faster, not data
integrity. (but current flush implement is strange at several places, IMO)
So, I don't think the issue_flush is not proper for it (flush is very
slow on some usb thumb), and rather I think it is better off to just
remove the congestion_wait().
Thanks.
quoted hunk
Signed-off-by: NeilBrown <redacted>
---
fs/fat/file.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/fat/file.c b/fs/fat/file.c
index 13855ba49cd9..c50a52f40e37 100644
--- a/fs/fat/file.c
+++ b/fs/fat/file.c
@@ -175,9 +175,9 @@ long fat_generic_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
static int fat_file_release(struct inode *inode, struct file *filp)
{
if ((filp->f_mode & FMODE_WRITE) &&
- MSDOS_SB(inode->i_sb)->options.flush) {
+ MSDOS_SB(inode->i_sb)->options.flush) {
fat_flush_inodes(inode->i_sb, inode, NULL);
- congestion_wait(BLK_RW_ASYNC, HZ/10);
+ blkdev_issue_flush(inode->i_sb->s_bdev);
}
return 0;
}
--
OGAWA Hirofumi [off-list ref]