tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 7cf726a59435301046250c42131554d9ccc566b8 commit: 8d1a7aae89dc0c41ffb76fe1007dbba59d13881b btrfs: annotate device name rcu_string with __rcu date: 12 days ago config: s390-randconfig-s032-20201019 (attached as .config) compiler: s390-linux-gcc (GCC) 9.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-rc1-2-g368fd9ce-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8d1a7aae89dc0c41ffb76fe1007dbba59d13881b git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 8d1a7aae89dc0c41ffb76fe1007dbba59d13881b # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=s390
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <l...@intel.com> "sparse warnings: (new ones prefixed by >>)" fs/btrfs/volumes.c:374:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct rcu_string *str @@ got struct rcu_string [noderef] __rcu *name @@ fs/btrfs/volumes.c:374:31: sparse: expected struct rcu_string *str fs/btrfs/volumes.c:374:31: sparse: got struct rcu_string [noderef] __rcu *name fs/btrfs/volumes.c:631:43: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected char const *device_path @@ got char [noderef] __rcu * @@ fs/btrfs/volumes.c:631:43: sparse: expected char const *device_path fs/btrfs/volumes.c:631:43: sparse: got char [noderef] __rcu * >> fs/btrfs/volumes.c:888:50: sparse: sparse: incorrect type in argument 1 >> (different address spaces) @@ expected char const *s1 @@ got char >> [noderef] __rcu * @@ >> fs/btrfs/volumes.c:888:50: sparse: expected char const *s1 fs/btrfs/volumes.c:888:50: sparse: got char [noderef] __rcu * fs/btrfs/volumes.c:963:39: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct rcu_string *str @@ got struct rcu_string [noderef] __rcu *name @@ fs/btrfs/volumes.c:963:39: sparse: expected struct rcu_string *str fs/btrfs/volumes.c:963:39: sparse: got struct rcu_string [noderef] __rcu *name fs/btrfs/volumes.c:1018:58: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected char const *src @@ got char [noderef] __rcu * @@ fs/btrfs/volumes.c:1018:58: sparse: expected char const *src fs/btrfs/volumes.c:1018:58: sparse: got char [noderef] __rcu * fs/btrfs/volumes.c:2165:49: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected char const *device_path @@ got char [noderef] __rcu * @@ fs/btrfs/volumes.c:2165:49: sparse: expected char const *device_path fs/btrfs/volumes.c:2165:49: sparse: got char [noderef] __rcu * fs/btrfs/volumes.c:2273:41: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected char const *device_path @@ got char [noderef] __rcu * @@ fs/btrfs/volumes.c:2273:41: sparse: expected char const *device_path fs/btrfs/volumes.c:2273:41: sparse: got char [noderef] __rcu * vim +888 fs/btrfs/volumes.c 1362089d2ad7e20 Nikolay Borisov 2020-01-10 745 1362089d2ad7e20 Nikolay Borisov 2020-01-10 746 static struct btrfs_fs_devices *find_fsid_reverted_metadata( 1362089d2ad7e20 Nikolay Borisov 2020-01-10 747 struct btrfs_super_block *disk_super) 1362089d2ad7e20 Nikolay Borisov 2020-01-10 748 { 1362089d2ad7e20 Nikolay Borisov 2020-01-10 749 struct btrfs_fs_devices *fs_devices; 1362089d2ad7e20 Nikolay Borisov 2020-01-10 750 1362089d2ad7e20 Nikolay Borisov 2020-01-10 751 /* 1362089d2ad7e20 Nikolay Borisov 2020-01-10 752 * Handle the case where the scanned device is part of an fs whose last 1362089d2ad7e20 Nikolay Borisov 2020-01-10 753 * metadata UUID change reverted it to the original FSID. At the same 1362089d2ad7e20 Nikolay Borisov 2020-01-10 754 * time * fs_devices was first created by another constitutent device 1362089d2ad7e20 Nikolay Borisov 2020-01-10 755 * which didn't fully observe the operation. This results in an 1362089d2ad7e20 Nikolay Borisov 2020-01-10 756 * btrfs_fs_devices created with metadata/fsid different AND 1362089d2ad7e20 Nikolay Borisov 2020-01-10 757 * btrfs_fs_devices::fsid_change set AND the metadata_uuid of the 1362089d2ad7e20 Nikolay Borisov 2020-01-10 758 * fs_devices equal to the FSID of the disk. 1362089d2ad7e20 Nikolay Borisov 2020-01-10 759 */ 1362089d2ad7e20 Nikolay Borisov 2020-01-10 760 list_for_each_entry(fs_devices, &fs_uuids, fs_list) { 1362089d2ad7e20 Nikolay Borisov 2020-01-10 761 if (memcmp(fs_devices->fsid, fs_devices->metadata_uuid, 1362089d2ad7e20 Nikolay Borisov 2020-01-10 762 BTRFS_FSID_SIZE) != 0 && 1362089d2ad7e20 Nikolay Borisov 2020-01-10 763 memcmp(fs_devices->metadata_uuid, disk_super->fsid, 1362089d2ad7e20 Nikolay Borisov 2020-01-10 764 BTRFS_FSID_SIZE) == 0 && 1362089d2ad7e20 Nikolay Borisov 2020-01-10 765 fs_devices->fsid_change) 1362089d2ad7e20 Nikolay Borisov 2020-01-10 766 return fs_devices; 1362089d2ad7e20 Nikolay Borisov 2020-01-10 767 } 1362089d2ad7e20 Nikolay Borisov 2020-01-10 768 1362089d2ad7e20 Nikolay Borisov 2020-01-10 769 return NULL; 1362089d2ad7e20 Nikolay Borisov 2020-01-10 770 } 60999ca4b4033ee David Sterba 2014-03-26 771 /* 60999ca4b4033ee David Sterba 2014-03-26 772 * Add new device to list of registered devices 60999ca4b4033ee David Sterba 2014-03-26 773 * 60999ca4b4033ee David Sterba 2014-03-26 774 * Returns: e124ece53edf3a8 Anand Jain 2018-01-18 775 * device pointer which was just added or updated when successful e124ece53edf3a8 Anand Jain 2018-01-18 776 * error pointer when failed 60999ca4b4033ee David Sterba 2014-03-26 777 */ e124ece53edf3a8 Anand Jain 2018-01-18 778 static noinline struct btrfs_device *device_list_add(const char *path, 4306a97449f9a0f Anand Jain 2018-05-29 779 struct btrfs_super_block *disk_super, 4306a97449f9a0f Anand Jain 2018-05-29 780 bool *new_device_added) 8a4b83cc8bd75fc Chris Mason 2008-03-24 781 { 8a4b83cc8bd75fc Chris Mason 2008-03-24 782 struct btrfs_device *device; 7a62d0f07377b51 Nikolay Borisov 2018-10-30 783 struct btrfs_fs_devices *fs_devices = NULL; 606686eeac4550d Josef Bacik 2012-06-04 784 struct rcu_string *name; 8a4b83cc8bd75fc Chris Mason 2008-03-24 785 u64 found_transid = btrfs_super_generation(disk_super); 3acbcbfc8f06d4a Anand Jain 2018-01-18 786 u64 devid = btrfs_stack_device_id(&disk_super->dev_item); 7239ff4b2be8ec0 Nikolay Borisov 2018-10-30 787 bool has_metadata_uuid = (btrfs_super_incompat_flags(disk_super) & 7239ff4b2be8ec0 Nikolay Borisov 2018-10-30 788 BTRFS_FEATURE_INCOMPAT_METADATA_UUID); d1a63002829a4d8 Nikolay Borisov 2018-10-30 789 bool fsid_change_in_progress = (btrfs_super_flags(disk_super) & d1a63002829a4d8 Nikolay Borisov 2018-10-30 790 BTRFS_SUPER_FLAG_CHANGING_FSID_V2); 7239ff4b2be8ec0 Nikolay Borisov 2018-10-30 791 cc5de4e70256cbf Nikolay Borisov 2018-10-30 792 if (fsid_change_in_progress) { c0d81c7cb236782 Su Yue 2020-01-10 793 if (!has_metadata_uuid) 7a62d0f07377b51 Nikolay Borisov 2018-10-30 794 fs_devices = find_fsid_inprogress(disk_super); c0d81c7cb236782 Su Yue 2020-01-10 795 else cc5de4e70256cbf Nikolay Borisov 2018-10-30 796 fs_devices = find_fsid_changed(disk_super); 7a62d0f07377b51 Nikolay Borisov 2018-10-30 797 } else if (has_metadata_uuid) { c6730a0e5778bf2 Su Yue 2020-01-10 798 fs_devices = find_fsid_with_metadata_uuid(disk_super); 7a62d0f07377b51 Nikolay Borisov 2018-10-30 799 } else { 1362089d2ad7e20 Nikolay Borisov 2020-01-10 800 fs_devices = find_fsid_reverted_metadata(disk_super); 1362089d2ad7e20 Nikolay Borisov 2020-01-10 801 if (!fs_devices) 7a62d0f07377b51 Nikolay Borisov 2018-10-30 802 fs_devices = find_fsid(disk_super->fsid, NULL); 7a62d0f07377b51 Nikolay Borisov 2018-10-30 803 } 7a62d0f07377b51 Nikolay Borisov 2018-10-30 804 7a62d0f07377b51 Nikolay Borisov 2018-10-30 805 8a4b83cc8bd75fc Chris Mason 2008-03-24 806 if (!fs_devices) { 7239ff4b2be8ec0 Nikolay Borisov 2018-10-30 807 if (has_metadata_uuid) 7239ff4b2be8ec0 Nikolay Borisov 2018-10-30 808 fs_devices = alloc_fs_devices(disk_super->fsid, 7239ff4b2be8ec0 Nikolay Borisov 2018-10-30 809 disk_super->metadata_uuid); 7239ff4b2be8ec0 Nikolay Borisov 2018-10-30 810 else 7239ff4b2be8ec0 Nikolay Borisov 2018-10-30 811 fs_devices = alloc_fs_devices(disk_super->fsid, NULL); 7239ff4b2be8ec0 Nikolay Borisov 2018-10-30 812 2208a378f35fea7 Ilya Dryomov 2013-08-12 813 if (IS_ERR(fs_devices)) e124ece53edf3a8 Anand Jain 2018-01-18 814 return ERR_CAST(fs_devices); 2208a378f35fea7 Ilya Dryomov 2013-08-12 815 92900e5160a5444 Al Viro 2019-01-27 816 fs_devices->fsid_change = fsid_change_in_progress; 92900e5160a5444 Al Viro 2019-01-27 817 9c6d173ea6e4c8c Anand Jain 2018-05-29 818 mutex_lock(&fs_devices->device_list_mutex); c4babc5e38e94e7 Anand Jain 2018-04-12 819 list_add(&fs_devices->fs_list, &fs_uuids); 2208a378f35fea7 Ilya Dryomov 2013-08-12 820 8a4b83cc8bd75fc Chris Mason 2008-03-24 821 device = NULL; 8a4b83cc8bd75fc Chris Mason 2008-03-24 822 } else { 9c6d173ea6e4c8c Anand Jain 2018-05-29 823 mutex_lock(&fs_devices->device_list_mutex); 09ba3bc9dd15045 Anand Jain 2019-01-19 824 device = btrfs_find_device(fs_devices, devid, 09ba3bc9dd15045 Anand Jain 2019-01-19 825 disk_super->dev_item.uuid, NULL, false); 7a62d0f07377b51 Nikolay Borisov 2018-10-30 826 7a62d0f07377b51 Nikolay Borisov 2018-10-30 827 /* 7a62d0f07377b51 Nikolay Borisov 2018-10-30 828 * If this disk has been pulled into an fs devices created by 7a62d0f07377b51 Nikolay Borisov 2018-10-30 829 * a device which had the CHANGING_FSID_V2 flag then replace the 7a62d0f07377b51 Nikolay Borisov 2018-10-30 830 * metadata_uuid/fsid values of the fs_devices. 7a62d0f07377b51 Nikolay Borisov 2018-10-30 831 */ 1362089d2ad7e20 Nikolay Borisov 2020-01-10 832 if (fs_devices->fsid_change && 7a62d0f07377b51 Nikolay Borisov 2018-10-30 833 found_transid > fs_devices->latest_generation) { 7a62d0f07377b51 Nikolay Borisov 2018-10-30 834 memcpy(fs_devices->fsid, disk_super->fsid, 7a62d0f07377b51 Nikolay Borisov 2018-10-30 835 BTRFS_FSID_SIZE); 1362089d2ad7e20 Nikolay Borisov 2020-01-10 836 1362089d2ad7e20 Nikolay Borisov 2020-01-10 837 if (has_metadata_uuid) 1362089d2ad7e20 Nikolay Borisov 2020-01-10 838 memcpy(fs_devices->metadata_uuid, 1362089d2ad7e20 Nikolay Borisov 2020-01-10 839 disk_super->metadata_uuid, 1362089d2ad7e20 Nikolay Borisov 2020-01-10 840 BTRFS_FSID_SIZE); 1362089d2ad7e20 Nikolay Borisov 2020-01-10 841 else 7a62d0f07377b51 Nikolay Borisov 2018-10-30 842 memcpy(fs_devices->metadata_uuid, 1362089d2ad7e20 Nikolay Borisov 2020-01-10 843 disk_super->fsid, BTRFS_FSID_SIZE); 7a62d0f07377b51 Nikolay Borisov 2018-10-30 844 7a62d0f07377b51 Nikolay Borisov 2018-10-30 845 fs_devices->fsid_change = false; 7a62d0f07377b51 Nikolay Borisov 2018-10-30 846 } 8a4b83cc8bd75fc Chris Mason 2008-03-24 847 } 443f24fee731703 Miao Xie 2014-07-24 848 8a4b83cc8bd75fc Chris Mason 2008-03-24 849 if (!device) { 9c6d173ea6e4c8c Anand Jain 2018-05-29 850 if (fs_devices->opened) { 9c6d173ea6e4c8c Anand Jain 2018-05-29 851 mutex_unlock(&fs_devices->device_list_mutex); e124ece53edf3a8 Anand Jain 2018-01-18 852 return ERR_PTR(-EBUSY); 9c6d173ea6e4c8c Anand Jain 2018-05-29 853 } 2b82032c34ec405 Yan Zheng 2008-11-17 854 12bd2fc0d2f589f Ilya Dryomov 2013-08-23 855 device = btrfs_alloc_device(NULL, &devid, 12bd2fc0d2f589f Ilya Dryomov 2013-08-23 856 disk_super->dev_item.uuid); 12bd2fc0d2f589f Ilya Dryomov 2013-08-23 857 if (IS_ERR(device)) { 9c6d173ea6e4c8c Anand Jain 2018-05-29 858 mutex_unlock(&fs_devices->device_list_mutex); 8a4b83cc8bd75fc Chris Mason 2008-03-24 859 /* we can safely leave the fs_devices entry around */ e124ece53edf3a8 Anand Jain 2018-01-18 860 return device; 8a4b83cc8bd75fc Chris Mason 2008-03-24 861 } 606686eeac4550d Josef Bacik 2012-06-04 862 606686eeac4550d Josef Bacik 2012-06-04 863 name = rcu_string_strdup(path, GFP_NOFS); 606686eeac4550d Josef Bacik 2012-06-04 864 if (!name) { a425f9d4755a14f David Sterba 2018-03-20 865 btrfs_free_device(device); 9c6d173ea6e4c8c Anand Jain 2018-05-29 866 mutex_unlock(&fs_devices->device_list_mutex); e124ece53edf3a8 Anand Jain 2018-01-18 867 return ERR_PTR(-ENOMEM); 8a4b83cc8bd75fc Chris Mason 2008-03-24 868 } 606686eeac4550d Josef Bacik 2012-06-04 869 rcu_assign_pointer(device->name, name); 90519d66abbccc2 Arne Jansen 2011-05-23 870 1f78160ce1b1b8e Xiao Guangrong 2011-04-20 871 list_add_rcu(&device->dev_list, &fs_devices->devices); f71717502460c5c Filipe David Borba Manana 2013-08-12 872 fs_devices->num_devices++; e5e9a5206a171b2 Chris Mason 2009-06-10 873 2b82032c34ec405 Yan Zheng 2008-11-17 874 device->fs_devices = fs_devices; 4306a97449f9a0f Anand Jain 2018-05-29 875 *new_device_added = true; 327f18cc7f44bc0 Anand Jain 2018-01-18 876 327f18cc7f44bc0 Anand Jain 2018-01-18 877 if (disk_super->label[0]) aa6c0df73e3b3fc Anand Jain 2019-10-02 878 pr_info( aa6c0df73e3b3fc Anand Jain 2019-10-02 879 "BTRFS: device label %s devid %llu transid %llu %s scanned by %s (%d)\n", aa6c0df73e3b3fc Anand Jain 2019-10-02 880 disk_super->label, devid, found_transid, path, aa6c0df73e3b3fc Anand Jain 2019-10-02 881 current->comm, task_pid_nr(current)); 327f18cc7f44bc0 Anand Jain 2018-01-18 882 else aa6c0df73e3b3fc Anand Jain 2019-10-02 883 pr_info( aa6c0df73e3b3fc Anand Jain 2019-10-02 884 "BTRFS: device fsid %pU devid %llu transid %llu %s scanned by %s (%d)\n", aa6c0df73e3b3fc Anand Jain 2019-10-02 885 disk_super->fsid, devid, found_transid, path, aa6c0df73e3b3fc Anand Jain 2019-10-02 886 current->comm, task_pid_nr(current)); 327f18cc7f44bc0 Anand Jain 2018-01-18 887 606686eeac4550d Josef Bacik 2012-06-04 @888 } else if (!device->name || strcmp(device->name->str, path)) { b96de000bc8bc96 Anand Jain 2014-07-03 889 /* b96de000bc8bc96 Anand Jain 2014-07-03 890 * When FS is already mounted. b96de000bc8bc96 Anand Jain 2014-07-03 891 * 1. If you are here and if the device->name is NULL that b96de000bc8bc96 Anand Jain 2014-07-03 892 * means this device was missing at time of FS mount. b96de000bc8bc96 Anand Jain 2014-07-03 893 * 2. If you are here and if the device->name is different b96de000bc8bc96 Anand Jain 2014-07-03 894 * from 'path' that means either b96de000bc8bc96 Anand Jain 2014-07-03 895 * a. The same device disappeared and reappeared with b96de000bc8bc96 Anand Jain 2014-07-03 896 * different name. or b96de000bc8bc96 Anand Jain 2014-07-03 897 * b. The missing-disk-which-was-replaced, has b96de000bc8bc96 Anand Jain 2014-07-03 898 * reappeared now. b96de000bc8bc96 Anand Jain 2014-07-03 899 * b96de000bc8bc96 Anand Jain 2014-07-03 900 * We must allow 1 and 2a above. But 2b would be a spurious b96de000bc8bc96 Anand Jain 2014-07-03 901 * and unintentional. b96de000bc8bc96 Anand Jain 2014-07-03 902 * b96de000bc8bc96 Anand Jain 2014-07-03 903 * Further in case of 1 and 2a above, the disk at 'path' b96de000bc8bc96 Anand Jain 2014-07-03 904 * would have missed some transaction when it was away and b96de000bc8bc96 Anand Jain 2014-07-03 905 * in case of 2a the stale bdev has to be updated as well. b96de000bc8bc96 Anand Jain 2014-07-03 906 * 2b must not be allowed at all time. b96de000bc8bc96 Anand Jain 2014-07-03 907 */ b96de000bc8bc96 Anand Jain 2014-07-03 908 b96de000bc8bc96 Anand Jain 2014-07-03 909 /* 0f23ae74f589304 Chris Mason 2014-09-18 910 * For now, we do allow update to btrfs_fs_device through the 0f23ae74f589304 Chris Mason 2014-09-18 911 * btrfs dev scan cli after FS has been mounted. We're still 0f23ae74f589304 Chris Mason 2014-09-18 912 * tracking a problem where systems fail mount by subvolume id 0f23ae74f589304 Chris Mason 2014-09-18 913 * when we reject replacement on a mounted FS. b96de000bc8bc96 Anand Jain 2014-07-03 914 */ 0f23ae74f589304 Chris Mason 2014-09-18 915 if (!fs_devices->opened && found_transid < device->generation) { 77bdae4d136e167 Anand Jain 2014-07-03 916 /* 77bdae4d136e167 Anand Jain 2014-07-03 917 * That is if the FS is _not_ mounted and if you 77bdae4d136e167 Anand Jain 2014-07-03 918 * are here, that means there is more than one 77bdae4d136e167 Anand Jain 2014-07-03 919 * disk with same uuid and devid.We keep the one 77bdae4d136e167 Anand Jain 2014-07-03 920 * with larger generation number or the last-in if 77bdae4d136e167 Anand Jain 2014-07-03 921 * generation are equal. 77bdae4d136e167 Anand Jain 2014-07-03 922 */ 9c6d173ea6e4c8c Anand Jain 2018-05-29 923 mutex_unlock(&fs_devices->device_list_mutex); e124ece53edf3a8 Anand Jain 2018-01-18 924 return ERR_PTR(-EEXIST); 77bdae4d136e167 Anand Jain 2014-07-03 925 } b96de000bc8bc96 Anand Jain 2014-07-03 926 a9261d4125c97ce Anand Jain 2018-10-15 927 /* a9261d4125c97ce Anand Jain 2018-10-15 928 * We are going to replace the device path for a given devid, a9261d4125c97ce Anand Jain 2018-10-15 929 * make sure it's the same device if the device is mounted a9261d4125c97ce Anand Jain 2018-10-15 930 */ a9261d4125c97ce Anand Jain 2018-10-15 931 if (device->bdev) { a9261d4125c97ce Anand Jain 2018-10-15 932 struct block_device *path_bdev; a9261d4125c97ce Anand Jain 2018-10-15 933 a9261d4125c97ce Anand Jain 2018-10-15 934 path_bdev = lookup_bdev(path); a9261d4125c97ce Anand Jain 2018-10-15 935 if (IS_ERR(path_bdev)) { a9261d4125c97ce Anand Jain 2018-10-15 936 mutex_unlock(&fs_devices->device_list_mutex); a9261d4125c97ce Anand Jain 2018-10-15 937 return ERR_CAST(path_bdev); a9261d4125c97ce Anand Jain 2018-10-15 938 } a9261d4125c97ce Anand Jain 2018-10-15 939 a9261d4125c97ce Anand Jain 2018-10-15 940 if (device->bdev != path_bdev) { a9261d4125c97ce Anand Jain 2018-10-15 941 bdput(path_bdev); a9261d4125c97ce Anand Jain 2018-10-15 942 mutex_unlock(&fs_devices->device_list_mutex); a9261d4125c97ce Anand Jain 2018-10-15 943 btrfs_warn_in_rcu(device->fs_info, 79dae17d8d44b2d Anand Jain 2020-09-03 944 "duplicate device %s devid %llu generation %llu scanned by %s (%d)", 79dae17d8d44b2d Anand Jain 2020-09-03 945 path, devid, found_transid, 79dae17d8d44b2d Anand Jain 2020-09-03 946 current->comm, 79dae17d8d44b2d Anand Jain 2020-09-03 947 task_pid_nr(current)); a9261d4125c97ce Anand Jain 2018-10-15 948 return ERR_PTR(-EEXIST); a9261d4125c97ce Anand Jain 2018-10-15 949 } a9261d4125c97ce Anand Jain 2018-10-15 950 bdput(path_bdev); a9261d4125c97ce Anand Jain 2018-10-15 951 btrfs_info_in_rcu(device->fs_info, 79dae17d8d44b2d Anand Jain 2020-09-03 952 "devid %llu device path %s changed to %s scanned by %s (%d)", 79dae17d8d44b2d Anand Jain 2020-09-03 953 devid, rcu_str_deref(device->name), 79dae17d8d44b2d Anand Jain 2020-09-03 954 path, current->comm, 79dae17d8d44b2d Anand Jain 2020-09-03 955 task_pid_nr(current)); a9261d4125c97ce Anand Jain 2018-10-15 956 } a9261d4125c97ce Anand Jain 2018-10-15 957 606686eeac4550d Josef Bacik 2012-06-04 958 name = rcu_string_strdup(path, GFP_NOFS); 9c6d173ea6e4c8c Anand Jain 2018-05-29 959 if (!name) { 9c6d173ea6e4c8c Anand Jain 2018-05-29 960 mutex_unlock(&fs_devices->device_list_mutex); e124ece53edf3a8 Anand Jain 2018-01-18 961 return ERR_PTR(-ENOMEM); 9c6d173ea6e4c8c Anand Jain 2018-05-29 962 } 606686eeac4550d Josef Bacik 2012-06-04 963 rcu_string_free(device->name); 606686eeac4550d Josef Bacik 2012-06-04 964 rcu_assign_pointer(device->name, name); e6e674bd4d54fe8 Anand Jain 2017-12-04 965 if (test_bit(BTRFS_DEV_STATE_MISSING, &device->dev_state)) { cd02dca56442e15 Chris Mason 2010-12-13 966 fs_devices->missing_devices--; e6e674bd4d54fe8 Anand Jain 2017-12-04 967 clear_bit(BTRFS_DEV_STATE_MISSING, &device->dev_state); cd02dca56442e15 Chris Mason 2010-12-13 968 } 8a4b83cc8bd75fc Chris Mason 2008-03-24 969 } 8a4b83cc8bd75fc Chris Mason 2008-03-24 970 77bdae4d136e167 Anand Jain 2014-07-03 971 /* 77bdae4d136e167 Anand Jain 2014-07-03 972 * Unmount does not free the btrfs_device struct but would zero 77bdae4d136e167 Anand Jain 2014-07-03 973 * generation along with most of the other members. So just update 77bdae4d136e167 Anand Jain 2014-07-03 974 * it back. We need it to pick the disk with largest generation 77bdae4d136e167 Anand Jain 2014-07-03 975 * (as above). 77bdae4d136e167 Anand Jain 2014-07-03 976 */ d1a63002829a4d8 Nikolay Borisov 2018-10-30 977 if (!fs_devices->opened) { 77bdae4d136e167 Anand Jain 2014-07-03 978 device->generation = found_transid; d1a63002829a4d8 Nikolay Borisov 2018-10-30 979 fs_devices->latest_generation = max_t(u64, found_transid, d1a63002829a4d8 Nikolay Borisov 2018-10-30 980 fs_devices->latest_generation); d1a63002829a4d8 Nikolay Borisov 2018-10-30 981 } 77bdae4d136e167 Anand Jain 2014-07-03 982 f2788d2f76cafef Anand Jain 2018-01-18 983 fs_devices->total_devices = btrfs_super_num_devices(disk_super); f2788d2f76cafef Anand Jain 2018-01-18 984 9c6d173ea6e4c8c Anand Jain 2018-05-29 985 mutex_unlock(&fs_devices->device_list_mutex); e124ece53edf3a8 Anand Jain 2018-01-18 986 return device; 8a4b83cc8bd75fc Chris Mason 2008-03-24 987 } 8a4b83cc8bd75fc Chris Mason 2008-03-24 988 :::::: The code at line 888 was first introduced by commit :::::: 606686eeac4550d2212bf3d621a810407ef5e9bf Btrfs: use rcu to protect device->name :::::: TO: Josef Bacik <jo...@redhat.com> :::::: CC: Chris Mason <chris.ma...@oracle.com> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip