+ bytes = root->fs_info->nodesize;
+ cur_logical = logical;
+ cur_len = bytes;
+
+ /* First find the nearest extent */
+ ret = map_one_extent(root->fs_info, &cur_logical, &cur_len, 0);
+ if (ret < 0) {
+ fprintf(stderr, "Failed to find extent at [%llu,%llu): %s\n",
+ cur_logical, cur_logical + cur_len, strerror(-ret));
+ goto out_close_fd;
+ }
+ /*
+ * Normally, search backward should be OK, but for special case like
+ * given logical is quite small where no extents are before it,
+ * we need to search forward.
+ */
+ if (ret > 0) {
+ ret = map_one_extent(root->fs_info, &cur_logical, &cur_len, 1);
+ if (ret < 0) {
+ fprintf(stderr,
+ "Failed to find extent at [%llu,%llu): %s\n",
+ cur_logical, cur_logical + cur_len,
+ strerror(-ret));
+ goto out_close_fd;
+ }
+ if (ret > 0) {
+ fprintf(stderr,
+ "Failed to find any extent at [%llu,%llu)\n",
+ cur_logical, cur_logical + cur_len);
+ goto out_close_fd;
+ }
+ }