|
@@ -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);
|