diff options
Diffstat (limited to 'fs/btrfs/btrfs_inode.h')
-rw-r--r-- | fs/btrfs/btrfs_inode.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h index de5e4f2adfea..0ef5cc13fae2 100644 --- a/fs/btrfs/btrfs_inode.h +++ b/fs/btrfs/btrfs_inode.h | |||
@@ -66,7 +66,11 @@ struct btrfs_inode { | |||
66 | */ | 66 | */ |
67 | struct btrfs_key location; | 67 | struct btrfs_key location; |
68 | 68 | ||
69 | /* Lock for counters */ | 69 | /* |
70 | * Lock for counters and all fields used to determine if the inode is in | ||
71 | * the log or not (last_trans, last_sub_trans, last_log_commit, | ||
72 | * logged_trans). | ||
73 | */ | ||
70 | spinlock_t lock; | 74 | spinlock_t lock; |
71 | 75 | ||
72 | /* the extent_tree has caches of all the extent mappings to disk */ | 76 | /* the extent_tree has caches of all the extent mappings to disk */ |
@@ -250,6 +254,9 @@ static inline bool btrfs_is_free_space_inode(struct inode *inode) | |||
250 | 254 | ||
251 | static inline int btrfs_inode_in_log(struct inode *inode, u64 generation) | 255 | static inline int btrfs_inode_in_log(struct inode *inode, u64 generation) |
252 | { | 256 | { |
257 | int ret = 0; | ||
258 | |||
259 | spin_lock(&BTRFS_I(inode)->lock); | ||
253 | if (BTRFS_I(inode)->logged_trans == generation && | 260 | if (BTRFS_I(inode)->logged_trans == generation && |
254 | BTRFS_I(inode)->last_sub_trans <= | 261 | BTRFS_I(inode)->last_sub_trans <= |
255 | BTRFS_I(inode)->last_log_commit && | 262 | BTRFS_I(inode)->last_log_commit && |
@@ -263,9 +270,10 @@ static inline int btrfs_inode_in_log(struct inode *inode, u64 generation) | |||
263 | */ | 270 | */ |
264 | smp_mb(); | 271 | smp_mb(); |
265 | if (list_empty(&BTRFS_I(inode)->extent_tree.modified_extents)) | 272 | if (list_empty(&BTRFS_I(inode)->extent_tree.modified_extents)) |
266 | return 1; | 273 | ret = 1; |
267 | } | 274 | } |
268 | return 0; | 275 | spin_unlock(&BTRFS_I(inode)->lock); |
276 | return ret; | ||
269 | } | 277 | } |
270 | 278 | ||
271 | #define BTRFS_DIO_ORIG_BIO_SUBMITTED 0x1 | 279 | #define BTRFS_DIO_ORIG_BIO_SUBMITTED 0x1 |