|
@@ -23,10 +23,18 @@ static inline bool drbd_interval_empty(struct drbd_interval *i)
|
|
|
return RB_EMPTY_NODE(&i->rb);
|
|
|
}
|
|
|
|
|
|
-bool drbd_insert_interval(struct rb_root *, struct drbd_interval *);
|
|
|
-bool drbd_contains_interval(struct rb_root *, sector_t, struct drbd_interval *);
|
|
|
-void drbd_remove_interval(struct rb_root *, struct drbd_interval *);
|
|
|
-struct drbd_interval *drbd_find_overlap(struct rb_root *, sector_t,
|
|
|
+extern bool drbd_insert_interval(struct rb_root *, struct drbd_interval *);
|
|
|
+extern bool drbd_contains_interval(struct rb_root *, sector_t,
|
|
|
+ struct drbd_interval *);
|
|
|
+extern void drbd_remove_interval(struct rb_root *, struct drbd_interval *);
|
|
|
+extern struct drbd_interval *drbd_find_overlap(struct rb_root *, sector_t,
|
|
|
unsigned int);
|
|
|
+extern struct drbd_interval *drbd_next_overlap(struct drbd_interval *, sector_t,
|
|
|
+ unsigned int);
|
|
|
+
|
|
|
+#define drbd_for_each_overlap(i, root, sector, size) \
|
|
|
+ for (i = drbd_find_overlap(root, sector, size); \
|
|
|
+ i; \
|
|
|
+ i = drbd_next_overlap(i, sector, size))
|
|
|
|
|
|
#endif /* __DRBD_INTERVAL_H */
|