-
-int dm_check_segment(const char *name, uint64_t offset, uint64_t size)
-{
- struct crypt_dm_active_device dmd;
- int r;
-
- log_dbg("Checking segments for device %s.", name);
-
- r = dm_query_device(name, 0, &dmd);
- if (r < 0)
- return r;
-
- if (offset >= (dmd.u.crypt.offset + dmd.size) ||
- (offset + size) <= dmd.u.crypt.offset)
- r = 0;
- else
- r = -EBUSY;
-
- log_dbg("seg: %" PRIu64 " - %" PRIu64 ", new %" PRIu64 " - %" PRIu64 "%s",
- dmd.u.crypt.offset, dmd.u.crypt.offset + dmd.size, offset, offset + size,
- r ? " (overlapping)" : " (ok)");
-
- return r;
-}