On 2020/11/26 11:42, Chaitanya Kulkarni wrote: > Add zone-mgmt-send, zone-mgmt-recv and zone-zppend handlers for the s/zone-zppend/zone-append > bdev backend so that it can support zbd. s/zbd/zoned block devices (zbd is not an obvious acronym to all people) > > Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@xxxxxxx> > --- > drivers/nvme/target/Makefile | 3 +-- > drivers/nvme/target/io-cmd-bdev.c | 9 +++++++++ > drivers/nvme/target/zns.c | 6 +++--- > 3 files changed, 13 insertions(+), 5 deletions(-) > > diff --git a/drivers/nvme/target/Makefile b/drivers/nvme/target/Makefile > index bc147ff2df5d..15307b1cc713 100644 > --- a/drivers/nvme/target/Makefile > +++ b/drivers/nvme/target/Makefile > @@ -10,9 +10,8 @@ obj-$(CONFIG_NVME_TARGET_FCLOOP) += nvme-fcloop.o > obj-$(CONFIG_NVME_TARGET_TCP) += nvmet-tcp.o > > nvmet-y += core.o configfs.o admin-cmd.o fabrics-cmd.o \ > - discovery.o io-cmd-file.o io-cmd-bdev.o > + zns.o discovery.o io-cmd-file.o io-cmd-bdev.o OK. Now I understand the really not obvious #ifdef in zns.c. Isn't there a better way to do this ? If you move the code that must be unconditionally compiled to check support for ZNS/Zoned devices is moved out of zns.c, you would not need this dance with the Makefile and that will cleanup the code (read: less of it). > nvmet-$(CONFIG_NVME_TARGET_PASSTHRU) += passthru.o > -nvmet-$(CONFIG_BLK_DEV_ZONED) += zns.o > > nvme-loop-y += loop.o > nvmet-rdma-y += rdma.o > diff --git a/drivers/nvme/target/io-cmd-bdev.c b/drivers/nvme/target/io-cmd-bdev.c > index f8a500983abd..4fcc8374b857 100644 > --- a/drivers/nvme/target/io-cmd-bdev.c > +++ b/drivers/nvme/target/io-cmd-bdev.c > @@ -453,6 +453,15 @@ u16 nvmet_bdev_parse_io_cmd(struct nvmet_req *req) > case nvme_cmd_write_zeroes: > req->execute = nvmet_bdev_execute_write_zeroes; > return 0; > + case nvme_cmd_zone_append: > + req->execute = nvmet_bdev_execute_zone_append; > + return 0; > + case nvme_cmd_zone_mgmt_recv: > + req->execute = nvmet_bdev_execute_zone_mgmt_recv; > + return 0; > + case nvme_cmd_zone_mgmt_send: > + req->execute = nvmet_bdev_execute_zone_mgmt_send; > + return 0; > default: > pr_err("unhandled cmd %d on qid %d\n", cmd->common.opcode, > req->sq->qid); > diff --git a/drivers/nvme/target/zns.c b/drivers/nvme/target/zns.c > index 8ea6641a55e3..efd11d7a6f96 100644 > --- a/drivers/nvme/target/zns.c > +++ b/drivers/nvme/target/zns.c > @@ -361,17 +361,17 @@ void nvmet_bdev_execute_zone_append(struct nvmet_req *req) > } > > #else /* CONFIG_BLK_DEV_ZONED */ > -static void nvmet_execute_identify_cns_cs_ctrl(struct nvmet_req *req) > +void nvmet_execute_identify_cns_cs_ctrl(struct nvmet_req *req) > { > } > -static void nvmet_execute_identify_cns_cs_ns(struct nvmet_req *req) > +void nvmet_execute_identify_cns_cs_ns(struct nvmet_req *req) > { > } > u16 nvmet_process_zns_cis(struct nvmet_req *req, off_t *off) > { > return 0; > } > -static bool nvmet_bdev_zns_config(struct nvmet_ns *ns) > +bool nvmet_bdev_zns_config(struct nvmet_ns *ns) > { > return false; > } > -- Damien Le Moal Western Digital Research