]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/btrfs/extent_map.h
Btrfs: Add back the online defragging code
[mv-sheeva.git] / fs / btrfs / extent_map.h
index 75dc600dc0f9e33ace0ea160f57bbcb97baf8225..8409b5cbeda7ef83fc3248fc501b7341dc6e7f1b 100644 (file)
@@ -14,6 +14,8 @@
 #define EXTENT_LOCKED (1 << 3)
 #define EXTENT_NEW (1 << 4)
 #define EXTENT_DELALLOC (1 << 5)
+#define EXTENT_DEFRAG (1 << 6)
+#define EXTENT_DEFRAG_DONE (1 << 7)
 #define EXTENT_IOBITS (EXTENT_LOCKED | EXTENT_WRITEBACK)
 
 
@@ -62,6 +64,7 @@ struct extent_state {
        struct list_head list;
 };
 
+#define EXTENT_INLINE_PAGES 32
 struct extent_buffer {
        u64 start;
        unsigned long len;
@@ -69,8 +72,12 @@ struct extent_buffer {
        int flags;
        struct list_head list;
        struct list_head leak_list;
-       struct page *first_page;
        unsigned long alloc_addr;
+       char *map_token;
+       char *kaddr;
+       unsigned long map_start;
+       unsigned long map_len;
+       struct page *pages[EXTENT_INLINE_PAGES];
 };
 
 typedef struct extent_map *(get_extent_t)(struct inode *inode,
@@ -147,11 +154,6 @@ static inline void extent_buffer_get(struct extent_buffer *eb)
        atomic_inc(&eb->refs);
 }
 
-static inline u64 extent_buffer_blocknr(struct extent_buffer *eb)
-{
-       return eb->start / 4096;
-}
-
 int memcmp_extent_buffer(struct extent_buffer *eb, const void *ptrv,
                          unsigned long start,
                          unsigned long len);