diff options
| author | Arnd Bergmann <arnd@arndb.de> | 2014-07-28 17:04:15 +0200 |
|---|---|---|
| committer | Arnd Bergmann <arnd@arndb.de> | 2014-07-28 17:04:15 +0200 |
| commit | 565f46dc4d0c12dda1353dbd76314614c7069c20 (patch) | |
| tree | a9e933f56e4f935bc3bb6b0d270b6be789fed6a9 /fs/btrfs/ordered-data.c | |
| parent | 4fd1f229c2bc39b7f35f2a9f9fb9892f2d665359 (diff) | |
| parent | 9a3c4145af32125c5ee39c0272662b47307a8323 (diff) | |
Merge tag 'v3.16-rc6' into next/dt
Update to Linux 3.16-rc6 as a dependency for the broadcom changes.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'fs/btrfs/ordered-data.c')
| -rw-r--r-- | fs/btrfs/ordered-data.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c index e12441c7cf1d..7187b14faa6c 100644 --- a/fs/btrfs/ordered-data.c +++ b/fs/btrfs/ordered-data.c @@ -484,8 +484,19 @@ void btrfs_wait_logged_extents(struct btrfs_root *log, u64 transid) log_list); list_del_init(&ordered->log_list); spin_unlock_irq(&log->log_extents_lock[index]); + + if (!test_bit(BTRFS_ORDERED_IO_DONE, &ordered->flags) && + !test_bit(BTRFS_ORDERED_DIRECT, &ordered->flags)) { + struct inode *inode = ordered->inode; + u64 start = ordered->file_offset; + u64 end = ordered->file_offset + ordered->len - 1; + + WARN_ON(!inode); + filemap_fdatawrite_range(inode->i_mapping, start, end); + } wait_event(ordered->wait, test_bit(BTRFS_ORDERED_IO_DONE, &ordered->flags)); + btrfs_put_ordered_extent(ordered); spin_lock_irq(&log->log_extents_lock[index]); } |
