tree: https://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending.git nvmet-configfs-ng head: b75ad796462431e38bba0fb04d277fd83c919575 commit: b57da10630e0fb2243e901f2df910c5c980e922e [30/35] nvmet/configfs-ng: Introduce struct nvmet_port_binding config: i386-allmodconfig (attached as .config) compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430 reproduce: git checkout b57da10630e0fb2243e901f2df910c5c980e922e # save the attached .config to linux build tree make ARCH=i386
Note: the target/nvmet-configfs-ng HEAD
b75ad796462431e38bba0fb04d277fd83c919575 builds fine.
It only hurts bisectibility.
All errors (new ones prefixed by >>):
In file included from include/linux/notifier.h:13:0,
from include/linux/memory_hotplug.h:6,
from include/linux/mmzone.h:737,
from include/linux/gfp.h:5,
from include/linux/kmod.h:22,
from include/linux/module.h:13,
from drivers/nvme/target/configfs-ng.c:5:
drivers/nvme/target/configfs-ng.c: In function 'nvmet_port_disable':
>> drivers/nvme/target/configfs-ng.c:253:18: error: 'struct nvmet_port' has no
>> member named 'port_binding_mutex'; did you mean 'port_binding_list'?
mutex_lock(&port->port_binding_mutex);
^
include/linux/mutex.h:146:44: note: in definition of macro 'mutex_lock'
#define mutex_lock(lock) mutex_lock_nested(lock, 0)
^~~~
>> drivers/nvme/target/configfs-ng.c:255:19: error: 'struct nvmet_port_binding'
>> has no member named 'subsys_node'
list_del_init(&pb->subsys_node);
^~
drivers/nvme/target/configfs-ng.c:256:20: error: 'struct nvmet_port' has no
member named 'port_binding_mutex'; did you mean 'port_binding_list'?
mutex_unlock(&port->port_binding_mutex);
^~
>> drivers/nvme/target/configfs-ng.c:262:19: error: passing argument 1 of
>> 'ops->remove_port' from incompatible pointer type
>> [-Werror=incompatible-pointer-types]
ops->remove_port(pb);
^~
drivers/nvme/target/configfs-ng.c:262:19: note: expected 'struct nvmet_port
*' but argument is of type 'struct nvmet_port_binding *'
drivers/nvme/target/configfs-ng.c: In function 'nvmet_port_enable_store':
>> drivers/nvme/target/configfs-ng.c:302:22: error: passing argument 1 of
>> 'ops->add_port' from incompatible pointer type
>> [-Werror=incompatible-pointer-types]
rc = ops->add_port(pb);
^~
drivers/nvme/target/configfs-ng.c:302:22: note: expected 'struct nvmet_port
*' but argument is of type 'struct nvmet_port_binding *'
In file included from include/linux/notifier.h:13:0,
from include/linux/memory_hotplug.h:6,
from include/linux/mmzone.h:737,
from include/linux/gfp.h:5,
from include/linux/kmod.h:22,
from include/linux/module.h:13,
from drivers/nvme/target/configfs-ng.c:5:
drivers/nvme/target/configfs-ng.c:309:19: error: 'struct nvmet_port' has no
member named 'port_binding_mutex'; did you mean 'port_binding_list'?
mutex_lock(&port->port_binding_mutex);
^
include/linux/mutex.h:146:44: note: in definition of macro 'mutex_lock'
#define mutex_lock(lock) mutex_lock_nested(lock, 0)
^~~~
drivers/nvme/target/configfs-ng.c:311:20: error: 'struct nvmet_port_binding'
has no member named 'subsys_node'
list_add_tail(&pb->subsys_node, &port->port_binding_list);
^~
drivers/nvme/target/configfs-ng.c:312:21: error: 'struct nvmet_port' has no
member named 'port_binding_mutex'; did you mean 'port_binding_list'?
mutex_unlock(&port->port_binding_mutex);
^~
cc1: some warnings being treated as errors
vim +253 drivers/nvme/target/configfs-ng.c
247 struct nvmet_subsys *subsys = pb->nf_subsys;
248 struct nvmet_port *port = pb->port;
249
250 if (!ops || !port)
251 return;
252
> 253 mutex_lock(&port->port_binding_mutex);
254 pb->enabled = false;
> 255 list_del_init(&pb->subsys_node);
> 256 mutex_unlock(&port->port_binding_mutex);
257
258 mutex_lock(&subsys->pb_list_mutex);
259 list_del_init(&pb->node);
260 mutex_unlock(&subsys->pb_list_mutex);
261
> 262 ops->remove_port(pb);
263 nvmet_put_transport(&pb->disc_addr);
264 pb->nf_ops = NULL;
265 }
266
267 static ssize_t nvmet_port_enable_show(struct config_item *item, char
*page)
268 {
269 struct nvmet_port_binding *pb = to_nvmet_port_binding(item);
270
271 return sprintf(page, "%d\n", pb->enabled);
272 }
273
274 static ssize_t nvmet_port_enable_store(struct config_item *item,
275 const char *page, size_t count)
276 {
277 struct nvmet_port *port;
278 struct nvmet_port_binding *pb = to_nvmet_port_binding(item);
279 struct nvmet_subsys *subsys = pb->nf_subsys;
280 struct nvmet_fabrics_ops *ops;
281 bool enable;
282 int rc;
283
284 printk("Entering port enable %d\n", pb->disc_addr.trtype);
285
286 if (strtobool(page, &enable))
287 return -EINVAL;
288
289 if (enable) {
290 if (pb->enabled) {
291 pr_warn("port already enabled: %d\n",
292 pb->disc_addr.trtype);
293 goto out;
294 }
295
296 ops = nvmet_get_transport(&pb->disc_addr);
297 if (IS_ERR(ops))
298 return PTR_ERR(ops);
299
300 pb->nf_ops = ops;
301
> 302 rc = ops->add_port(pb);
303 if (rc) {
304 nvmet_put_transport(&pb->disc_addr);
305 return rc;
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: Binary data

