diff options
author | Miao Xie <miaox@cn.fujitsu.com> | 2012-09-06 06:04:27 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@fusionio.com> | 2012-10-01 15:19:12 -0400 |
commit | 2ecb79239bcd04c9d410f4cdce16adb6840b19da (patch) | |
tree | 9a2194dde73a1a822fa011c35745c3aafa316f86 /fs/btrfs/file.c | |
parent | 48c03c4bcfd7a1fcb1e05e9b1db1188cdbecf49a (diff) |
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>
Diffstat (limited to 'fs/btrfs/file.c')
-rw-r--r-- | fs/btrfs/file.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index a9d7815cf58e..793bc89c660f 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c | |||
@@ -1551,9 +1551,9 @@ int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) | |||
1551 | * ordered range does a filemape_write_and_wait_range which is why we | 1551 | * ordered range does a filemape_write_and_wait_range which is why we |
1552 | * don't do it above like other file systems. | 1552 | * don't do it above like other file systems. |
1553 | */ | 1553 | */ |
1554 | root->log_batch++; | 1554 | atomic_inc(&root->log_batch); |
1555 | btrfs_wait_ordered_range(inode, start, end); | 1555 | btrfs_wait_ordered_range(inode, start, end); |
1556 | root->log_batch++; | 1556 | atomic_inc(&root->log_batch); |
1557 | 1557 | ||
1558 | /* | 1558 | /* |
1559 | * check the transaction that last modified this inode | 1559 | * check the transaction that last modified this inode |