MCPcopy Create free account
hub / github.com/axboe/liburing / main

Function main

test/cmd-discard.c:351–435  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

349}
350
351int main(int argc, char *argv[])
352{
353 struct io_uring ring;
354 int fd, ret, i, fret;
355 int cmd_op;
356
357 if (argc != 2)
358 return T_EXIT_SKIP;
359 filename = argv[1];
360
361 fd = open(filename, O_DIRECT | O_RDONLY | O_EXCL);
362 if (fd < 0) {
363 if (errno == EINVAL || errno == EBUSY)
364 return T_EXIT_SKIP;
365 fprintf(stderr, "open failed %i\n", errno);
366 return T_EXIT_FAIL;
367 }
368
369 ret = ioctl(fd, BLKGETSIZE64, &bdev_size);
370 if (ret < 0) {
371 fprintf(stderr, "BLKGETSIZE64 failed %i\n", errno);
372 return T_EXIT_FAIL;
373 }
374 ret = ioctl(fd, BLKSSZGET, &lba_size);
375 if (ret < 0) {
376 fprintf(stderr, "BLKSSZGET failed %i\n", errno);
377 return T_EXIT_FAIL;
378 }
379 assert(bdev_size % lba_size == 0);
380 bdev_size_lbas = bdev_size / lba_size;
381 close(fd);
382
383 buffer = t_aligned_alloc(lba_size, lba_size);
384 if (!buffer) {
385 fprintf(stderr, "t_aligned_alloc failed\n");
386 return T_EXIT_FAIL;
387 }
388 for (i = 0; i < lba_size; i++)
389 buffer[i] = i ^ 0xA7;
390
391 if (bdev_size_lbas < MAX_TEST_LBAS) {
392 fprintf(stderr, "the device is too small, skip\n");
393 return T_EXIT_SKIP;
394 }
395
396 ret = io_uring_queue_init(16, &ring, 0);
397 if (ret) {
398 fprintf(stderr, "queue init failed: %d\n", ret);
399 return T_EXIT_FAIL;
400 }
401
402 fret = T_EXIT_SKIP;
403 for (cmd_op = 0; cmd_op < TEST_BLOCK_URING_CMD_MAX; cmd_op++) {
404 if (!opcodes[cmd_op].test)
405 continue;
406 ret = basic_cmd_test(&ring, cmd_op);
407 if (ret == T_EXIT_FAIL) {
408 fprintf(stderr, "basic_cmd_test() failed, cmd %i\n",

Callers

nothing calls this directly

Calls 6

io_uring_queue_initFunction · 0.85
basic_cmd_testFunction · 0.85
test_rdonlyFunction · 0.85
test_fail_edge_casesFunction · 0.85
io_uring_queue_exitFunction · 0.85
t_aligned_allocFunction · 0.70

Tested by

no test coverage detected