Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) #ifndef __DRBD_INTERVAL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #define __DRBD_INTERVAL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) #include <linux/rbtree.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) struct drbd_interval {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) 	struct rb_node rb;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 	sector_t sector;		/* start sector of the interval */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 	unsigned int size;		/* size in bytes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 	sector_t end;			/* highest interval end in subtree */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 	unsigned int local:1		/* local or remote request? */;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 	unsigned int waiting:1;		/* someone is waiting for completion */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 	unsigned int completed:1;	/* this has been completed already;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 					 * ignore for conflict detection */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) static inline void drbd_clear_interval(struct drbd_interval *i)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 	RB_CLEAR_NODE(&i->rb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) static inline bool drbd_interval_empty(struct drbd_interval *i)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 	return RB_EMPTY_NODE(&i->rb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) extern bool drbd_insert_interval(struct rb_root *, struct drbd_interval *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) extern bool drbd_contains_interval(struct rb_root *, sector_t,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 				   struct drbd_interval *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) extern void drbd_remove_interval(struct rb_root *, struct drbd_interval *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) extern struct drbd_interval *drbd_find_overlap(struct rb_root *, sector_t,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 					unsigned int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) extern struct drbd_interval *drbd_next_overlap(struct drbd_interval *, sector_t,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 					unsigned int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define drbd_for_each_overlap(i, root, sector, size)		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	for (i = drbd_find_overlap(root, sector, size);		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	     i;							\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	     i = drbd_next_overlap(i, sector, size))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #endif  /* __DRBD_INTERVAL_H */