diff options
Diffstat (limited to 'fs/cifs/file.c')
-rw-r--r-- | fs/cifs/file.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 12bb656fbe75..83b4741b6ad0 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c | |||
@@ -1523,6 +1523,9 @@ int cifs_fsync(struct file *file, struct dentry *dentry, int datasync) | |||
1523 | { | 1523 | { |
1524 | int xid; | 1524 | int xid; |
1525 | int rc = 0; | 1525 | int rc = 0; |
1526 | struct cifsTconInfo *tcon; | ||
1527 | struct cifsFileInfo *smbfile = | ||
1528 | (struct cifsFileInfo *)file->private_data; | ||
1526 | struct inode *inode = file->f_path.dentry->d_inode; | 1529 | struct inode *inode = file->f_path.dentry->d_inode; |
1527 | 1530 | ||
1528 | xid = GetXid(); | 1531 | xid = GetXid(); |
@@ -1534,7 +1537,11 @@ int cifs_fsync(struct file *file, struct dentry *dentry, int datasync) | |||
1534 | if (rc == 0) { | 1537 | if (rc == 0) { |
1535 | rc = CIFS_I(inode)->write_behind_rc; | 1538 | rc = CIFS_I(inode)->write_behind_rc; |
1536 | CIFS_I(inode)->write_behind_rc = 0; | 1539 | CIFS_I(inode)->write_behind_rc = 0; |
1540 | tcon = CIFS_SB(inode->i_sb)->tcon; | ||
1541 | if (!rc && tcon && smbfile) | ||
1542 | rc = CIFSSMBFlush(xid, tcon, smbfile->netfid); | ||
1537 | } | 1543 | } |
1544 | |||
1538 | FreeXid(xid); | 1545 | FreeXid(xid); |
1539 | return rc; | 1546 | return rc; |
1540 | } | 1547 | } |