Btrfs: fix unprotected ->log_batch

We forget to protect ->log_batch when syncing a file, this patch fix
this problem by atomic operation. And ->log_batch is used to check
if there are parallel sync operations or not, so it is unnecessary to
reset it to 0 after the sync operation of the current log tree complete.

Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
This commit is contained in:
Miao Xie
2012-09-06 04:04:27 -06:00
committed by Chris Mason
parent 48c03c4bcf
commit 2ecb79239b
4 changed files with 9 additions and 11 deletions

View File

@ -1551,9 +1551,9 @@ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
* ordered range does a filemape_write_and_wait_range which is why we
* don't do it above like other file systems.
*/
root->log_batch++;
atomic_inc(&root->log_batch);
btrfs_wait_ordered_range(inode, start, end);
root->log_batch++;
atomic_inc(&root->log_batch);
/*
* check the transaction that last modified this inode