|
@@ -452,9 +452,7 @@ void btrfs_get_logged_extents(struct inode *inode,
|
|
continue;
|
|
continue;
|
|
if (entry_end(ordered) <= start)
|
|
if (entry_end(ordered) <= start)
|
|
break;
|
|
break;
|
|
- if (!list_empty(&ordered->log_list))
|
|
|
|
- continue;
|
|
|
|
- if (test_bit(BTRFS_ORDERED_LOGGED, &ordered->flags))
|
|
|
|
|
|
+ if (test_and_set_bit(BTRFS_ORDERED_LOGGED, &ordered->flags))
|
|
continue;
|
|
continue;
|
|
list_add(&ordered->log_list, logged_list);
|
|
list_add(&ordered->log_list, logged_list);
|
|
atomic_inc(&ordered->refs);
|
|
atomic_inc(&ordered->refs);
|
|
@@ -511,8 +509,7 @@ void btrfs_wait_logged_extents(struct btrfs_trans_handle *trans,
|
|
wait_event(ordered->wait, test_bit(BTRFS_ORDERED_IO_DONE,
|
|
wait_event(ordered->wait, test_bit(BTRFS_ORDERED_IO_DONE,
|
|
&ordered->flags));
|
|
&ordered->flags));
|
|
|
|
|
|
- if (!test_and_set_bit(BTRFS_ORDERED_LOGGED, &ordered->flags))
|
|
|
|
- list_add_tail(&ordered->trans_list, &trans->ordered);
|
|
|
|
|
|
+ list_add_tail(&ordered->trans_list, &trans->ordered);
|
|
spin_lock_irq(&log->log_extents_lock[index]);
|
|
spin_lock_irq(&log->log_extents_lock[index]);
|
|
}
|
|
}
|
|
spin_unlock_irq(&log->log_extents_lock[index]);
|
|
spin_unlock_irq(&log->log_extents_lock[index]);
|