Lines Matching refs:dsp
69 disk_status_t *dsp; in disk_status_open() local
73 if ((dsp = calloc(sizeof (disk_status_t), 1)) == NULL) { in disk_status_open()
78 if ((dsp->ds_fd = open(path, O_RDWR)) < 0) { in disk_status_open()
80 free(dsp); in disk_status_open()
84 if ((dsp->ds_path = strdup(path)) == NULL) { in disk_status_open()
86 disk_status_close(dsp); in disk_status_open()
93 dsp->ds_transport = t; in disk_status_open()
95 nvlist_free(dsp->ds_state); in disk_status_open()
96 dsp->ds_state = NULL; in disk_status_open()
97 if (nvlist_alloc(&dsp->ds_state, NV_UNIQUE_NAME, 0) != 0) { in disk_status_open()
99 disk_status_close(dsp); in disk_status_open()
103 if ((dsp->ds_data = t->dt_open(dsp)) == NULL) { in disk_status_open()
104 if (dsp->ds_error != EDS_NO_TRANSPORT) { in disk_status_open()
105 *error = dsp->ds_error; in disk_status_open()
106 disk_status_close(dsp); in disk_status_open()
110 dsp->ds_error = 0; in disk_status_open()
115 if (dsp->ds_error == EDS_NO_TRANSPORT) { in disk_status_open()
116 *error = dsp->ds_error; in disk_status_open()
117 disk_status_close(dsp); in disk_status_open()
121 return (dsp); in disk_status_open()
128 disk_status_close(disk_status_t *dsp) in disk_status_close() argument
130 nvlist_free(dsp->ds_state); in disk_status_close()
131 nvlist_free(dsp->ds_predfail); in disk_status_close()
132 nvlist_free(dsp->ds_overtemp); in disk_status_close()
133 nvlist_free(dsp->ds_testfail); in disk_status_close()
134 if (dsp->ds_data) in disk_status_close()
135 dsp->ds_transport->dt_close(dsp->ds_data); in disk_status_close()
136 (void) close(dsp->ds_fd); in disk_status_close()
137 free(dsp->ds_path); in disk_status_close()
138 free(dsp); in disk_status_close()
151 disk_status_path(disk_status_t *dsp) in disk_status_path() argument
153 return (dsp->ds_path); in disk_status_path()
157 disk_status_errno(disk_status_t *dsp) in disk_status_errno() argument
159 return (dsp->ds_error); in disk_status_errno()
163 disk_status_get(disk_status_t *dsp) in disk_status_get() argument
172 nvlist_free(dsp->ds_testfail); in disk_status_get()
173 nvlist_free(dsp->ds_predfail); in disk_status_get()
174 nvlist_free(dsp->ds_overtemp); in disk_status_get()
175 dsp->ds_testfail = dsp->ds_overtemp = dsp->ds_predfail = NULL; in disk_status_get()
176 dsp->ds_faults = 0; in disk_status_get()
182 if (dsp->ds_transport->dt_scan(dsp->ds_data) != 0 && in disk_status_get()
183 dsp->ds_error != EDS_IO) in disk_status_get()
190 (err = nvlist_add_nvlist(nvl, "status", dsp->ds_state)) != 0) in disk_status_get()
199 if (dsp->ds_predfail != NULL) { in disk_status_get()
202 (dsp->ds_faults & DS_FAULT_PREDFAIL) != 0)) != 0 || in disk_status_get()
204 dsp->ds_predfail)) != 0) in disk_status_get()
208 if (dsp->ds_testfail != NULL) { in disk_status_get()
211 (dsp->ds_faults & DS_FAULT_TESTFAIL) != 0)) != 0 || in disk_status_get()
213 dsp->ds_testfail)) != 0) in disk_status_get()
217 if (dsp->ds_overtemp != NULL) { in disk_status_get()
220 (dsp->ds_faults & DS_FAULT_OVERTEMP) != 0)) != 0 || in disk_status_get()
222 dsp->ds_overtemp)) != 0) in disk_status_get()
236 (void) ds_set_errno(dsp, EDS_NOMEM); in disk_status_get()