Subject: linux-next: build failure after merge of the block tree

From: Mark Brown <[email-masked]>
Date: Wed, 2 Dec 2015 16:19:36 +0000

Hi Jens,

After merging the block tree, today's linux-next build (x86 allmodconfig)
failed like this:

/home/broonie/next/next/drivers/nvme/host/lightnvm.c: In function 'nvme_nvm_identity':
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:279:27: error: 'struct nvme_ns' has no member named 'dev'
  struct nvme_dev *dev = ns->dev;
                           ^
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:292:32: error: dereferencing pointer to incomplete type 'struct nvme_dev'
  ret = nvme_submit_sync_cmd(dev->admin_q, (struct nvme_command *)&c,
                                ^
/home/broonie/next/next/drivers/nvme/host/lightnvm.c: In function 'nvme_nvm_get_l2p_tbl':
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:317:27: error: 'struct nvme_ns' has no member named 'dev'
  struct nvme_dev *dev = ns->dev;
                           ^
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:319:36: error: dereferencing pointer to incomplete type 'struct nvme_dev'
  u32 len = queue_max_hw_sectors(dev->admin_q) << 9;
                                    ^
/home/broonie/next/next/drivers/nvme/host/lightnvm.c: In function 'nvme_nvm_get_bb_tbl':
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:365:27: error: 'struct nvme_ns' has no member named 'dev'
  struct nvme_dev *dev = ns->dev;
                           ^
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:379:32: error: dereferencing pointer to incomplete type 'struct nvme_dev'
  ret = nvme_submit_sync_cmd(dev->admin_q, (struct nvme_command *)&c,
                                ^
/home/broonie/next/next/drivers/nvme/host/lightnvm.c: In function 'nvme_nvm_set_bb_tbl':
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:422:27: error: 'struct nvme_ns' has no member named 'dev'
  struct nvme_dev *dev = ns->dev;
                           ^
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:432:32: error: dereferencing pointer to incomplete type 'struct nvme_dev'
  ret = nvme_submit_sync_cmd(dev->admin_q, (struct nvme_command *)&c,
                                ^
/home/broonie/next/next/drivers/nvme/host/lightnvm.c: In function 'nvme_nvm_create_dma_pool':
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:521:27: error: 'struct nvme_ns' has no member named 'dev'
  struct nvme_dev *dev = ns->dev;
                           ^
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:523:34: error: dereferencing pointer to incomplete type 'struct nvme_dev'
  return dma_pool_create(name, dev->dev, PAGE_SIZE, PAGE_SIZE, 0);
                                  ^
/home/broonie/next/next/drivers/nvme/host/lightnvm.c: In function 'nvme_nvm_ns_supported':
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:576:27: error: 'struct nvme_ns' has no member named 'dev'
  struct nvme_dev *dev = ns->dev;
                           ^
In file included from /home/broonie/next/next/include/linux/list.h:8:0,
                 from /home/broonie/next/next/include/linux/pci.h:25,
                 from /home/broonie/next/next/drivers/nvme/host/nvme.h:18,
                 from /home/broonie/next/next/drivers/nvme/host/lightnvm.c:23:
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:577:39: error: dereferencing pointer to incomplete type 'struct nvme_dev'
  struct pci_dev *pdev = to_pci_dev(dev->dev);
                                       ^
/home/broonie/next/next/include/linux/kernel.h:813:49: note: in definition of macro 'container_of'
  const typeof( ((type *)0)->member ) *__mptr = (ptr); \
                                                 ^
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:577:25: note: in expansion of macro 'to_pci_dev'
  struct pci_dev *pdev = to_pci_dev(dev->dev);
                         ^
/home/broonie/next/next/drivers/nvme/host/lightnvm.c: In function 'nvme_nvm_create_dma_pool':
/home/broonie/next/next/drivers/nvme/host/lightnvm.c:524:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
/home/broonie/next/next/scripts/Makefile.build:258: recipe for target 'drivers/nvme/host/lightnvm.o' failed
make[4]: *** [drivers/nvme/host/lightnvm.o] Error 1

Caused by commit 1c63dc66580d4b (nvme: split a new struct nvme_ctrl out of
struct nvme_dev) which replaced dev in struct nvme_ns with ctrl without
updating this user. I used the block tree from the last -next build
(3f3a8a218c2f) instead.