]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/md/dm-bio-list.h
Staging: rt2860: remove kernel version compatibility wrappers
[linux-2.6-omap-h63xx.git] / drivers / md / dm-bio-list.h
index bbf4615f0e30d792990208325fa9fa48580ce879..345098b4ca77ac77400c00e7598f2398bec04a06 100644 (file)
@@ -9,16 +9,37 @@
 
 #include <linux/bio.h>
 
+#ifdef CONFIG_BLOCK
+
 struct bio_list {
        struct bio *head;
        struct bio *tail;
 };
 
+static inline int bio_list_empty(const struct bio_list *bl)
+{
+       return bl->head == NULL;
+}
+
 static inline void bio_list_init(struct bio_list *bl)
 {
        bl->head = bl->tail = NULL;
 }
 
+#define bio_list_for_each(bio, bl) \
+       for (bio = (bl)->head; bio; bio = bio->bi_next)
+
+static inline unsigned bio_list_size(const struct bio_list *bl)
+{
+       unsigned sz = 0;
+       struct bio *bio;
+
+       bio_list_for_each(bio, bl)
+               sz++;
+
+       return sz;
+}
+
 static inline void bio_list_add(struct bio_list *bl, struct bio *bio)
 {
        bio->bi_next = NULL;
@@ -31,6 +52,16 @@ static inline void bio_list_add(struct bio_list *bl, struct bio *bio)
        bl->tail = bio;
 }
 
+static inline void bio_list_add_head(struct bio_list *bl, struct bio *bio)
+{
+       bio->bi_next = bl->head;
+
+       bl->head = bio;
+
+       if (!bl->tail)
+               bl->tail = bio;
+}
+
 static inline void bio_list_merge(struct bio_list *bl, struct bio_list *bl2)
 {
        if (!bl2->head)
@@ -44,6 +75,20 @@ static inline void bio_list_merge(struct bio_list *bl, struct bio_list *bl2)
        bl->tail = bl2->tail;
 }
 
+static inline void bio_list_merge_head(struct bio_list *bl,
+                                      struct bio_list *bl2)
+{
+       if (!bl2->head)
+               return;
+
+       if (bl->head)
+               bl2->tail->bi_next = bl->head;
+       else
+               bl->tail = bl2->tail;
+
+       bl->head = bl2->head;
+}
+
 static inline struct bio *bio_list_pop(struct bio_list *bl)
 {
        struct bio *bio = bl->head;
@@ -68,4 +113,5 @@ static inline struct bio *bio_list_get(struct bio_list *bl)
        return bio;
 }
 
+#endif /* CONFIG_BLOCK */
 #endif