|
@@ -4629,7 +4629,7 @@ static int __btrfs_alloc_chunk(struct btrfs_trans_handle *trans,
|
|
|
{
|
|
|
struct btrfs_fs_info *info = trans->fs_info;
|
|
|
struct btrfs_fs_devices *fs_devices = info->fs_devices;
|
|
|
- struct list_head *cur;
|
|
|
+ struct btrfs_device *device;
|
|
|
struct map_lookup *map = NULL;
|
|
|
struct extent_map_tree *em_tree;
|
|
|
struct extent_map *em;
|
|
@@ -4703,22 +4703,15 @@ static int __btrfs_alloc_chunk(struct btrfs_trans_handle *trans,
|
|
|
if (!devices_info)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
- cur = fs_devices->alloc_list.next;
|
|
|
-
|
|
|
/*
|
|
|
* in the first pass through the devices list, we gather information
|
|
|
* about the available holes on each device.
|
|
|
*/
|
|
|
ndevs = 0;
|
|
|
- while (cur != &fs_devices->alloc_list) {
|
|
|
- struct btrfs_device *device;
|
|
|
+ list_for_each_entry(device, &fs_devices->alloc_list, dev_alloc_list) {
|
|
|
u64 max_avail;
|
|
|
u64 dev_offset;
|
|
|
|
|
|
- device = list_entry(cur, struct btrfs_device, dev_alloc_list);
|
|
|
-
|
|
|
- cur = cur->next;
|
|
|
-
|
|
|
if (!device->writeable) {
|
|
|
WARN(1, KERN_ERR
|
|
|
"BTRFS: read-only device in alloc_list\n");
|