btrfs-progs: make libbtrfs usable from C++
authorArvin Schnell <aschnell@suse.de>
Wed, 30 Jan 2013 22:50:26 +0000 (14:50 -0800)
committerDavid Sterba <dsterba@suse.cz>
Tue, 19 Feb 2013 10:15:30 +0000 (11:15 +0100)
Please find attached a patch to make the new libbtrfs usable from
C++ (at least for the parts snapper will likely need).

Signed-off-by: Arvin Schnell <aschnell@suse.de>
Signed-off-by: Mark Fasheh <mfasheh@suse.de>
extent_io.c
extent_io.h
ioctl.h
list.h
rbtree.h
send-stream.h
send-utils.h
send.h

index 987452e19c98e5128e16b3c743d947ff8410403f..78deb5027458b5a8fdd4f97e751422aa3dc916c6 100644 (file)
@@ -48,7 +48,7 @@ static struct extent_state *alloc_extent_state(void)
                return NULL;
        state->refs = 1;
        state->state = 0;
-       state->private = 0;
+       state->xprivate = 0;
        return state;
 }
 
@@ -511,7 +511,7 @@ int set_state_private(struct extent_io_tree *tree, u64 start, u64 private)
                ret = -ENOENT;
                goto out;
        }
-       state->private = private;
+       state->xprivate = private;
 out:
        return ret;
 }
@@ -532,7 +532,7 @@ int get_state_private(struct extent_io_tree *tree, u64 start, u64 *private)
                ret = -ENOENT;
                goto out;
        }
-       *private = state->private;
+       *private = state->xprivate;
 out:
        return ret;
 }
index 5df44f7de588853c27664499aadd1335dea60565..63e900424b07e6a1da40022d25434d2ecd4768f0 100644 (file)
@@ -47,7 +47,7 @@ struct extent_state {
        u64 end;
        int refs;
        unsigned long state;
-       u64 private;
+       u64 xprivate;
 };
 
 struct extent_buffer {
@@ -86,8 +86,8 @@ int extent_buffer_uptodate(struct extent_buffer *eb);
 int set_extent_buffer_uptodate(struct extent_buffer *eb);
 int clear_extent_buffer_uptodate(struct extent_io_tree *tree,
                                struct extent_buffer *eb);
-int set_state_private(struct extent_io_tree *tree, u64 start, u64 private);
-int get_state_private(struct extent_io_tree *tree, u64 start, u64 *private);
+int set_state_private(struct extent_io_tree *tree, u64 start, u64 xprivate);
+int get_state_private(struct extent_io_tree *tree, u64 start, u64 *xprivate);
 struct extent_buffer *find_extent_buffer(struct extent_io_tree *tree,
                                         u64 bytenr, u32 blocksize);
 struct extent_buffer *find_first_extent_buffer(struct extent_io_tree *tree,
diff --git a/ioctl.h b/ioctl.h
index 8c32a2a24ab174ca317b759afaaaa763d6c1e8f5..3e7e451d5c976784c6fc6cccb9c1130c538c2f4e 100644 (file)
--- a/ioctl.h
+++ b/ioctl.h
 #include <linux/ioctl.h>
 #include <time.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #define BTRFS_IOCTL_MAGIC 0x94
 #define BTRFS_VOL_NAME_MAX 255
 
@@ -521,4 +525,8 @@ struct btrfs_ioctl_clone_range_args {
 #define BTRFS_IOC_DEV_REPLACE _IOWR(BTRFS_IOCTL_MAGIC, 53, \
                                    struct btrfs_ioctl_dev_replace_args)
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
diff --git a/list.h b/list.h
index d31090c1d0fc06579bdcebbc048192ed5d7bc21c..50f46193eb4d4b93f4edd26f63e8188715dbc5f2 100644 (file)
--- a/list.h
+++ b/list.h
@@ -19,8 +19,8 @@
 #ifndef _LINUX_LIST_H
 #define _LINUX_LIST_H
 
-#define LIST_POISON1  ((void *) 0x00100100)
-#define LIST_POISON2  ((void *) 0x00200200)
+#define LIST_POISON1  ((struct list_head *) 0x00100100)
+#define LIST_POISON2  ((struct list_head *) 0x00200200)
 
 /*
  * Simple doubly linked list implementation.
@@ -54,17 +54,17 @@ static inline void INIT_LIST_HEAD(struct list_head *list)
  * the prev/next entries already!
  */
 #ifndef CONFIG_DEBUG_LIST
-static inline void __list_add(struct list_head *new,
+static inline void __list_add(struct list_head *xnew,
                              struct list_head *prev,
                              struct list_head *next)
 {
-       next->prev = new;
-       new->next = next;
-       new->prev = prev;
-       prev->next = new;
+       next->prev = xnew;
+       xnew->next = next;
+       xnew->prev = prev;
+       prev->next = xnew;
 }
 #else
-extern void __list_add(struct list_head *new,
+extern void __list_add(struct list_head *xnew,
                              struct list_head *prev,
                              struct list_head *next);
 #endif
@@ -78,12 +78,12 @@ extern void __list_add(struct list_head *new,
  * This is good for implementing stacks.
  */
 #ifndef CONFIG_DEBUG_LIST
-static inline void list_add(struct list_head *new, struct list_head *head)
+static inline void list_add(struct list_head *xnew, struct list_head *head)
 {
-       __list_add(new, head, head->next);
+       __list_add(xnew, head, head->next);
 }
 #else
-extern void list_add(struct list_head *new, struct list_head *head);
+extern void list_add(struct list_head *xnew, struct list_head *head);
 #endif
 
 
@@ -95,9 +95,9 @@ extern void list_add(struct list_head *new, struct list_head *head);
  * Insert a new entry before the specified head.
  * This is useful for implementing queues.
  */
-static inline void list_add_tail(struct list_head *new, struct list_head *head)
+static inline void list_add_tail(struct list_head *xnew, struct list_head *head)
 {
-       __list_add(new, head->prev, head);
+       __list_add(xnew, head->prev, head);
 }
 
 /*
@@ -137,18 +137,18 @@ extern void list_del(struct list_head *entry);
  * Note: if 'old' was empty, it will be overwritten.
  */
 static inline void list_replace(struct list_head *old,
-                               struct list_head *new)
+                               struct list_head *xnew)
 {
-       new->next = old->next;
-       new->next->prev = new;
-       new->prev = old->prev;
-       new->prev->next = new;
+       xnew->next = old->next;
+       xnew->next->prev = xnew;
+       xnew->prev = old->prev;
+       xnew->prev->next = xnew;
 }
 
 static inline void list_replace_init(struct list_head *old,
-                                       struct list_head *new)
+                                       struct list_head *xnew)
 {
-       list_replace(old, new);
+       list_replace(old, xnew);
        INIT_LIST_HEAD(old);
 }
 /**
index bed054d408b807df8f2a522bc8cd7410397e518f..edf12c822d64203e9ab3ffe64a9c35d30f2660a7 100644 (file)
--- a/rbtree.h
+++ b/rbtree.h
@@ -145,7 +145,7 @@ extern struct rb_node *rb_first(struct rb_root *);
 extern struct rb_node *rb_last(struct rb_root *);
 
 /* Fast replacement of a single node without remove/rebalance/add/rebalance */
-extern void rb_replace_node(struct rb_node *victim, struct rb_node *new, 
+extern void rb_replace_node(struct rb_node *victim, struct rb_node *xnew,
                            struct rb_root *root);
 
 static inline void rb_link_node(struct rb_node * node, struct rb_node * parent,
index 9a17e32d6b677ebb19978ebf308c2a5eb29afe4e..9223018700c260575bc46a9668f1186f5e0de46c 100644 (file)
 #ifndef SEND_STREAM_H_
 #define SEND_STREAM_H_
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 struct btrfs_send_ops {
        int (*subvol)(const char *path, const u8 *uuid, u64 ctransid,
                      void *user);
@@ -55,5 +59,8 @@ struct btrfs_send_ops {
 int btrfs_read_and_process_send_stream(int fd,
                                       struct btrfs_send_ops *ops, void *user);
 
+#ifdef __cplusplus
+}
+#endif
 
 #endif /* SEND_STREAM_H_ */
index da407eba9d95da1d61ed1ae2c8b9c0fce5c82710..fea576c00023fcae17096a9fed2bc38457621b96 100644 (file)
 #include "ctree.h"
 #include "rbtree.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 enum subvol_search_type {
        subvol_search_by_root_id,
        subvol_search_by_uuid,
@@ -65,5 +69,8 @@ void subvol_uuid_search_add(struct subvol_uuid_search *s,
 char *path_cat(const char *p1, const char *p2);
 char *path_cat3(const char *p1, const char *p2, const char *p3);
 
+#ifdef __cplusplus
+}
+#endif
 
 #endif /* SEND_UTILS_H_ */
diff --git a/send.h b/send.h
index 48d425aef05beb2034b84fb0d07e210f6b33f57e..e8da785ff8d6702a7334295ce9ae1c470c051802 100644 (file)
--- a/send.h
+++ b/send.h
 
 #include "ctree.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #define BTRFS_SEND_STREAM_MAGIC "btrfs-stream"
 #define BTRFS_SEND_STREAM_VERSION 1
 
@@ -132,3 +136,7 @@ enum {
 #ifdef __KERNEL__
 long btrfs_ioctl_send(struct file *mnt_file, void __user *arg);
 #endif
+
+#ifdef __cplusplus
+}
+#endif