diff options
Diffstat (limited to 'fs/ntfs/dir.c')
-rw-r--r-- | fs/ntfs/dir.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/ntfs/dir.c b/fs/ntfs/dir.c index 0f48e7c5d9e1..99e36107ff60 100644 --- a/fs/ntfs/dir.c +++ b/fs/ntfs/dir.c | |||
@@ -1527,13 +1527,20 @@ static int ntfs_dir_open(struct inode *vi, struct file *filp) | |||
1527 | * this problem for now. We do write the $BITMAP attribute if it is present | 1527 | * this problem for now. We do write the $BITMAP attribute if it is present |
1528 | * which is the important one for a directory so things are not too bad. | 1528 | * which is the important one for a directory so things are not too bad. |
1529 | */ | 1529 | */ |
1530 | static int ntfs_dir_fsync(struct file *filp, int datasync) | 1530 | static int ntfs_dir_fsync(struct file *filp, loff_t start, loff_t end, |
1531 | int datasync) | ||
1531 | { | 1532 | { |
1532 | struct inode *bmp_vi, *vi = filp->f_mapping->host; | 1533 | struct inode *bmp_vi, *vi = filp->f_mapping->host; |
1533 | int err, ret; | 1534 | int err, ret; |
1534 | ntfs_attr na; | 1535 | ntfs_attr na; |
1535 | 1536 | ||
1536 | ntfs_debug("Entering for inode 0x%lx.", vi->i_ino); | 1537 | ntfs_debug("Entering for inode 0x%lx.", vi->i_ino); |
1538 | |||
1539 | err = filemap_write_and_wait_range(vi->i_mapping, start, end); | ||
1540 | if (err) | ||
1541 | return err; | ||
1542 | mutex_lock(&vi->i_mutex); | ||
1543 | |||
1537 | BUG_ON(!S_ISDIR(vi->i_mode)); | 1544 | BUG_ON(!S_ISDIR(vi->i_mode)); |
1538 | /* If the bitmap attribute inode is in memory sync it, too. */ | 1545 | /* If the bitmap attribute inode is in memory sync it, too. */ |
1539 | na.mft_no = vi->i_ino; | 1546 | na.mft_no = vi->i_ino; |
@@ -1555,6 +1562,7 @@ static int ntfs_dir_fsync(struct file *filp, int datasync) | |||
1555 | else | 1562 | else |
1556 | ntfs_warning(vi->i_sb, "Failed to f%ssync inode 0x%lx. Error " | 1563 | ntfs_warning(vi->i_sb, "Failed to f%ssync inode 0x%lx. Error " |
1557 | "%u.", datasync ? "data" : "", vi->i_ino, -ret); | 1564 | "%u.", datasync ? "data" : "", vi->i_ino, -ret); |
1565 | mutex_unlock(&vi->i_mutex); | ||
1558 | return ret; | 1566 | return ret; |
1559 | } | 1567 | } |
1560 | 1568 | ||