| 1215 | } |
| 1216 | |
| 1217 | int main(int argc, char *argv[]) |
| 1218 | { |
| 1219 | const int nr_loop = 4; |
| 1220 | struct ublk_dev *dev; |
| 1221 | __u64 features; |
| 1222 | int ret, i; |
| 1223 | |
| 1224 | if (argc > 1) |
| 1225 | return T_EXIT_SKIP; |
| 1226 | |
| 1227 | dev = ublk_ctrl_init(); |
| 1228 | /* ublk isn't supported or the module isn't loaded */ |
| 1229 | if (!dev) |
| 1230 | return T_EXIT_SKIP; |
| 1231 | |
| 1232 | /* kernel doesn't support get_features */ |
| 1233 | ret = ublk_ctrl_get_features(dev, &features); |
| 1234 | if (ret < 0) |
| 1235 | return T_EXIT_SKIP; |
| 1236 | |
| 1237 | if (!(features & UBLK_F_CMD_IOCTL_ENCODE)) |
| 1238 | return T_EXIT_SKIP; |
| 1239 | |
| 1240 | for (i = 0; i < nr_loop; i++) { |
| 1241 | if (test_del_ublk_with_io()) |
| 1242 | return T_EXIT_FAIL; |
| 1243 | } |
| 1244 | ublk_ctrl_deinit(dev); |
| 1245 | return T_EXIT_PASS; |
| 1246 | } |
| 1247 | #else |
| 1248 | int main(int argc, char *argv[]) |
| 1249 | { |
nothing calls this directly
no test coverage detected