| 76 | } |
| 77 | |
| 78 | ssize_t rdev_readat(const struct region_device *rd, void *b, size_t offset, |
| 79 | size_t size) |
| 80 | { |
| 81 | const struct region_device *rdev; |
| 82 | struct region req = { |
| 83 | .offset = offset, |
| 84 | .size = size, |
| 85 | }; |
| 86 | |
| 87 | if (!normalize_and_ok(&rd->region, &req)) |
| 88 | return -1; |
| 89 | |
| 90 | rdev = rdev_root(rd); |
| 91 | |
| 92 | return rdev->ops->readat(rdev, b, req.offset, req.size); |
| 93 | } |
| 94 | |
| 95 | ssize_t rdev_writeat(const struct region_device *rd, const void *b, |
| 96 | size_t offset, size_t size) |