i386 fixes from axboe
authorChris Mason <chris.mason@oracle.com>
Tue, 12 Jun 2007 15:39:09 +0000 (11:39 -0400)
committerDavid Woodhouse <dwmw2@hera.kernel.org>
Tue, 12 Jun 2007 15:39:09 +0000 (11:39 -0400)
INSTALL [new file with mode: 0644]
kerncompat.h
mkfs.c
radix-tree.h

diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..e83ff6e
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,51 @@
+Install Instructions
+
+Btrfs puts snapshots and subvolumes into the root directory of the FS.  This
+directory can only be changed by btrfsctl right now, and normal filesystem
+operations do not work on it.  The default subvolume is called 'default',
+and you can create files and directories in mount_point/default
+
+Btrfs uses the crypto manager interface in the kernel for file and
+metadata checksums.  You need to compile the kernel with:
+
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_CRC32C=m
+
+cryptomanager and crc32c can be static as well.  Once your kernel is
+setup, typing make in the btrfs module sources will build against the
+running kernel.  When the build is complete:
+
+modprobe crc32c
+modprobe cryptomgr
+insmod btrfs.ko
+
+The Btrfs utility programs require libuuid to build.  This can be found
+in the e2fsprogs sources, and is usually available as libuuid or
+e2fsprogs-devel from various distros.
+
+Building the utilities is just make ; make install.  The programs go
+into /usr/local/bin.  The commands available are:
+
+mkfs.btrfs: create a filesystem
+
+btrfsctl: control program to create snapshots and subvolumes:
+
+       mount /dev/sda2 /mnt
+       btrfsctl -s new_subvol_name /mnt
+       btrfsctl -s snapshot_of_default /mnt/default
+       btrfsctl -s snapshot_of_new_subvol /mnt/new_subvol_name
+       btrfsctl -s snapshot_of_a_snapshot /mnt/snapshot_of_new_subvol
+       ls /mnt
+       default snapshot_of_a_snapshot snapshot_of_new_subvol
+       new_subvol_name snapshot_of_default
+
+       Snapshots and subvolumes cannot be deleted right now, but you can
+       rm -rf all the files and directories inside them.
+
+btrfsck: do a limited check of the FS extent trees.</li>
+
+debug-tree: print all of the FS metadata in text form.  Example:
+
+       debug-tree /dev/sda2 >& big_output_file
+
index abad58c..8686012 100644 (file)
@@ -71,8 +71,8 @@ struct page {
        unsigned long index;
 };
 
-static inline void preempt_enable(void) { do {; } while(0);}
-static inline void preempt_disable(void) { do {; } while(0);}
+#define preempt_enable()       do { } while (0)
+#define preempt_disable()      do { } while (0)
 
 #define BITOP_MASK(nr)         (1UL << ((nr) % BITS_PER_LONG))
 #define BITOP_WORD(nr)         ((nr) / BITS_PER_LONG)
@@ -114,9 +114,16 @@ static inline int test_bit(int nr, const volatile unsigned long *addr)
 
 #define BUG_ON(c) do { if (c) abort(); } while (0)
 
+#undef offsetof
+#ifdef __compiler_offsetof
+#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
+#else
+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+#endif
+
 #define container_of(ptr, type, member) ({                      \
         const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
-               (type *)( (char *)__mptr - __builtin_offsetof(type,member) );})
+               (type *)( (char *)__mptr - offsetof(type,member) );})
 
 #define ENOMEM 5
 #define EEXIST 6
diff --git a/mkfs.c b/mkfs.c
index cead575..ac99049 100644 (file)
--- a/mkfs.c
+++ b/mkfs.c
@@ -28,8 +28,9 @@
 #include <fcntl.h>
 #include <unistd.h>
 #include <uuid/uuid.h>
-#include "kerncompat.h"
 #include "radix-tree.h"
+#include <linux/fs.h>
+#include "kerncompat.h"
 #include "ctree.h"
 #include "disk-io.h"
 #include "transaction.h"
index 076e599..d99ea7e 100644 (file)
@@ -37,6 +37,8 @@
 #ifndef _LINUX_RADIX_TREE_H
 #define _LINUX_RADIX_TREE_H
 
+#include "kerncompat.h"
+
 #define RADIX_TREE_MAX_TAGS 2
 
 /* root tags are stored in gfp_mask, shifted by __GFP_BITS_SHIFT */