[linux-next:master 6950/7658] drivers/md/dm.c:2131:(.text.alloc_dev+0x6e4): undefined reference to `set_dax_nocache'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   d37e1e4c52bc60578969f391fb81f947c3e83118
commit: d888f6b0a7666bcbcf3ba7e0b4e9c695a07e9209 [6950/7658] dm: treat alloc_dax() -EOPNOTSUPP failure as non-fatal
config: powerpc-randconfig-r012-20220101 (https://download.01.org/0day-ci/archive/20240218/202402181312.qjWYpOJA-lkp@xxxxxxxxx/config)
compiler: powerpc-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240218/202402181312.qjWYpOJA-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202402181312.qjWYpOJA-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

   powerpc-linux-ld: drivers/md/dm.o: in function `alloc_dev':
>> drivers/md/dm.c:2131:(.text.alloc_dev+0x6e4): undefined reference to `set_dax_nocache'
>> powerpc-linux-ld: drivers/md/dm.c:2132:(.text.alloc_dev+0x6ec): undefined reference to `set_dax_nomc'
   pahole: .tmp_vmlinux.btf: Invalid argument
   .btf.vmlinux.bin.o: file not recognized: file format not recognized


vim +2131 drivers/md/dm.c

  2050	
  2051	/*
  2052	 * Allocate and initialise a blank device with a given minor.
  2053	 */
  2054	static struct mapped_device *alloc_dev(int minor)
  2055	{
  2056		int r, numa_node_id = dm_get_numa_node();
  2057		struct dax_device *dax_dev;
  2058		struct mapped_device *md;
  2059		void *old_md;
  2060	
  2061		md = kvzalloc_node(sizeof(*md), GFP_KERNEL, numa_node_id);
  2062		if (!md) {
  2063			DMERR("unable to allocate device, out of memory.");
  2064			return NULL;
  2065		}
  2066	
  2067		if (!try_module_get(THIS_MODULE))
  2068			goto bad_module_get;
  2069	
  2070		/* get a minor number for the dev */
  2071		if (minor == DM_ANY_MINOR)
  2072			r = next_free_minor(&minor);
  2073		else
  2074			r = specific_minor(minor);
  2075		if (r < 0)
  2076			goto bad_minor;
  2077	
  2078		r = init_srcu_struct(&md->io_barrier);
  2079		if (r < 0)
  2080			goto bad_io_barrier;
  2081	
  2082		md->numa_node_id = numa_node_id;
  2083		md->init_tio_pdu = false;
  2084		md->type = DM_TYPE_NONE;
  2085		mutex_init(&md->suspend_lock);
  2086		mutex_init(&md->type_lock);
  2087		mutex_init(&md->table_devices_lock);
  2088		spin_lock_init(&md->deferred_lock);
  2089		atomic_set(&md->holders, 1);
  2090		atomic_set(&md->open_count, 0);
  2091		atomic_set(&md->event_nr, 0);
  2092		atomic_set(&md->uevent_seq, 0);
  2093		INIT_LIST_HEAD(&md->uevent_list);
  2094		INIT_LIST_HEAD(&md->table_devices);
  2095		spin_lock_init(&md->uevent_lock);
  2096	
  2097		/*
  2098		 * default to bio-based until DM table is loaded and md->type
  2099		 * established. If request-based table is loaded: blk-mq will
  2100		 * override accordingly.
  2101		 */
  2102		md->disk = blk_alloc_disk(md->numa_node_id);
  2103		if (!md->disk)
  2104			goto bad;
  2105		md->queue = md->disk->queue;
  2106	
  2107		init_waitqueue_head(&md->wait);
  2108		INIT_WORK(&md->work, dm_wq_work);
  2109		INIT_WORK(&md->requeue_work, dm_wq_requeue_work);
  2110		init_waitqueue_head(&md->eventq);
  2111		init_completion(&md->kobj_holder.completion);
  2112	
  2113		md->requeue_list = NULL;
  2114		md->swap_bios = get_swap_bios();
  2115		sema_init(&md->swap_bios_semaphore, md->swap_bios);
  2116		mutex_init(&md->swap_bios_lock);
  2117	
  2118		md->disk->major = _major;
  2119		md->disk->first_minor = minor;
  2120		md->disk->minors = 1;
  2121		md->disk->flags |= GENHD_FL_NO_PART;
  2122		md->disk->fops = &dm_blk_dops;
  2123		md->disk->private_data = md;
  2124		sprintf(md->disk->disk_name, "dm-%d", minor);
  2125	
  2126		dax_dev = alloc_dax(md, &dm_dax_ops);
  2127		if (IS_ERR(dax_dev)) {
  2128			if (PTR_ERR(dax_dev) != -EOPNOTSUPP)
  2129				goto bad;
  2130		} else {
> 2131			set_dax_nocache(dax_dev);
> 2132			set_dax_nomc(dax_dev);
  2133			md->dax_dev = dax_dev;
  2134			if (dax_add_host(dax_dev, md->disk))
  2135				goto bad;
  2136		}
  2137	
  2138		format_dev_t(md->name, MKDEV(_major, minor));
  2139	
  2140		md->wq = alloc_workqueue("kdmflush/%s", WQ_MEM_RECLAIM, 0, md->name);
  2141		if (!md->wq)
  2142			goto bad;
  2143	
  2144		md->pending_io = alloc_percpu(unsigned long);
  2145		if (!md->pending_io)
  2146			goto bad;
  2147	
  2148		r = dm_stats_init(&md->stats);
  2149		if (r < 0)
  2150			goto bad;
  2151	
  2152		/* Populate the mapping, nobody knows we exist yet */
  2153		spin_lock(&_minor_lock);
  2154		old_md = idr_replace(&_minor_idr, md, minor);
  2155		spin_unlock(&_minor_lock);
  2156	
  2157		BUG_ON(old_md != MINOR_ALLOCED);
  2158	
  2159		return md;
  2160	
  2161	bad:
  2162		cleanup_mapped_device(md);
  2163	bad_io_barrier:
  2164		free_minor(minor);
  2165	bad_minor:
  2166		module_put(THIS_MODULE);
  2167	bad_module_get:
  2168		kvfree(md);
  2169		return NULL;
  2170	}
  2171	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux