Btrfs: simplify iteration codes
Merge list_for_each* and list_entry to list_for_each_entry* Signed-off-by: Qinghuang Feng <qhfeng.kernel@gmail.com> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
committed by
Chris Mason
parent
57506d50ed
commit
c6e308713a
@@ -103,10 +103,8 @@ static noinline struct btrfs_device *__find_device(struct list_head *head,
|
||||
u64 devid, u8 *uuid)
|
||||
{
|
||||
struct btrfs_device *dev;
|
||||
struct list_head *cur;
|
||||
|
||||
list_for_each(cur, head) {
|
||||
dev = list_entry(cur, struct btrfs_device, dev_list);
|
||||
list_for_each_entry(dev, head, dev_list) {
|
||||
if (dev->devid == devid &&
|
||||
(!uuid || !memcmp(dev->uuid, uuid, BTRFS_UUID_SIZE))) {
|
||||
return dev;
|
||||
@@ -117,11 +115,9 @@ static noinline struct btrfs_device *__find_device(struct list_head *head,
|
||||
|
||||
static noinline struct btrfs_fs_devices *find_fsid(u8 *fsid)
|
||||
{
|
||||
struct list_head *cur;
|
||||
struct btrfs_fs_devices *fs_devices;
|
||||
|
||||
list_for_each(cur, &fs_uuids) {
|
||||
fs_devices = list_entry(cur, struct btrfs_fs_devices, list);
|
||||
list_for_each_entry(fs_devices, &fs_uuids, list) {
|
||||
if (memcmp(fsid, fs_devices->fsid, BTRFS_FSID_SIZE) == 0)
|
||||
return fs_devices;
|
||||
}
|
||||
@@ -344,14 +340,11 @@ error:
|
||||
|
||||
int btrfs_close_extra_devices(struct btrfs_fs_devices *fs_devices)
|
||||
{
|
||||
struct list_head *tmp;
|
||||
struct list_head *cur;
|
||||
struct btrfs_device *device;
|
||||
struct btrfs_device *device, *next;
|
||||
|
||||
mutex_lock(&uuid_mutex);
|
||||
again:
|
||||
list_for_each_safe(cur, tmp, &fs_devices->devices) {
|
||||
device = list_entry(cur, struct btrfs_device, dev_list);
|
||||
list_for_each_entry_safe(device, next, &fs_devices->devices, dev_list) {
|
||||
if (device->in_fs_metadata)
|
||||
continue;
|
||||
|
||||
@@ -382,14 +375,12 @@ again:
|
||||
|
||||
static int __btrfs_close_devices(struct btrfs_fs_devices *fs_devices)
|
||||
{
|
||||
struct list_head *cur;
|
||||
struct btrfs_device *device;
|
||||
|
||||
if (--fs_devices->opened > 0)
|
||||
return 0;
|
||||
|
||||
list_for_each(cur, &fs_devices->devices) {
|
||||
device = list_entry(cur, struct btrfs_device, dev_list);
|
||||
list_for_each_entry(device, &fs_devices->devices, dev_list) {
|
||||
if (device->bdev) {
|
||||
close_bdev_exclusive(device->bdev, device->mode);
|
||||
fs_devices->open_devices--;
|
||||
@@ -438,7 +429,6 @@ static int __btrfs_open_devices(struct btrfs_fs_devices *fs_devices,
|
||||
{
|
||||
struct block_device *bdev;
|
||||
struct list_head *head = &fs_devices->devices;
|
||||
struct list_head *cur;
|
||||
struct btrfs_device *device;
|
||||
struct block_device *latest_bdev = NULL;
|
||||
struct buffer_head *bh;
|
||||
@@ -449,8 +439,7 @@ static int __btrfs_open_devices(struct btrfs_fs_devices *fs_devices,
|
||||
int seeding = 1;
|
||||
int ret = 0;
|
||||
|
||||
list_for_each(cur, head) {
|
||||
device = list_entry(cur, struct btrfs_device, dev_list);
|
||||
list_for_each_entry(device, head, dev_list) {
|
||||
if (device->bdev)
|
||||
continue;
|
||||
if (!device->name)
|
||||
@@ -1016,14 +1005,12 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path)
|
||||
}
|
||||
|
||||
if (strcmp(device_path, "missing") == 0) {
|
||||
struct list_head *cur;
|
||||
struct list_head *devices;
|
||||
struct btrfs_device *tmp;
|
||||
|
||||
device = NULL;
|
||||
devices = &root->fs_info->fs_devices->devices;
|
||||
list_for_each(cur, devices) {
|
||||
tmp = list_entry(cur, struct btrfs_device, dev_list);
|
||||
list_for_each_entry(tmp, devices, dev_list) {
|
||||
if (tmp->in_fs_metadata && !tmp->bdev) {
|
||||
device = tmp;
|
||||
break;
|
||||
@@ -1279,7 +1266,6 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path)
|
||||
struct btrfs_trans_handle *trans;
|
||||
struct btrfs_device *device;
|
||||
struct block_device *bdev;
|
||||
struct list_head *cur;
|
||||
struct list_head *devices;
|
||||
struct super_block *sb = root->fs_info->sb;
|
||||
u64 total_bytes;
|
||||
@@ -1303,8 +1289,7 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path)
|
||||
mutex_lock(&root->fs_info->volume_mutex);
|
||||
|
||||
devices = &root->fs_info->fs_devices->devices;
|
||||
list_for_each(cur, devices) {
|
||||
device = list_entry(cur, struct btrfs_device, dev_list);
|
||||
list_for_each_entry(device, devices, dev_list) {
|
||||
if (device->bdev == bdev) {
|
||||
ret = -EEXIST;
|
||||
goto error;
|
||||
@@ -1703,7 +1688,6 @@ static u64 div_factor(u64 num, int factor)
|
||||
int btrfs_balance(struct btrfs_root *dev_root)
|
||||
{
|
||||
int ret;
|
||||
struct list_head *cur;
|
||||
struct list_head *devices = &dev_root->fs_info->fs_devices->devices;
|
||||
struct btrfs_device *device;
|
||||
u64 old_size;
|
||||
@@ -1722,8 +1706,7 @@ int btrfs_balance(struct btrfs_root *dev_root)
|
||||
dev_root = dev_root->fs_info->dev_root;
|
||||
|
||||
/* step one make some room on all the devices */
|
||||
list_for_each(cur, devices) {
|
||||
device = list_entry(cur, struct btrfs_device, dev_list);
|
||||
list_for_each_entry(device, devices, dev_list) {
|
||||
old_size = device->total_bytes;
|
||||
size_to_free = div_factor(old_size, 1);
|
||||
size_to_free = min(size_to_free, (u64)1 * 1024 * 1024);
|
||||
|
Reference in New Issue
Block a user