]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/spdk/lib/nvmf/transport.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / lib / nvmf / transport.h
index aaecff104cdd3d70c2b673a8027598be2e45afa3..38b5d8db3713b265ba35507ea36b8ab3195481e7 100644 (file)
@@ -1,8 +1,8 @@
 /*-
  *   BSD LICENSE
  *
- *   Copyright (c) Intel Corporation.
- *   All rights reserved.
+ *   Copyright (c) Intel Corporation. All rights reserved.
+ *   Copyright (c) 2019 Mellanox Technologies LTD. All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
  *   modification, are permitted provided that the following conditions
 
 #include "spdk/nvme.h"
 #include "spdk/nvmf.h"
+#include "spdk/nvmf_transport.h"
 
-struct spdk_nvmf_transport {
-       struct spdk_nvmf_tgt                    *tgt;
-       const struct spdk_nvmf_transport_ops    *ops;
-       struct spdk_nvmf_transport_opts         opts;
-
-       /* A mempool for transport related data transfers */
-       struct spdk_mempool                     *data_buf_pool;
-
-       TAILQ_ENTRY(spdk_nvmf_transport)        link;
-};
-
-struct spdk_nvmf_transport_ops {
-       /**
-        * Transport type
-        */
-       enum spdk_nvme_transport_type type;
-
-       /**
-        * Initialize transport options to default value
-        */
-       void (*opts_init)(struct spdk_nvmf_transport_opts *opts);
-
-       /**
-        * Create a transport for the given transport opts
-        */
-       struct spdk_nvmf_transport *(*create)(struct spdk_nvmf_transport_opts *opts);
-
-       /**
-        * Destroy the transport
-        */
-       int (*destroy)(struct spdk_nvmf_transport *transport);
-
-       /**
-         * Instruct the transport to accept new connections at the address
-         * provided. This may be called multiple times.
-         */
-       int (*listen)(struct spdk_nvmf_transport *transport,
-                     const struct spdk_nvme_transport_id *trid);
-
-       /**
-         * Stop accepting new connections at the given address.
-         */
-       int (*stop_listen)(struct spdk_nvmf_transport *transport,
-                          const struct spdk_nvme_transport_id *trid);
-
-       /**
-        * Check for new connections on the transport.
-        */
-       void (*accept)(struct spdk_nvmf_transport *transport, new_qpair_fn cb_fn);
-
-       /**
-        * Fill out a discovery log entry for a specific listen address.
-        */
-       void (*listener_discover)(struct spdk_nvmf_transport *transport,
-                                 struct spdk_nvme_transport_id *trid,
-                                 struct spdk_nvmf_discovery_log_page_entry *entry);
-
-       /**
-        * Create a new poll group
-        */
-       struct spdk_nvmf_transport_poll_group *(*poll_group_create)(struct spdk_nvmf_transport *transport);
-
-       /**
-        * Destroy a poll group
-        */
-       void (*poll_group_destroy)(struct spdk_nvmf_transport_poll_group *group);
-
-       /**
-        * Add a qpair to a poll group
-        */
-       int (*poll_group_add)(struct spdk_nvmf_transport_poll_group *group,
-                             struct spdk_nvmf_qpair *qpair);
-
-       /**
-        * Remove a qpair from a poll group
-        */
-       int (*poll_group_remove)(struct spdk_nvmf_transport_poll_group *group,
-                                struct spdk_nvmf_qpair *qpair);
-
-       /**
-        * Poll the group to process I/O
-        */
-       int (*poll_group_poll)(struct spdk_nvmf_transport_poll_group *group);
-
-       /*
-        * Free the request without sending a response
-        * to the originator. Release memory tied to this request.
-        */
-       int (*req_free)(struct spdk_nvmf_request *req);
-
-       /*
-        * Signal request completion, which sends a response
-        * to the originator.
-        */
-       int (*req_complete)(struct spdk_nvmf_request *req);
-
-       /*
-        * Deinitialize a connection.
-        */
-       void (*qpair_fini)(struct spdk_nvmf_qpair *qpair);
-
-       /*
-        * Get the peer transport ID for the queue pair.
-        */
-       int (*qpair_get_peer_trid)(struct spdk_nvmf_qpair *qpair,
-                                  struct spdk_nvme_transport_id *trid);
-
-       /*
-        * Get the local transport ID for the queue pair.
-        */
-       int (*qpair_get_local_trid)(struct spdk_nvmf_qpair *qpair,
-                                   struct spdk_nvme_transport_id *trid);
-
-       /*
-        * Get the listener transport ID that accepted this qpair originally.
-        */
-       int (*qpair_get_listen_trid)(struct spdk_nvmf_qpair *qpair,
-                                    struct spdk_nvme_transport_id *trid);
-
-       /*
-        * set the submission queue size of the queue pair
-        */
-       int (*qpair_set_sqsize)(struct spdk_nvmf_qpair *qpair);
-};
-
-
-int spdk_nvmf_transport_stop_listen(struct spdk_nvmf_transport *transport,
-                                   const struct spdk_nvme_transport_id *trid);
-
-void spdk_nvmf_transport_accept(struct spdk_nvmf_transport *transport, new_qpair_fn cb_fn);
-
-void spdk_nvmf_transport_listener_discover(struct spdk_nvmf_transport *transport,
-               struct spdk_nvme_transport_id *trid,
-               struct spdk_nvmf_discovery_log_page_entry *entry);
-
-struct spdk_nvmf_transport_poll_group *spdk_nvmf_transport_poll_group_create(
+uint32_t nvmf_transport_accept(struct spdk_nvmf_transport *transport);
+
+void nvmf_transport_listener_discover(struct spdk_nvmf_transport *transport,
+                                     struct spdk_nvme_transport_id *trid,
+                                     struct spdk_nvmf_discovery_log_page_entry *entry);
+
+struct spdk_nvmf_transport_poll_group *nvmf_transport_poll_group_create(
        struct spdk_nvmf_transport *transport);
+struct spdk_nvmf_transport_poll_group *nvmf_transport_get_optimal_poll_group(
+       struct spdk_nvmf_transport *transport, struct spdk_nvmf_qpair *qpair);
 
-void spdk_nvmf_transport_poll_group_destroy(struct spdk_nvmf_transport_poll_group *group);
+void nvmf_transport_poll_group_destroy(struct spdk_nvmf_transport_poll_group *group);
 
-int spdk_nvmf_transport_poll_group_add(struct spdk_nvmf_transport_poll_group *group,
-                                      struct spdk_nvmf_qpair *qpair);
+int nvmf_transport_poll_group_add(struct spdk_nvmf_transport_poll_group *group,
+                                 struct spdk_nvmf_qpair *qpair);
 
-int spdk_nvmf_transport_poll_group_remove(struct spdk_nvmf_transport_poll_group *group,
-               struct spdk_nvmf_qpair *qpair);
+int nvmf_transport_poll_group_remove(struct spdk_nvmf_transport_poll_group *group,
+                                    struct spdk_nvmf_qpair *qpair);
 
-int spdk_nvmf_transport_poll_group_poll(struct spdk_nvmf_transport_poll_group *group);
+int nvmf_transport_poll_group_poll(struct spdk_nvmf_transport_poll_group *group);
 
-int spdk_nvmf_transport_req_free(struct spdk_nvmf_request *req);
+int nvmf_transport_req_free(struct spdk_nvmf_request *req);
 
-int spdk_nvmf_transport_req_complete(struct spdk_nvmf_request *req);
+int nvmf_transport_req_complete(struct spdk_nvmf_request *req);
 
-void spdk_nvmf_transport_qpair_fini(struct spdk_nvmf_qpair *qpair);
+void nvmf_transport_qpair_fini(struct spdk_nvmf_qpair *qpair);
 
-int spdk_nvmf_transport_qpair_get_peer_trid(struct spdk_nvmf_qpair *qpair,
-               struct spdk_nvme_transport_id *trid);
+int nvmf_transport_qpair_get_peer_trid(struct spdk_nvmf_qpair *qpair,
+                                      struct spdk_nvme_transport_id *trid);
 
-int spdk_nvmf_transport_qpair_get_local_trid(struct spdk_nvmf_qpair *qpair,
-               struct spdk_nvme_transport_id *trid);
+int nvmf_transport_qpair_get_local_trid(struct spdk_nvmf_qpair *qpair,
+                                       struct spdk_nvme_transport_id *trid);
 
-int spdk_nvmf_transport_qpair_get_listen_trid(struct spdk_nvmf_qpair *qpair,
+int nvmf_transport_qpair_get_listen_trid(struct spdk_nvmf_qpair *qpair,
                struct spdk_nvme_transport_id *trid);
-int spdk_nvmf_transport_qpair_set_sqsize(struct spdk_nvmf_qpair *qpair);
-
-bool spdk_nvmf_transport_opts_init(enum spdk_nvme_transport_type type,
-                                  struct spdk_nvmf_transport_opts *opts);
 
-extern const struct spdk_nvmf_transport_ops spdk_nvmf_transport_rdma;
-extern const struct spdk_nvmf_transport_ops spdk_nvmf_transport_tcp;
+void nvmf_transport_qpair_abort_request(struct spdk_nvmf_qpair *qpair,
+                                       struct spdk_nvmf_request *req);
 
 #endif /* SPDK_NVMF_TRANSPORT_H */