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 ;
@@ -574,21 +511,6 @@ struct nvme_ns {
574511 }
575512}
576513
577- %extend host_iter {
578- struct host_iter *__iter__ () {
579- return $self;
580- }
581- struct nvme_host *__next__ () {
582- struct nvme_host *this = $self->pos ;
583-
584- if (!this ) {
585- host_iter_err = 1 ;
586- return NULL ;
587- }
588- $self->pos = nvme_next_host ($self->root , this );
589- return this ;
590- }
591- }
592514
593515%define SET_SYMNAME_DOCSTRING
594516" @brief Set or Clear Host's Symbolic Name
@@ -629,13 +551,6 @@ struct nvme_ns {
629551 PyObject* __str__ () {
630552 return PyUnicode_FromFormat (" nvme.host(%s,%s)" , STR_OR_NONE ($self->hostnqn ), STR_OR_NONE ($self->hostid ));
631553 }
632- struct host_iter __iter__ () {
633- struct host_iter ret = {
634- .root = nvme_host_get_root ($self),
635- .pos = $self
636- };
637- return ret;
638- }
639554 %pythoncode %{
640555 def subsystems (self):
641556 " " " Iterator over all subsystem objects" " "
@@ -655,41 +570,6 @@ struct nvme_ns {
655570 }
656571%};
657572
658- %extend subsystem_iter {
659- struct subsystem_iter *__iter__ () {
660- return $self;
661- }
662- struct nvme_subsystem *__next__ () {
663- struct nvme_subsystem *this = $self->pos ;
664-
665- if (!this ) {
666- subsys_iter_err = 1 ;
667- return NULL ;
668- }
669- $self->pos = nvme_next_subsystem ($self->host , this );
670- return this ;
671- }
672- }
673-
674- %extend ns_iter {
675- struct ns_iter *__iter__ () {
676- return $self;
677- }
678- struct nvme_ns *__next__ () {
679- struct nvme_ns *this = $self->pos ;
680-
681- if (!this ) {
682- ns_iter_err = 1 ;
683- return NULL ;
684- }
685- if ($self->ctrl )
686- $self->pos = nvme_ctrl_next_ns ($self->ctrl , this );
687- else
688- $self->pos = nvme_subsystem_next_ns ($self->subsystem , this );
689- return this ;
690- }
691- }
692-
693573%pythonappend nvme_subsystem::nvme_subsystem (struct nvme_host *host,
694574 const char *subsysnqn,
695575 const char *name) {
@@ -706,13 +586,6 @@ struct nvme_ns {
706586 PyObject *__str__ () {
707587 return PyUnicode_FromFormat (" nvme.subsystem(%s,%s)" , STR_OR_NONE ($self->name ), STR_OR_NONE ($self->subsysnqn ));
708588 }
709- struct subsystem_iter __iter__ () {
710- struct subsystem_iter ret = {
711- .host = nvme_subsystem_get_host ($self),
712- .pos = $self
713- };
714- return ret;
715- }
716589 %pythoncode %{
717590 def controllers (self):
718591 " " " Iterator over all controller objects" " "
@@ -756,22 +629,6 @@ struct nvme_ns {
756629 }
757630%};
758631
759- %extend ctrl_iter {
760- struct ctrl_iter *__iter__ () {
761- return $self;
762- }
763- struct nvme_ctrl *__next__ () {
764- struct nvme_ctrl *this = $self->pos ;
765-
766- if (!this ) {
767- ctrl_iter_err = 1 ;
768- return NULL ;
769- }
770- $self->pos = nvme_subsystem_next_ctrl ($self->subsystem , this );
771- return this ;
772- }
773- }
774-
775632%pythonappend nvme_ctrl::connect (struct nvme_host *h,
776633 struct nvme_fabrics_config *cfg) {
777634 self.__host = h # Keep a reference to parent to ensure ctrl obj gets GCed before host}
@@ -922,13 +779,7 @@ struct nvme_ns {
922779 PyUnicode_FromFormat (" nvme_ctrl(transport=%s,%s)" , STR_OR_NONE ($self->transport ), STR_OR_NONE ($self->address )) :
923780 PyUnicode_FromFormat (" nvme_ctrl(transport=%s)" , STR_OR_NONE ($self->transport ));
924781 }
925- struct ctrl_iter __iter__ () {
926- struct ctrl_iter ret = {
927- .subsystem = nvme_ctrl_get_subsystem ($self),
928- .pos = $self
929- };
930- return ret;
931- }
782+
932783 %pythoncode %{
933784 def namespaces (self):
934785 " " " Iterator over all namespace objects" " "
@@ -1088,12 +939,6 @@ struct nvme_ns {
1088939 PyObject *__str__ () {
1089940 return PyUnicode_FromFormat (" nvme.ns(%u)" , $self->nsid );
1090941 }
1091- struct ns_iter __iter__ () {
1092- struct ns_iter ret = { .ctrl = nvme_ns_get_ctrl ($self),
1093- .subsystem = nvme_ns_get_subsystem ($self),
1094- .pos = $self };
1095- return ret;
1096- }
1097942 %immutable name;
1098943 const char *name;
1099944}
0 commit comments