3030 #include " nvme/types.h"
3131 #include " nvme/nbft.h"
3232
33- static int host_iter_err = 0 ;
34- static int subsys_iter_err = 0 ;
35- static int ctrl_iter_err = 0 ;
36- static int ns_iter_err = 0 ;
3733 static int connect_err = 0 ;
3834 static int discover_err = 0 ;
3935
5753PyObject *hostnqn_from_file ();
5854PyObject *hostid_from_file ();
5955
60- %inline %{
61- struct host_iter {
62- struct nvme_root *root;
63- struct nvme_host *pos;
64- };
65-
66- struct subsystem_iter {
67- struct nvme_host *host;
68- struct nvme_subsystem *pos;
69- };
70-
71- struct ctrl_iter {
72- struct nvme_subsystem *subsystem;
73- struct nvme_ctrl *pos;
74- };
75-
76- struct ns_iter {
77- struct nvme_subsystem *subsystem;
78- struct nvme_ctrl *ctrl;
79- struct nvme_ns *pos;
80- };
81- %}
82-
83- %exception host_iter::__next__ {
84- host_iter_err = 0 ;
85- $action /* $action sets host_iter_err to non-zero value on failure */
86- if (host_iter_err) {
87- PyErr_SetString (PyExc_StopIteration, " End of list" );
88- return NULL ;
89- }
90- }
91-
92- %exception subsystem_iter::__next__ {
93- subsys_iter_err = 0 ;
94- $action /* $action sets subsys_iter_err to non-zero value on failure */
95- if (subsys_iter_err) {
96- PyErr_SetString (PyExc_StopIteration, " End of list" );
97- return NULL ;
98- }
99- }
100-
101- %exception ctrl_iter::__next__ {
102- ctrl_iter_err = 0 ;
103- $action /* $action sets ctrl_iter_err to non-zero value on failure */
104- if (ctrl_iter_err) {
105- PyErr_SetString (PyExc_StopIteration, " End of list" );
106- return NULL ;
107- }
108- }
109-
110- %exception ns_iter::__next__ {
111- ns_iter_err = 0 ;
112- $action /* $action sets ns_iter_err to non-zero value on failure */
113- if (ns_iter_err) {
114- PyErr_SetString (PyExc_StopIteration, " End of list" );
115- return NULL ;
116- }
117- }
118-
11956%exception nvme_ctrl::connect {
12057 connect_err = 0 ;
12158 errno = 0 ;
@@ -590,21 +527,6 @@ struct nvme_ns {
590527 }
591528}
592529
593- %extend host_iter {
594- struct host_iter *__iter__ () {
595- return $self;
596- }
597- struct nvme_host *__next__ () {
598- struct nvme_host *this = $self->pos ;
599-
600- if (!this ) {
601- host_iter_err = 1 ;
602- return NULL ;
603- }
604- $self->pos = nvme_next_host ($self->root , this );
605- return this ;
606- }
607- }
608530
609531%define SET_SYMNAME_DOCSTRING
610532" @brief Set or Clear Host's Symbolic Name
@@ -645,13 +567,6 @@ struct nvme_ns {
645567 PyObject* __str__ () {
646568 return PyUnicode_FromFormat (" nvme.host(%s,%s)" , STR_OR_NONE ($self->hostnqn ), STR_OR_NONE ($self->hostid ));
647569 }
648- struct host_iter __iter__ () {
649- struct host_iter ret = {
650- .root = nvme_host_get_root ($self),
651- .pos = $self
652- };
653- return ret;
654- }
655570 %pythoncode %{
656571 def subsystems (self):
657572 " " " Iterator over all subsystem objects" " "
@@ -671,41 +586,6 @@ struct nvme_ns {
671586 }
672587%};
673588
674- %extend subsystem_iter {
675- struct subsystem_iter *__iter__ () {
676- return $self;
677- }
678- struct nvme_subsystem *__next__ () {
679- struct nvme_subsystem *this = $self->pos ;
680-
681- if (!this ) {
682- subsys_iter_err = 1 ;
683- return NULL ;
684- }
685- $self->pos = nvme_next_subsystem ($self->host , this );
686- return this ;
687- }
688- }
689-
690- %extend ns_iter {
691- struct ns_iter *__iter__ () {
692- return $self;
693- }
694- struct nvme_ns *__next__ () {
695- struct nvme_ns *this = $self->pos ;
696-
697- if (!this ) {
698- ns_iter_err = 1 ;
699- return NULL ;
700- }
701- if ($self->ctrl )
702- $self->pos = nvme_ctrl_next_ns ($self->ctrl , this );
703- else
704- $self->pos = nvme_subsystem_next_ns ($self->subsystem , this );
705- return this ;
706- }
707- }
708-
709589%pythonappend nvme_subsystem::nvme_subsystem (struct nvme_host *host,
710590 const char *subsysnqn,
711591 const char *name) {
@@ -722,13 +602,6 @@ struct nvme_ns {
722602 PyObject *__str__ () {
723603 return PyUnicode_FromFormat (" nvme.subsystem(%s,%s)" , STR_OR_NONE ($self->name ), STR_OR_NONE ($self->subsysnqn ));
724604 }
725- struct subsystem_iter __iter__ () {
726- struct subsystem_iter ret = {
727- .host = nvme_subsystem_get_host ($self),
728- .pos = $self
729- };
730- return ret;
731- }
732605 %pythoncode %{
733606 def controllers (self):
734607 " " " Iterator over all controller objects" " "
@@ -772,22 +645,6 @@ struct nvme_ns {
772645 }
773646%};
774647
775- %extend ctrl_iter {
776- struct ctrl_iter *__iter__ () {
777- return $self;
778- }
779- struct nvme_ctrl *__next__ () {
780- struct nvme_ctrl *this = $self->pos ;
781-
782- if (!this ) {
783- ctrl_iter_err = 1 ;
784- return NULL ;
785- }
786- $self->pos = nvme_subsystem_next_ctrl ($self->subsystem , this );
787- return this ;
788- }
789- }
790-
791648%pythonappend nvme_ctrl::connect (struct nvme_host *h,
792649 struct nvme_fabrics_config *cfg) {
793650 self.__host = h # Keep a reference to parent to ensure ctrl obj gets GCed before host}
@@ -948,13 +805,7 @@ struct nvme_ns {
948805 PyUnicode_FromFormat (" nvme_ctrl(transport=%s,%s)" , STR_OR_NONE ($self->transport ), STR_OR_NONE ($self->address )) :
949806 PyUnicode_FromFormat (" nvme_ctrl(transport=%s)" , STR_OR_NONE ($self->transport ));
950807 }
951- struct ctrl_iter __iter__ () {
952- struct ctrl_iter ret = {
953- .subsystem = nvme_ctrl_get_subsystem ($self),
954- .pos = $self
955- };
956- return ret;
957- }
808+
958809 %pythoncode %{
959810 def namespaces (self):
960811 " " " Iterator over all namespace objects" " "
@@ -1114,12 +965,6 @@ struct nvme_ns {
1114965 PyObject *__str__ () {
1115966 return PyUnicode_FromFormat (" nvme.ns(%u)" , $self->nsid );
1116967 }
1117- struct ns_iter __iter__ () {
1118- struct ns_iter ret = { .ctrl = nvme_ns_get_ctrl ($self),
1119- .subsystem = nvme_ns_get_subsystem ($self),
1120- .pos = $self };
1121- return ret;
1122- }
1123968 %immutable name;
1124969 const char *name;
1125970}
0 commit comments