drivers/block/nvme-core.c: fix build with gcc-4.4.4
gcc-4.4.4 (and possibly other versions) fail the compile when initializers
are used with anonymous unions. Work around this.
drivers/block/nvme-core.c: In function 'nvme_identify_ctrl':
drivers/block/nvme-core.c:1163: error: unknown field 'identify' specified in initializer
drivers/block/nvme-core.c:1163: warning: missing braces around initializer
drivers/block/nvme-core.c:1163: warning: (near initialization for 'c.<anonymous>')
drivers/block/nvme-core.c:1164: error: unknown field 'identify' specified in initializer
drivers/block/nvme-core.c:1164: warning: excess elements in struct initializer
drivers/block/nvme-core.c:1164: warning: (near initialization for 'c')
...
This patch has no effect on text size with gcc-4.8.2.
Fixes: d29ec8241c
("nvme: submit internal commands through the block layer")
Cc: Christoph Hellwig <hch@lst.de>
Cc: Jens Axboe <axboe@fb.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
6443af9855
commit
e44ac588cd
|
@ -1171,12 +1171,13 @@ static int adapter_delete_sq(struct nvme_dev *dev, u16 sqid)
|
||||||
|
|
||||||
int nvme_identify_ctrl(struct nvme_dev *dev, struct nvme_id_ctrl **id)
|
int nvme_identify_ctrl(struct nvme_dev *dev, struct nvme_id_ctrl **id)
|
||||||
{
|
{
|
||||||
struct nvme_command c = {
|
struct nvme_command c = { };
|
||||||
.identify.opcode = nvme_admin_identify,
|
|
||||||
.identify.cns = cpu_to_le32(1),
|
|
||||||
};
|
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
|
/* gcc-4.4.4 (at least) has issues with initializers and anon unions */
|
||||||
|
c.identify.opcode = nvme_admin_identify;
|
||||||
|
c.identify.cns = cpu_to_le32(1);
|
||||||
|
|
||||||
*id = kmalloc(sizeof(struct nvme_id_ctrl), GFP_KERNEL);
|
*id = kmalloc(sizeof(struct nvme_id_ctrl), GFP_KERNEL);
|
||||||
if (!*id)
|
if (!*id)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
@ -1191,12 +1192,13 @@ int nvme_identify_ctrl(struct nvme_dev *dev, struct nvme_id_ctrl **id)
|
||||||
int nvme_identify_ns(struct nvme_dev *dev, unsigned nsid,
|
int nvme_identify_ns(struct nvme_dev *dev, unsigned nsid,
|
||||||
struct nvme_id_ns **id)
|
struct nvme_id_ns **id)
|
||||||
{
|
{
|
||||||
struct nvme_command c = {
|
struct nvme_command c = { };
|
||||||
.identify.opcode = nvme_admin_identify,
|
|
||||||
.identify.nsid = cpu_to_le32(nsid),
|
|
||||||
};
|
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
|
/* gcc-4.4.4 (at least) has issues with initializers and anon unions */
|
||||||
|
c.identify.opcode = nvme_admin_identify,
|
||||||
|
c.identify.nsid = cpu_to_le32(nsid),
|
||||||
|
|
||||||
*id = kmalloc(sizeof(struct nvme_id_ns), GFP_KERNEL);
|
*id = kmalloc(sizeof(struct nvme_id_ns), GFP_KERNEL);
|
||||||
if (!*id)
|
if (!*id)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
@ -1240,14 +1242,14 @@ int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11,
|
||||||
|
|
||||||
int nvme_get_log_page(struct nvme_dev *dev, struct nvme_smart_log **log)
|
int nvme_get_log_page(struct nvme_dev *dev, struct nvme_smart_log **log)
|
||||||
{
|
{
|
||||||
struct nvme_command c = {
|
struct nvme_command c = { };
|
||||||
.common.opcode = nvme_admin_get_log_page,
|
int error;
|
||||||
.common.nsid = cpu_to_le32(0xFFFFFFFF),
|
|
||||||
.common.cdw10[0] = cpu_to_le32(
|
c.common.opcode = nvme_admin_get_log_page,
|
||||||
|
c.common.nsid = cpu_to_le32(0xFFFFFFFF),
|
||||||
|
c.common.cdw10[0] = cpu_to_le32(
|
||||||
(((sizeof(struct nvme_smart_log) / 4) - 1) << 16) |
|
(((sizeof(struct nvme_smart_log) / 4) - 1) << 16) |
|
||||||
NVME_LOG_SMART),
|
NVME_LOG_SMART),
|
||||||
};
|
|
||||||
int error;
|
|
||||||
|
|
||||||
*log = kmalloc(sizeof(struct nvme_smart_log), GFP_KERNEL);
|
*log = kmalloc(sizeof(struct nvme_smart_log), GFP_KERNEL);
|
||||||
if (!*log)
|
if (!*log)
|
||||||
|
|
Loading…
Reference in New Issue