@@ -636,7 +636,7 @@ static noinline int lock_stripe_add(struct btrfs_raid_bio *rbio)
{
int bucket = rbio_bucket(rbio);
struct btrfs_stripe_hash *h = rbio->fs_info->stripe_hash_table->table + bucket;
- struct btrfs_raid_bio *cur;
+ struct btrfs_raid_bio *cur, *next;
struct btrfs_raid_bio *pending;
unsigned long flags;
DEFINE_WAIT(wait);
@@ -646,7 +646,7 @@ static noinline int lock_stripe_add(struct btrfs_raid_bio *rbio)
int walk = 0;
spin_lock_irqsave(&h->lock, flags);
- list_for_each_entry(cur, &h->hash_list, hash_list) {
+ list_for_each_entry_safe(cur, next, &h->hash_list, hash_list) {
walk++;
if (cur->raid_map[0] == rbio->raid_map[0]) {
spin_lock(&cur->bio_list_lock);
@@ -616,13 +616,13 @@ static void free_device(struct rcu_head *head)
static int __btrfs_close_devices(struct btrfs_fs_devices *fs_devices)
{
- struct btrfs_device *device;
+ struct btrfs_device *device, *next;
if (--fs_devices->opened > 0)
return 0;
mutex_lock(&fs_devices->device_list_mutex);
- list_for_each_entry(device, &fs_devices->devices, dev_list) {
+ list_for_each_entry_safe(device, next, &fs_devices->devices, dev_list) {
struct btrfs_device *new_device;
struct rcu_string *name;
Replace list_for_each_entry() by list_for_each_entry_safe() in next functions: - lock_stripe_add() - __btrfs_close_devices() Signed-off-by: Azat Khuzhin <a3at.mail@gmail.com> --- fs/btrfs/raid56.c | 4 ++-- fs/btrfs/volumes.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)