volumes.c (a1e8780a89ec13217fa1c8f86faf5546110e1402) | volumes.c (c1c9ff7c94e83fae89a742df74db51156869bad5) |
---|---|
1/* 2 * Copyright (C) 2007 Oracle. All rights reserved. 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public 6 * License v2 as published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, --- 900 unchanged lines hidden (view full) --- 909 if (disk_super->label[0]) { 910 if (disk_super->label[BTRFS_LABEL_SIZE - 1]) 911 disk_super->label[BTRFS_LABEL_SIZE - 1] = '\0'; 912 printk(KERN_INFO "device label %s ", disk_super->label); 913 } else { 914 printk(KERN_INFO "device fsid %pU ", disk_super->fsid); 915 } 916 | 1/* 2 * Copyright (C) 2007 Oracle. All rights reserved. 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public 6 * License v2 as published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, --- 900 unchanged lines hidden (view full) --- 909 if (disk_super->label[0]) { 910 if (disk_super->label[BTRFS_LABEL_SIZE - 1]) 911 disk_super->label[BTRFS_LABEL_SIZE - 1] = '\0'; 912 printk(KERN_INFO "device label %s ", disk_super->label); 913 } else { 914 printk(KERN_INFO "device fsid %pU ", disk_super->fsid); 915 } 916 |
917 printk(KERN_CONT "devid %llu transid %llu %s\n", 918 (unsigned long long)devid, (unsigned long long)transid, path); | 917 printk(KERN_CONT "devid %llu transid %llu %s\n", devid, transid, path); |
919 920 ret = device_list_add(path, disk_super, devid, fs_devices_ret); 921 if (!ret && fs_devices_ret) 922 (*fs_devices_ret)->total_devices = total_devices; 923 924error_unmap: 925 kunmap(page); 926 page_cache_release(page); --- 2227 unchanged lines hidden (view full) --- 3154 if (num_devices > 3) 3155 allowed |= (BTRFS_BLOCK_GROUP_RAID10 | 3156 BTRFS_BLOCK_GROUP_RAID6); 3157 if ((bctl->data.flags & BTRFS_BALANCE_ARGS_CONVERT) && 3158 (!alloc_profile_is_valid(bctl->data.target, 1) || 3159 (bctl->data.target & ~allowed))) { 3160 printk(KERN_ERR "btrfs: unable to start balance with target " 3161 "data profile %llu\n", | 918 919 ret = device_list_add(path, disk_super, devid, fs_devices_ret); 920 if (!ret && fs_devices_ret) 921 (*fs_devices_ret)->total_devices = total_devices; 922 923error_unmap: 924 kunmap(page); 925 page_cache_release(page); --- 2227 unchanged lines hidden (view full) --- 3153 if (num_devices > 3) 3154 allowed |= (BTRFS_BLOCK_GROUP_RAID10 | 3155 BTRFS_BLOCK_GROUP_RAID6); 3156 if ((bctl->data.flags & BTRFS_BALANCE_ARGS_CONVERT) && 3157 (!alloc_profile_is_valid(bctl->data.target, 1) || 3158 (bctl->data.target & ~allowed))) { 3159 printk(KERN_ERR "btrfs: unable to start balance with target " 3160 "data profile %llu\n", |
3162 (unsigned long long)bctl->data.target); | 3161 bctl->data.target); |
3163 ret = -EINVAL; 3164 goto out; 3165 } 3166 if ((bctl->meta.flags & BTRFS_BALANCE_ARGS_CONVERT) && 3167 (!alloc_profile_is_valid(bctl->meta.target, 1) || 3168 (bctl->meta.target & ~allowed))) { 3169 printk(KERN_ERR "btrfs: unable to start balance with target " 3170 "metadata profile %llu\n", | 3162 ret = -EINVAL; 3163 goto out; 3164 } 3165 if ((bctl->meta.flags & BTRFS_BALANCE_ARGS_CONVERT) && 3166 (!alloc_profile_is_valid(bctl->meta.target, 1) || 3167 (bctl->meta.target & ~allowed))) { 3168 printk(KERN_ERR "btrfs: unable to start balance with target " 3169 "metadata profile %llu\n", |
3171 (unsigned long long)bctl->meta.target); | 3170 bctl->meta.target); |
3172 ret = -EINVAL; 3173 goto out; 3174 } 3175 if ((bctl->sys.flags & BTRFS_BALANCE_ARGS_CONVERT) && 3176 (!alloc_profile_is_valid(bctl->sys.target, 1) || 3177 (bctl->sys.target & ~allowed))) { 3178 printk(KERN_ERR "btrfs: unable to start balance with target " 3179 "system profile %llu\n", | 3171 ret = -EINVAL; 3172 goto out; 3173 } 3174 if ((bctl->sys.flags & BTRFS_BALANCE_ARGS_CONVERT) && 3175 (!alloc_profile_is_valid(bctl->sys.target, 1) || 3176 (bctl->sys.target & ~allowed))) { 3177 printk(KERN_ERR "btrfs: unable to start balance with target " 3178 "system profile %llu\n", |
3180 (unsigned long long)bctl->sys.target); | 3179 bctl->sys.target); |
3181 ret = -EINVAL; 3182 goto out; 3183 } 3184 3185 /* allow dup'ed data chunks only in mixed mode */ 3186 if (!mixed && (bctl->data.flags & BTRFS_BALANCE_ARGS_CONVERT) && 3187 (bctl->data.target & BTRFS_BLOCK_GROUP_DUP)) { 3188 printk(KERN_ERR "btrfs: dup for data is not allowed\n"); --- 1458 unchanged lines hidden (view full) --- 4647 u64 raid56_full_stripe_start = (u64)-1; 4648 4649 read_lock(&em_tree->lock); 4650 em = lookup_extent_mapping(em_tree, logical, *length); 4651 read_unlock(&em_tree->lock); 4652 4653 if (!em) { 4654 btrfs_crit(fs_info, "unable to find logical %llu len %llu", | 3180 ret = -EINVAL; 3181 goto out; 3182 } 3183 3184 /* allow dup'ed data chunks only in mixed mode */ 3185 if (!mixed && (bctl->data.flags & BTRFS_BALANCE_ARGS_CONVERT) && 3186 (bctl->data.target & BTRFS_BLOCK_GROUP_DUP)) { 3187 printk(KERN_ERR "btrfs: dup for data is not allowed\n"); --- 1458 unchanged lines hidden (view full) --- 4646 u64 raid56_full_stripe_start = (u64)-1; 4647 4648 read_lock(&em_tree->lock); 4649 em = lookup_extent_mapping(em_tree, logical, *length); 4650 read_unlock(&em_tree->lock); 4651 4652 if (!em) { 4653 btrfs_crit(fs_info, "unable to find logical %llu len %llu", |
4655 (unsigned long long)logical, 4656 (unsigned long long)*length); | 4654 logical, *length); |
4657 return -EINVAL; 4658 } 4659 4660 if (em->start > logical || em->start + em->len < logical) { 4661 btrfs_crit(fs_info, "found a bad mapping, wanted %Lu, " 4662 "found %Lu-%Lu\n", logical, em->start, 4663 em->start + em->len); 4664 return -EINVAL; --- 854 unchanged lines hidden (view full) --- 5519 return raid56_parity_recover(root, bio, bbio, 5520 raid_map, map_length, 5521 mirror_num); 5522 } 5523 } 5524 5525 if (map_length < length) { 5526 btrfs_crit(root->fs_info, "mapping failed logical %llu bio len %llu len %llu", | 4655 return -EINVAL; 4656 } 4657 4658 if (em->start > logical || em->start + em->len < logical) { 4659 btrfs_crit(fs_info, "found a bad mapping, wanted %Lu, " 4660 "found %Lu-%Lu\n", logical, em->start, 4661 em->start + em->len); 4662 return -EINVAL; --- 854 unchanged lines hidden (view full) --- 5517 return raid56_parity_recover(root, bio, bbio, 5518 raid_map, map_length, 5519 mirror_num); 5520 } 5521 } 5522 5523 if (map_length < length) { 5524 btrfs_crit(root->fs_info, "mapping failed logical %llu bio len %llu len %llu", |
5527 (unsigned long long)logical, 5528 (unsigned long long)length, 5529 (unsigned long long)map_length); | 5525 logical, length, map_length); |
5530 BUG(); 5531 } 5532 5533 while (dev_nr < total_devs) { 5534 dev = bbio->stripes[dev_nr].dev; 5535 if (!dev || !dev->bdev || (rw & WRITE && !dev->writeable)) { 5536 bbio_error(bbio, first_bio, logical); 5537 dev_nr++; --- 303 unchanged lines hidden (view full) --- 5841 } 5842 5843 device = btrfs_find_device(root->fs_info, devid, dev_uuid, fs_uuid); 5844 if (!device || !device->bdev) { 5845 if (!btrfs_test_opt(root, DEGRADED)) 5846 return -EIO; 5847 5848 if (!device) { | 5526 BUG(); 5527 } 5528 5529 while (dev_nr < total_devs) { 5530 dev = bbio->stripes[dev_nr].dev; 5531 if (!dev || !dev->bdev || (rw & WRITE && !dev->writeable)) { 5532 bbio_error(bbio, first_bio, logical); 5533 dev_nr++; --- 303 unchanged lines hidden (view full) --- 5837 } 5838 5839 device = btrfs_find_device(root->fs_info, devid, dev_uuid, fs_uuid); 5840 if (!device || !device->bdev) { 5841 if (!btrfs_test_opt(root, DEGRADED)) 5842 return -EIO; 5843 5844 if (!device) { |
5849 btrfs_warn(root->fs_info, "devid %llu missing", 5850 (unsigned long long)devid); | 5845 btrfs_warn(root->fs_info, "devid %llu missing", devid); |
5851 device = add_missing_dev(root, devid, dev_uuid); 5852 if (!device) 5853 return -ENOMEM; 5854 } else if (!device->missing) { 5855 /* 5856 * this happens when a device that was properly setup 5857 * in the device info lists suddenly goes bad. 5858 * device->bdev is NULL, and so we have to set --- 424 unchanged lines hidden --- | 5846 device = add_missing_dev(root, devid, dev_uuid); 5847 if (!device) 5848 return -ENOMEM; 5849 } else if (!device->missing) { 5850 /* 5851 * this happens when a device that was properly setup 5852 * in the device info lists suddenly goes bad. 5853 * device->bdev is NULL, and so we have to set --- 424 unchanged lines hidden --- |