All of lore.kernel.org
 help / color / mirror / Atom feed
* [kdave-btrfs-devel:misc-next 162/163] fs/btrfs/volumes.c:888:50: sparse: sparse: incorrect type in argument 1 (different address spaces)
@ 2020-10-02  1:38 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-10-02  1:38 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 26047 bytes --]

tree:   https://github.com/kdave/btrfs-devel.git misc-next
head:   b2aafb0654f267153d53bd9f0f7490dcf04f7bbf
commit: 3b19f66afb7ca6bf3495fb32ce30a2318676a1fa [162/163] btrfs: annotate device name rcu_string with __rcu
config: i386-randconfig-s002-20200930 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.2-201-g24bdaac6-dirty
        # https://github.com/kdave/btrfs-devel/commit/3b19f66afb7ca6bf3495fb32ce30a2318676a1fa
        git remote add kdave-btrfs-devel https://github.com/kdave/btrfs-devel.git
        git fetch --no-tags kdave-btrfs-devel misc-next
        git checkout 3b19f66afb7ca6bf3495fb32ce30a2318676a1fa
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

	echo
	echo "sparse warnings: (new ones prefixed by >>)"
	echo
   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 *cs @@     got char [noderef] __rcu * @@
>> fs/btrfs/volumes.c:888:50: sparse:     expected char const *cs
   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,
16f60d0166a021b Anand Jain                2020-09-03  944  	"duplicate device %s devid %llu generation %llu scanned by %s (%d)",
16f60d0166a021b Anand Jain                2020-09-03  945  						  path, devid, found_transid,
16f60d0166a021b Anand Jain                2020-09-03  946  						  current->comm,
16f60d0166a021b 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,
16f60d0166a021b Anand Jain                2020-09-03  952  	"devid %llu device path %s changed to %s scanned by %s (%d)",
16f60d0166a021b Anand Jain                2020-09-03  953  					  devid, rcu_str_deref(device->name),
16f60d0166a021b Anand Jain                2020-09-03  954  					  path, current->comm,
16f60d0166a021b 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 <josef@redhat.com>
:::::: CC: Chris Mason <chris.mason@oracle.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 34945 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-10-02  1:38 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-02  1:38 [kdave-btrfs-devel:misc-next 162/163] fs/btrfs/volumes.c:888:50: sparse: sparse: incorrect type in argument 1 (different address spaces) kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.