diff options
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/disk-io.c | 15 | ||||
-rw-r--r-- | fs/btrfs/extent-tree.c | 8 | ||||
-rw-r--r-- | fs/btrfs/inode.c | 5 | ||||
-rw-r--r-- | fs/btrfs/ordered-data.c | 4 | ||||
-rw-r--r-- | fs/btrfs/transaction.c | 4 | ||||
-rw-r--r-- | fs/btrfs/volumes.c | 35 |
6 files changed, 19 insertions, 52 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 0d8ccd625ba2..26a18779e84b 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -1135,7 +1135,6 @@ static int btrfs_congested_fn(void *congested_data, int bdi_bits) | |||
1135 | { | 1135 | { |
1136 | struct btrfs_fs_info *info = (struct btrfs_fs_info *)congested_data; | 1136 | struct btrfs_fs_info *info = (struct btrfs_fs_info *)congested_data; |
1137 | int ret = 0; | 1137 | int ret = 0; |
1138 | struct list_head *cur; | ||
1139 | struct btrfs_device *device; | 1138 | struct btrfs_device *device; |
1140 | struct backing_dev_info *bdi; | 1139 | struct backing_dev_info *bdi; |
1141 | #if 0 | 1140 | #if 0 |
@@ -1143,8 +1142,7 @@ static int btrfs_congested_fn(void *congested_data, int bdi_bits) | |||
1143 | btrfs_congested_async(info, 0)) | 1142 | btrfs_congested_async(info, 0)) |
1144 | return 1; | 1143 | return 1; |
1145 | #endif | 1144 | #endif |
1146 | list_for_each(cur, &info->fs_devices->devices) { | 1145 | list_for_each_entry(device, &info->fs_devices->devices, dev_list) { |
1147 | device = list_entry(cur, struct btrfs_device, dev_list); | ||
1148 | if (!device->bdev) | 1146 | if (!device->bdev) |
1149 | continue; | 1147 | continue; |
1150 | bdi = blk_get_backing_dev_info(device->bdev); | 1148 | bdi = blk_get_backing_dev_info(device->bdev); |
@@ -1162,13 +1160,11 @@ static int btrfs_congested_fn(void *congested_data, int bdi_bits) | |||
1162 | */ | 1160 | */ |
1163 | static void __unplug_io_fn(struct backing_dev_info *bdi, struct page *page) | 1161 | static void __unplug_io_fn(struct backing_dev_info *bdi, struct page *page) |
1164 | { | 1162 | { |
1165 | struct list_head *cur; | ||
1166 | struct btrfs_device *device; | 1163 | struct btrfs_device *device; |
1167 | struct btrfs_fs_info *info; | 1164 | struct btrfs_fs_info *info; |
1168 | 1165 | ||
1169 | info = (struct btrfs_fs_info *)bdi->unplug_io_data; | 1166 | info = (struct btrfs_fs_info *)bdi->unplug_io_data; |
1170 | list_for_each(cur, &info->fs_devices->devices) { | 1167 | list_for_each_entry(device, &info->fs_devices->devices, dev_list) { |
1171 | device = list_entry(cur, struct btrfs_device, dev_list); | ||
1172 | if (!device->bdev) | 1168 | if (!device->bdev) |
1173 | continue; | 1169 | continue; |
1174 | 1170 | ||
@@ -1994,7 +1990,6 @@ static int write_dev_supers(struct btrfs_device *device, | |||
1994 | 1990 | ||
1995 | int write_all_supers(struct btrfs_root *root, int max_mirrors) | 1991 | int write_all_supers(struct btrfs_root *root, int max_mirrors) |
1996 | { | 1992 | { |
1997 | struct list_head *cur; | ||
1998 | struct list_head *head = &root->fs_info->fs_devices->devices; | 1993 | struct list_head *head = &root->fs_info->fs_devices->devices; |
1999 | struct btrfs_device *dev; | 1994 | struct btrfs_device *dev; |
2000 | struct btrfs_super_block *sb; | 1995 | struct btrfs_super_block *sb; |
@@ -2010,8 +2005,7 @@ int write_all_supers(struct btrfs_root *root, int max_mirrors) | |||
2010 | 2005 | ||
2011 | sb = &root->fs_info->super_for_commit; | 2006 | sb = &root->fs_info->super_for_commit; |
2012 | dev_item = &sb->dev_item; | 2007 | dev_item = &sb->dev_item; |
2013 | list_for_each(cur, head) { | 2008 | list_for_each_entry(dev, head, dev_list) { |
2014 | dev = list_entry(cur, struct btrfs_device, dev_list); | ||
2015 | if (!dev->bdev) { | 2009 | if (!dev->bdev) { |
2016 | total_errors++; | 2010 | total_errors++; |
2017 | continue; | 2011 | continue; |
@@ -2044,8 +2038,7 @@ int write_all_supers(struct btrfs_root *root, int max_mirrors) | |||
2044 | } | 2038 | } |
2045 | 2039 | ||
2046 | total_errors = 0; | 2040 | total_errors = 0; |
2047 | list_for_each(cur, head) { | 2041 | list_for_each_entry(dev, head, dev_list) { |
2048 | dev = list_entry(cur, struct btrfs_device, dev_list); | ||
2049 | if (!dev->bdev) | 2042 | if (!dev->bdev) |
2050 | continue; | 2043 | continue; |
2051 | if (!dev->in_fs_metadata || !dev->writeable) | 2044 | if (!dev->in_fs_metadata || !dev->writeable) |
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index cdc961e7556a..a4e36c38b81e 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -325,10 +325,8 @@ static struct btrfs_space_info *__find_space_info(struct btrfs_fs_info *info, | |||
325 | u64 flags) | 325 | u64 flags) |
326 | { | 326 | { |
327 | struct list_head *head = &info->space_info; | 327 | struct list_head *head = &info->space_info; |
328 | struct list_head *cur; | ||
329 | struct btrfs_space_info *found; | 328 | struct btrfs_space_info *found; |
330 | list_for_each(cur, head) { | 329 | list_for_each_entry(found, head, list) { |
331 | found = list_entry(cur, struct btrfs_space_info, list); | ||
332 | if (found->flags == flags) | 330 | if (found->flags == flags) |
333 | return found; | 331 | return found; |
334 | } | 332 | } |
@@ -3013,7 +3011,6 @@ loop_check: | |||
3013 | static void dump_space_info(struct btrfs_space_info *info, u64 bytes) | 3011 | static void dump_space_info(struct btrfs_space_info *info, u64 bytes) |
3014 | { | 3012 | { |
3015 | struct btrfs_block_group_cache *cache; | 3013 | struct btrfs_block_group_cache *cache; |
3016 | struct list_head *l; | ||
3017 | 3014 | ||
3018 | printk(KERN_INFO "space_info has %llu free, is %sfull\n", | 3015 | printk(KERN_INFO "space_info has %llu free, is %sfull\n", |
3019 | (unsigned long long)(info->total_bytes - info->bytes_used - | 3016 | (unsigned long long)(info->total_bytes - info->bytes_used - |
@@ -3021,8 +3018,7 @@ static void dump_space_info(struct btrfs_space_info *info, u64 bytes) | |||
3021 | (info->full) ? "" : "not "); | 3018 | (info->full) ? "" : "not "); |
3022 | 3019 | ||
3023 | down_read(&info->groups_sem); | 3020 | down_read(&info->groups_sem); |
3024 | list_for_each(l, &info->block_groups) { | 3021 | list_for_each_entry(cache, &info->block_groups, list) { |
3025 | cache = list_entry(l, struct btrfs_block_group_cache, list); | ||
3026 | spin_lock(&cache->lock); | 3022 | spin_lock(&cache->lock); |
3027 | printk(KERN_INFO "block group %llu has %llu bytes, %llu used " | 3023 | printk(KERN_INFO "block group %llu has %llu bytes, %llu used " |
3028 | "%llu pinned %llu reserved\n", | 3024 | "%llu pinned %llu reserved\n", |
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 44dbd550c4bd..45cf03ee1bc2 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -1323,12 +1323,11 @@ static noinline int add_pending_csums(struct btrfs_trans_handle *trans, | |||
1323 | struct inode *inode, u64 file_offset, | 1323 | struct inode *inode, u64 file_offset, |
1324 | struct list_head *list) | 1324 | struct list_head *list) |
1325 | { | 1325 | { |
1326 | struct list_head *cur; | ||
1327 | struct btrfs_ordered_sum *sum; | 1326 | struct btrfs_ordered_sum *sum; |
1328 | 1327 | ||
1329 | btrfs_set_trans_block_group(trans, inode); | 1328 | btrfs_set_trans_block_group(trans, inode); |
1330 | list_for_each(cur, list) { | 1329 | |
1331 | sum = list_entry(cur, struct btrfs_ordered_sum, list); | 1330 | list_for_each_entry(sum, list, list) { |
1332 | btrfs_csum_file_blocks(trans, | 1331 | btrfs_csum_file_blocks(trans, |
1333 | BTRFS_I(inode)->root->fs_info->csum_root, sum); | 1332 | BTRFS_I(inode)->root->fs_info->csum_root, sum); |
1334 | } | 1333 | } |
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c index a20940170274..77c2411a5f0f 100644 --- a/fs/btrfs/ordered-data.c +++ b/fs/btrfs/ordered-data.c | |||
@@ -613,7 +613,6 @@ int btrfs_find_ordered_sum(struct inode *inode, u64 offset, u64 disk_bytenr, | |||
613 | struct btrfs_sector_sum *sector_sums; | 613 | struct btrfs_sector_sum *sector_sums; |
614 | struct btrfs_ordered_extent *ordered; | 614 | struct btrfs_ordered_extent *ordered; |
615 | struct btrfs_ordered_inode_tree *tree = &BTRFS_I(inode)->ordered_tree; | 615 | struct btrfs_ordered_inode_tree *tree = &BTRFS_I(inode)->ordered_tree; |
616 | struct list_head *cur; | ||
617 | unsigned long num_sectors; | 616 | unsigned long num_sectors; |
618 | unsigned long i; | 617 | unsigned long i; |
619 | u32 sectorsize = BTRFS_I(inode)->root->sectorsize; | 618 | u32 sectorsize = BTRFS_I(inode)->root->sectorsize; |
@@ -624,8 +623,7 @@ int btrfs_find_ordered_sum(struct inode *inode, u64 offset, u64 disk_bytenr, | |||
624 | return 1; | 623 | return 1; |
625 | 624 | ||
626 | mutex_lock(&tree->mutex); | 625 | mutex_lock(&tree->mutex); |
627 | list_for_each_prev(cur, &ordered->list) { | 626 | list_for_each_entry_reverse(ordered_sum, &ordered->list, list) { |
628 | ordered_sum = list_entry(cur, struct btrfs_ordered_sum, list); | ||
629 | if (disk_bytenr >= ordered_sum->bytenr) { | 627 | if (disk_bytenr >= ordered_sum->bytenr) { |
630 | num_sectors = ordered_sum->len / sectorsize; | 628 | num_sectors = ordered_sum->len / sectorsize; |
631 | sector_sums = ordered_sum->sums; | 629 | sector_sums = ordered_sum->sums; |
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 8a08f9443340..919172de5c9a 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c | |||
@@ -852,11 +852,9 @@ static noinline int create_pending_snapshots(struct btrfs_trans_handle *trans, | |||
852 | { | 852 | { |
853 | struct btrfs_pending_snapshot *pending; | 853 | struct btrfs_pending_snapshot *pending; |
854 | struct list_head *head = &trans->transaction->pending_snapshots; | 854 | struct list_head *head = &trans->transaction->pending_snapshots; |
855 | struct list_head *cur; | ||
856 | int ret; | 855 | int ret; |
857 | 856 | ||
858 | list_for_each(cur, head) { | 857 | list_for_each_entry(pending, head, list) { |
859 | pending = list_entry(cur, struct btrfs_pending_snapshot, list); | ||
860 | ret = create_pending_snapshot(trans, fs_info, pending); | 858 | ret = create_pending_snapshot(trans, fs_info, pending); |
861 | BUG_ON(ret); | 859 | BUG_ON(ret); |
862 | } | 860 | } |
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 397c8db1bc27..fd0bedb07a64 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c | |||
@@ -103,10 +103,8 @@ static noinline struct btrfs_device *__find_device(struct list_head *head, | |||
103 | u64 devid, u8 *uuid) | 103 | u64 devid, u8 *uuid) |
104 | { | 104 | { |
105 | struct btrfs_device *dev; | 105 | struct btrfs_device *dev; |
106 | struct list_head *cur; | ||
107 | 106 | ||
108 | list_for_each(cur, head) { | 107 | list_for_each_entry(dev, head, dev_list) { |
109 | dev = list_entry(cur, struct btrfs_device, dev_list); | ||
110 | if (dev->devid == devid && | 108 | if (dev->devid == devid && |
111 | (!uuid || !memcmp(dev->uuid, uuid, BTRFS_UUID_SIZE))) { | 109 | (!uuid || !memcmp(dev->uuid, uuid, BTRFS_UUID_SIZE))) { |
112 | return dev; | 110 | return dev; |
@@ -117,11 +115,9 @@ static noinline struct btrfs_device *__find_device(struct list_head *head, | |||
117 | 115 | ||
118 | static noinline struct btrfs_fs_devices *find_fsid(u8 *fsid) | 116 | static noinline struct btrfs_fs_devices *find_fsid(u8 *fsid) |
119 | { | 117 | { |
120 | struct list_head *cur; | ||
121 | struct btrfs_fs_devices *fs_devices; | 118 | struct btrfs_fs_devices *fs_devices; |
122 | 119 | ||
123 | list_for_each(cur, &fs_uuids) { | 120 | list_for_each_entry(fs_devices, &fs_uuids, list) { |
124 | fs_devices = list_entry(cur, struct btrfs_fs_devices, list); | ||
125 | if (memcmp(fsid, fs_devices->fsid, BTRFS_FSID_SIZE) == 0) | 121 | if (memcmp(fsid, fs_devices->fsid, BTRFS_FSID_SIZE) == 0) |
126 | return fs_devices; | 122 | return fs_devices; |
127 | } | 123 | } |
@@ -344,14 +340,11 @@ error: | |||
344 | 340 | ||
345 | int btrfs_close_extra_devices(struct btrfs_fs_devices *fs_devices) | 341 | int btrfs_close_extra_devices(struct btrfs_fs_devices *fs_devices) |
346 | { | 342 | { |
347 | struct list_head *tmp; | 343 | struct btrfs_device *device, *next; |
348 | struct list_head *cur; | ||
349 | struct btrfs_device *device; | ||
350 | 344 | ||
351 | mutex_lock(&uuid_mutex); | 345 | mutex_lock(&uuid_mutex); |
352 | again: | 346 | again: |
353 | list_for_each_safe(cur, tmp, &fs_devices->devices) { | 347 | list_for_each_entry_safe(device, next, &fs_devices->devices, dev_list) { |
354 | device = list_entry(cur, struct btrfs_device, dev_list); | ||
355 | if (device->in_fs_metadata) | 348 | if (device->in_fs_metadata) |
356 | continue; | 349 | continue; |
357 | 350 | ||
@@ -382,14 +375,12 @@ again: | |||
382 | 375 | ||
383 | static int __btrfs_close_devices(struct btrfs_fs_devices *fs_devices) | 376 | static int __btrfs_close_devices(struct btrfs_fs_devices *fs_devices) |
384 | { | 377 | { |
385 | struct list_head *cur; | ||
386 | struct btrfs_device *device; | 378 | struct btrfs_device *device; |
387 | 379 | ||
388 | if (--fs_devices->opened > 0) | 380 | if (--fs_devices->opened > 0) |
389 | return 0; | 381 | return 0; |
390 | 382 | ||
391 | list_for_each(cur, &fs_devices->devices) { | 383 | list_for_each_entry(device, &fs_devices->devices, dev_list) { |
392 | device = list_entry(cur, struct btrfs_device, dev_list); | ||
393 | if (device->bdev) { | 384 | if (device->bdev) { |
394 | close_bdev_exclusive(device->bdev, device->mode); | 385 | close_bdev_exclusive(device->bdev, device->mode); |
395 | fs_devices->open_devices--; | 386 | fs_devices->open_devices--; |
@@ -438,7 +429,6 @@ static int __btrfs_open_devices(struct btrfs_fs_devices *fs_devices, | |||
438 | { | 429 | { |
439 | struct block_device *bdev; | 430 | struct block_device *bdev; |
440 | struct list_head *head = &fs_devices->devices; | 431 | struct list_head *head = &fs_devices->devices; |
441 | struct list_head *cur; | ||
442 | struct btrfs_device *device; | 432 | struct btrfs_device *device; |
443 | struct block_device *latest_bdev = NULL; | 433 | struct block_device *latest_bdev = NULL; |
444 | struct buffer_head *bh; | 434 | struct buffer_head *bh; |
@@ -449,8 +439,7 @@ static int __btrfs_open_devices(struct btrfs_fs_devices *fs_devices, | |||
449 | int seeding = 1; | 439 | int seeding = 1; |
450 | int ret = 0; | 440 | int ret = 0; |
451 | 441 | ||
452 | list_for_each(cur, head) { | 442 | list_for_each_entry(device, head, dev_list) { |
453 | device = list_entry(cur, struct btrfs_device, dev_list); | ||
454 | if (device->bdev) | 443 | if (device->bdev) |
455 | continue; | 444 | continue; |
456 | if (!device->name) | 445 | if (!device->name) |
@@ -1016,14 +1005,12 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path) | |||
1016 | } | 1005 | } |
1017 | 1006 | ||
1018 | if (strcmp(device_path, "missing") == 0) { | 1007 | if (strcmp(device_path, "missing") == 0) { |
1019 | struct list_head *cur; | ||
1020 | struct list_head *devices; | 1008 | struct list_head *devices; |
1021 | struct btrfs_device *tmp; | 1009 | struct btrfs_device *tmp; |
1022 | 1010 | ||
1023 | device = NULL; | 1011 | device = NULL; |
1024 | devices = &root->fs_info->fs_devices->devices; | 1012 | devices = &root->fs_info->fs_devices->devices; |
1025 | list_for_each(cur, devices) { | 1013 | list_for_each_entry(tmp, devices, dev_list) { |
1026 | tmp = list_entry(cur, struct btrfs_device, dev_list); | ||
1027 | if (tmp->in_fs_metadata && !tmp->bdev) { | 1014 | if (tmp->in_fs_metadata && !tmp->bdev) { |
1028 | device = tmp; | 1015 | device = tmp; |
1029 | break; | 1016 | break; |
@@ -1279,7 +1266,6 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path) | |||
1279 | struct btrfs_trans_handle *trans; | 1266 | struct btrfs_trans_handle *trans; |
1280 | struct btrfs_device *device; | 1267 | struct btrfs_device *device; |
1281 | struct block_device *bdev; | 1268 | struct block_device *bdev; |
1282 | struct list_head *cur; | ||
1283 | struct list_head *devices; | 1269 | struct list_head *devices; |
1284 | struct super_block *sb = root->fs_info->sb; | 1270 | struct super_block *sb = root->fs_info->sb; |
1285 | u64 total_bytes; | 1271 | u64 total_bytes; |
@@ -1303,8 +1289,7 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path) | |||
1303 | mutex_lock(&root->fs_info->volume_mutex); | 1289 | mutex_lock(&root->fs_info->volume_mutex); |
1304 | 1290 | ||
1305 | devices = &root->fs_info->fs_devices->devices; | 1291 | devices = &root->fs_info->fs_devices->devices; |
1306 | list_for_each(cur, devices) { | 1292 | list_for_each_entry(device, devices, dev_list) { |
1307 | device = list_entry(cur, struct btrfs_device, dev_list); | ||
1308 | if (device->bdev == bdev) { | 1293 | if (device->bdev == bdev) { |
1309 | ret = -EEXIST; | 1294 | ret = -EEXIST; |
1310 | goto error; | 1295 | goto error; |
@@ -1703,7 +1688,6 @@ static u64 div_factor(u64 num, int factor) | |||
1703 | int btrfs_balance(struct btrfs_root *dev_root) | 1688 | int btrfs_balance(struct btrfs_root *dev_root) |
1704 | { | 1689 | { |
1705 | int ret; | 1690 | int ret; |
1706 | struct list_head *cur; | ||
1707 | struct list_head *devices = &dev_root->fs_info->fs_devices->devices; | 1691 | struct list_head *devices = &dev_root->fs_info->fs_devices->devices; |
1708 | struct btrfs_device *device; | 1692 | struct btrfs_device *device; |
1709 | u64 old_size; | 1693 | u64 old_size; |
@@ -1722,8 +1706,7 @@ int btrfs_balance(struct btrfs_root *dev_root) | |||
1722 | dev_root = dev_root->fs_info->dev_root; | 1706 | dev_root = dev_root->fs_info->dev_root; |
1723 | 1707 | ||
1724 | /* step one make some room on all the devices */ | 1708 | /* step one make some room on all the devices */ |
1725 | list_for_each(cur, devices) { | 1709 | list_for_each_entry(device, devices, dev_list) { |
1726 | device = list_entry(cur, struct btrfs_device, dev_list); | ||
1727 | old_size = device->total_bytes; | 1710 | old_size = device->total_bytes; |
1728 | size_to_free = div_factor(old_size, 1); | 1711 | size_to_free = div_factor(old_size, 1); |
1729 | size_to_free = min(size_to_free, (u64)1 * 1024 * 1024); | 1712 | size_to_free = min(size_to_free, (u64)1 * 1024 * 1024); |