diff --git a/include/Makefile b/include/Makefile
index 7976bf5..70e43a0 100644
--- a/include/Makefile
+++ b/include/Makefile
@@ -23,9 +23,12 @@
 	swab.h \
 	xfs_arch.h \
 	xfs_btree_trace.h \
+	xfs_inode.h \
 	xfs_log_recover.h \
 	xfs_metadump.h \
-	xfs_trace.h
+	xfs_mount.h \
+	xfs_trace.h \
+	xfs_trans.h
 
 HFILES = handle.h jdm.h xqm.h xfs.h
 HFILES += $(PKG_PLATFORM).h
diff --git a/include/libxfs.h b/include/libxfs.h
index 434ffa7..5bb4cf1 100644
--- a/include/libxfs.h
+++ b/include/libxfs.h
@@ -40,8 +40,25 @@
 #include <xfs/xfs_quota_defs.h>
 #include <xfs/xfs_trans_resv.h>
 
+
+/* CRC stuff, buffer API dependent on it */
+extern uint32_t crc32_le(uint32_t crc, unsigned char const *p, size_t len);
+extern uint32_t crc32c_le(uint32_t crc, unsigned char const *p, size_t len);
+
+#define crc32(c,p,l)	crc32_le((c),(unsigned char const *)(p),(l))
+#define crc32c(c,p,l)	crc32c_le((c),(unsigned char const *)(p),(l))
+
+#include <xfs/xfs_cksum.h>
+
+/*
+ * This mirrors the kernel include for xfs_buf.h - it's implicitly included in
+ * every files via a similar include in the kernel xfs_linux.h.
+ */
+#include <xfs/libxfs_io.h>
+
 #include <xfs/xfs_bit.h>
 #include <xfs/xfs_sb.h>
+#include <xfs/xfs_mount.h>
 #include <xfs/xfs_da_format.h>
 #include <xfs/xfs_da_btree.h>
 #include <xfs/xfs_dir2.h>
@@ -51,12 +68,16 @@
 #include <xfs/xfs_attr_sf.h>
 #include <xfs/xfs_inode_fork.h>
 #include <xfs/xfs_inode_buf.h>
+#include <xfs/xfs_inode.h>
 #include <xfs/xfs_alloc.h>
 #include <xfs/xfs_btree.h>
 #include <xfs/xfs_btree_trace.h>
 #include <xfs/xfs_bmap.h>
 #include <xfs/xfs_trace.h>
+#include <xfs/xfs_trans.h>
 
+struct xfs_mount;
+struct xfs_trans;
 
 #ifndef ARRAY_SIZE
 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
@@ -68,10 +89,6 @@
 
 #define xfs_isset(a,i)	((a)[(i)/(sizeof((a))*NBBY)] & (1<<((i)%(sizeof((a))*NBBY))))
 
-#define __round_mask(x, y) ((__typeof__(x))((y)-1))
-#define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1)
-#define round_down(x, y) ((x) & ~__round_mask(x, y))
-
 /*
  * Argument structure for libxfs_init().
  */
@@ -118,19 +135,6 @@
 #define LIBXFS_EXCLUSIVELY	0x0010	/* disallow other accesses (O_EXCL) */
 #define LIBXFS_DIRECT		0x0020	/* can use direct I/O, not buffered */
 
-/*
- * IO verifier callbacks need the xfs_mount pointer, so we have to behave
- * somewhat like the kernel now for userspace IO in terms of having buftarg
- * based devices...
- */
-struct xfs_buftarg {
-	struct xfs_mount	*bt_mount;
-	dev_t			dev;
-};
-
-extern void	libxfs_buftarg_init(struct xfs_mount *mp, dev_t ddev,
-				    dev_t logdev, dev_t rtdev);
-
 extern char	*progname;
 extern int	libxfs_init (libxfs_init_t *);
 extern void	libxfs_destroy (void);
@@ -152,514 +156,28 @@
 				libxfs_get_block_t *, void *);
 
 
-/*
- * Define a user-level mount structure with all we need
- * in order to make use of the numerous XFS_* macros.
- */
-typedef struct xfs_mount {
-	xfs_sb_t		m_sb;		/* copy of fs superblock */
-	char			*m_fsname;	/* filesystem name */
-	int			m_bsize;	/* fs logical block size */
-	xfs_agnumber_t		m_agfrotor;	/* last ag where space found */
-	xfs_agnumber_t		m_agirotor;	/* last ag dir inode alloced */
-	xfs_agnumber_t		m_maxagi;	/* highest inode alloc group */
-	uint			m_rsumlevels;	/* rt summary levels */
-	uint			m_rsumsize;	/* size of rt summary, bytes */
-	struct xfs_inode	*m_rbmip;	/* pointer to bitmap inode */
-	struct xfs_inode	*m_rsumip;	/* pointer to summary inode */
-	struct xfs_buftarg	*m_ddev_targp;
-	struct xfs_buftarg	*m_logdev_targp;
-	struct xfs_buftarg	*m_rtdev_targp;
-#define m_dev		m_ddev_targp
-#define m_logdev	m_logdev_targp
-#define m_rtdev		m_rtdev_targp
-	__uint8_t		m_dircook_elog;	/* log d-cookie entry bits */
-	__uint8_t		m_blkbit_log;	/* blocklog + NBBY */
-	__uint8_t		m_blkbb_log;	/* blocklog - BBSHIFT */
-	__uint8_t		m_sectbb_log;	/* sectorlog - BBSHIFT */
-	__uint8_t		m_agno_log;	/* log #ag's */
-	__uint8_t		m_agino_log;	/* #bits for agino in inum */
-	uint			m_inode_cluster_size;/* min inode buf size */
-	uint			m_blockmask;	/* sb_blocksize-1 */
-	uint			m_blockwsize;	/* sb_blocksize in words */
-	uint			m_blockwmask;	/* blockwsize-1 */
-	uint			m_alloc_mxr[2];	/* XFS_ALLOC_BLOCK_MAXRECS */
-	uint			m_alloc_mnr[2];	/* XFS_ALLOC_BLOCK_MINRECS */
-	uint			m_bmap_dmxr[2];	/* XFS_BMAP_BLOCK_DMAXRECS */
-	uint			m_bmap_dmnr[2];	/* XFS_BMAP_BLOCK_DMINRECS */
-	uint			m_inobt_mxr[2];	/* XFS_INOBT_BLOCK_MAXRECS */
-	uint			m_inobt_mnr[2];	/* XFS_INOBT_BLOCK_MINRECS */
-	uint			m_ag_maxlevels;	/* XFS_AG_MAXLEVELS */
-	uint			m_bm_maxlevels[2]; /* XFS_BM_MAXLEVELS */
-	uint			m_in_maxlevels;	/* XFS_IN_MAXLEVELS */
-	struct radix_tree_root	m_perag_tree;
-	uint			m_flags;	/* global mount flags */
-	uint			m_qflags;	/* quota status flags */
-	uint			m_attroffset;	/* inode attribute offset */
-	int			m_ialloc_inos;	/* inodes in inode allocation */
-	int			m_ialloc_blks;	/* blocks in inode allocation */
-	int			m_litino;	/* size of inode union area */
-	int			m_inoalign_mask;/* mask sb_inoalignmt if used */
-	struct xfs_trans_resv	m_resv;		/* precomputed res values */
-	__uint64_t		m_maxicount;	/* maximum inode count */
-	int			m_dalign;	/* stripe unit */
-	int			m_swidth;	/* stripe width */
-	int			m_sinoalign;	/* stripe unit inode alignmnt */
-	const struct xfs_nameops *m_dirnameops;	/* vector of dir name ops */
-
-	struct xfs_da_geometry	*m_dir_geo;	/* directory block geometry */
-	struct xfs_da_geometry	*m_attr_geo;	/* attribute block geometry */
-	const struct xfs_dir_ops *m_dir_inode_ops; /* vector of dir inode ops */
-	const struct xfs_dir_ops *m_nondir_inode_ops; /* !dir inode ops */
-#define M_DIROPS(mp)	((mp)->m_dir_inode_ops)
-
-	/*
-	 * anonymous struct to allow xfs_dquot_buf.c to compile.
-	 * Pointer is always null in userspace, so code does not use it at all
-	 */
-	struct {
-		int	qi_dqperchunk;
-	}			*m_quotainfo;
-
-} xfs_mount_t;
-
-/*
- * Per-ag incore structure, copies of information in agf and agi,
- * to improve the performance of allocation group selection.
- */
-typedef struct xfs_perag {
-	struct xfs_mount *pag_mount;	/* owner filesystem */
-	xfs_agnumber_t	pag_agno;	/* AG this structure belongs to */
-	atomic_t	pag_ref;	/* perag reference count */
-	char		pagf_init;	/* this agf's entry is initialized */
-	char		pagi_init;	/* this agi's entry is initialized */
-	char		pagf_metadata;	/* the agf is preferred to be metadata */
-	char		pagi_inodeok;	/* The agi is ok for inodes */
-	__uint8_t	pagf_levels[XFS_BTNUM_AGF];
-					/* # of levels in bno & cnt btree */
-	__uint32_t	pagf_flcount;	/* count of blocks in freelist */
-	xfs_extlen_t	pagf_freeblks;	/* total free blocks */
-	xfs_extlen_t	pagf_longest;	/* longest free space */
-	__uint32_t	pagf_btreeblks;	/* # of blocks held in AGF btrees */
-	xfs_agino_t	pagi_freecount;	/* number of free inodes */
-	xfs_agino_t	pagi_count;	/* number of allocated inodes */
-
-	/*
-	 * Inode allocation search lookup optimisation.
-	 * If the pagino matches, the search for new inodes
-	 * doesn't need to search the near ones again straight away
-	 */
-	xfs_agino_t	pagl_pagino;
-	xfs_agino_t	pagl_leftrec;
-	xfs_agino_t	pagl_rightrec;
-	int		pagb_count;	/* pagb slots in use */
-} xfs_perag_t;
-
-#define LIBXFS_MOUNT_DEBUGGER		0x0001
-#define LIBXFS_MOUNT_32BITINODES	0x0002
-#define LIBXFS_MOUNT_32BITINOOPT	0x0004
-#define LIBXFS_MOUNT_COMPAT_ATTR	0x0008
-#define LIBXFS_MOUNT_ATTR2		0x0010
-
-#define LIBXFS_BHASHSIZE(sbp) 		(1<<10)
-
-extern xfs_mount_t	*libxfs_mount (xfs_mount_t *, xfs_sb_t *,
-				dev_t, dev_t, dev_t, int);
-extern void	libxfs_umount (xfs_mount_t *);
-extern void	libxfs_rtmount_destroy (xfs_mount_t *);
-
-/*
- * Simple I/O interface
- */
-#define XB_PAGES        2
-
-struct xfs_buf_map {
-	xfs_daddr_t		bm_bn;  /* block number for I/O */
-	int			bm_len; /* size of I/O */
-};
-
-#define DEFINE_SINGLE_BUF_MAP(map, blkno, numblk) \
-	struct xfs_buf_map (map) = { .bm_bn = (blkno), .bm_len = (numblk) };
-
-struct xfs_buf_ops {
-	void (*verify_read)(struct xfs_buf *);
-	void (*verify_write)(struct xfs_buf *);
-};
-
-typedef struct xfs_buf {
-	struct cache_node	b_node;
-	unsigned int		b_flags;
-	xfs_daddr_t		b_bn;
-	unsigned		b_bcount;
-	unsigned int		b_length;
-	struct xfs_buftarg	*b_target;
-#define b_dev		b_target->dev
-	pthread_mutex_t		b_lock;
-	pthread_t		b_holder;
-	unsigned int		b_recur;
-	void			*b_fspriv;
-	void			*b_fsprivate2;
-	void			*b_fsprivate3;
-	void			*b_addr;
-	int			b_error;
-	const struct xfs_buf_ops *b_ops;
-	struct xfs_perag	*b_pag;
-	struct xfs_buf_map	*b_map;
-	int			b_nmaps;
-#ifdef XFS_BUF_TRACING
-	struct list_head	b_lock_list;
-	const char		*b_func;
-	const char		*b_file;
-	int			b_line;
-#endif
-} xfs_buf_t;
-
-enum xfs_buf_flags_t {	/* b_flags bits */
-	LIBXFS_B_EXIT		= 0x0001,	/* ==LIBXFS_EXIT_ON_FAILURE */
-	LIBXFS_B_DIRTY		= 0x0002,	/* buffer has been modified */
-	LIBXFS_B_STALE		= 0x0004,	/* buffer marked as invalid */
-	LIBXFS_B_UPTODATE	= 0x0008,	/* buffer is sync'd to disk */
-	LIBXFS_B_DISCONTIG	= 0x0010,	/* discontiguous buffer */
-	LIBXFS_B_UNCHECKED	= 0x0020,	/* needs verification */
-};
-
-#define XFS_BUF_DADDR_NULL		((xfs_daddr_t) (-1LL))
-
-#define XFS_BUF_PTR(bp)			((char *)(bp)->b_addr)
-#define xfs_buf_offset(bp, offset)	(XFS_BUF_PTR(bp) + (offset))
-#define XFS_BUF_ADDR(bp)		((bp)->b_bn)
-#define XFS_BUF_SIZE(bp)		((bp)->b_bcount)
-#define XFS_BUF_COUNT(bp)		((bp)->b_bcount)
-#define XFS_BUF_TARGET(bp)		((bp)->b_dev)
-#define XFS_BUF_SET_PTR(bp,p,cnt)	({	\
-	(bp)->b_addr = (char *)(p);		\
-	XFS_BUF_SET_COUNT(bp,cnt);		\
-})
-
-#define XFS_BUF_SET_ADDR(bp,blk)	((bp)->b_bn = (blk))
-#define XFS_BUF_SET_COUNT(bp,cnt)	((bp)->b_bcount = (cnt))
-
-#define XFS_BUF_FSPRIVATE(bp,type)	((type)(bp)->b_fspriv)
-#define XFS_BUF_SET_FSPRIVATE(bp,val)	(bp)->b_fspriv = (void *)(val)
-#define XFS_BUF_FSPRIVATE2(bp,type)	((type)(bp)->b_fsprivate2)
-#define XFS_BUF_SET_FSPRIVATE2(bp,val)	(bp)->b_fsprivate2 = (void *)(val)
-#define XFS_BUF_FSPRIVATE3(bp,type)	((type)(bp)->b_fsprivate3)
-#define XFS_BUF_SET_FSPRIVATE3(bp,val)	(bp)->b_fsprivate3 = (void *)(val)
-
-#define XFS_BUF_SET_PRIORITY(bp,pri)	cache_node_set_priority( \
-						libxfs_bcache, \
-						(struct cache_node *)(bp), \
-						(pri))
-#define XFS_BUF_PRIORITY(bp)		(cache_node_get_priority( \
-						(struct cache_node *)(bp)))
-#define xfs_buf_set_ref(bp,ref)		((void) 0)
-#define xfs_buf_ioerror(bp,err)		((bp)->b_error = (err))
-
-#define xfs_daddr_to_agno(mp,d) \
-	((xfs_agnumber_t)(XFS_BB_TO_FSBT(mp, d) / (mp)->m_sb.sb_agblocks))
-#define xfs_daddr_to_agbno(mp,d) \
-	((xfs_agblock_t)(XFS_BB_TO_FSBT(mp, d) % (mp)->m_sb.sb_agblocks))
-
-/* Buffer Cache Interfaces */
-
-extern struct cache	*libxfs_bcache;
-extern struct cache_operations	libxfs_bcache_operations;
-
-#define LIBXFS_GETBUF_TRYLOCK	(1 << 0)
-
-#ifdef XFS_BUF_TRACING
-
-#define libxfs_readbuf(dev, daddr, len, flags, ops) \
-	libxfs_trace_readbuf(__FUNCTION__, __FILE__, __LINE__, \
-			    (dev), (daddr), (len), (flags), (ops))
-#define libxfs_readbuf_map(dev, map, nmaps, flags, ops) \
-	libxfs_trace_readbuf_map(__FUNCTION__, __FILE__, __LINE__, \
-			    (dev), (map), (nmaps), (flags), (ops))
-#define libxfs_writebuf(buf, flags) \
-	libxfs_trace_writebuf(__FUNCTION__, __FILE__, __LINE__, \
-			      (buf), (flags))
-#define libxfs_getbuf(dev, daddr, len) \
-	libxfs_trace_getbuf(__FUNCTION__, __FILE__, __LINE__, \
-			    (dev), (daddr), (len))
-#define libxfs_getbuf_map(dev, map, nmaps, flags) \
-	libxfs_trace_getbuf_map(__FUNCTION__, __FILE__, __LINE__, \
-			    (dev), (map), (nmaps), (flags))
-#define libxfs_getbuf_flags(dev, daddr, len, flags) \
-	libxfs_trace_getbuf_flags(__FUNCTION__, __FILE__, __LINE__, \
-			    (dev), (daddr), (len), (flags))
-#define libxfs_putbuf(buf) \
-	libxfs_trace_putbuf(__FUNCTION__, __FILE__, __LINE__, (buf))
-
-extern xfs_buf_t *libxfs_trace_readbuf(const char *, const char *, int,
-			struct xfs_buftarg *, xfs_daddr_t, int, int,
-			const struct xfs_buf_ops *);
-extern xfs_buf_t *libxfs_trace_readbuf_map(const char *, const char *, int,
-			struct xfs_buftarg *, struct xfs_buf_map *, int, int,
-			const struct xfs_buf_ops *);
-extern int	libxfs_trace_writebuf(const char *, const char *, int,
-			xfs_buf_t *, int);
-extern xfs_buf_t *libxfs_trace_getbuf(const char *, const char *, int,
-			struct xfs_buftarg *, xfs_daddr_t, int);
-extern xfs_buf_t *libxfs_trace_getbuf_map(const char *, const char *, int,
-			struct xfs_buftarg *, struct xfs_buf_map *, int, int);
-extern xfs_buf_t *libxfs_trace_getbuf_flags(const char *, const char *, int,
-			struct xfs_buftarg *, xfs_daddr_t, int, unsigned int);
-extern void	libxfs_trace_putbuf (const char *, const char *, int,
-			xfs_buf_t *);
-
-#else
-
-extern xfs_buf_t *libxfs_readbuf(struct xfs_buftarg *, xfs_daddr_t, int, int,
-			const struct xfs_buf_ops *);
-extern xfs_buf_t *libxfs_readbuf_map(struct xfs_buftarg *, struct xfs_buf_map *,
-			int, int, const struct xfs_buf_ops *);
-extern int	libxfs_writebuf(xfs_buf_t *, int);
-extern xfs_buf_t *libxfs_getbuf(struct xfs_buftarg *, xfs_daddr_t, int);
-extern xfs_buf_t *libxfs_getbuf_map(struct xfs_buftarg *,
-			struct xfs_buf_map *, int, int);
-extern xfs_buf_t *libxfs_getbuf_flags(struct xfs_buftarg *, xfs_daddr_t,
-			int, unsigned int);
-extern void	libxfs_putbuf (xfs_buf_t *);
-
-#endif
-
-extern void	libxfs_readbuf_verify(struct xfs_buf *bp,
-			const struct xfs_buf_ops *ops);
-extern xfs_buf_t *libxfs_getsb(xfs_mount_t *, int);
-extern void	libxfs_bcache_purge(void);
-extern void	libxfs_bcache_flush(void);
-extern void	libxfs_purgebuf(xfs_buf_t *);
-extern int	libxfs_bcache_overflowed(void);
-extern int	libxfs_bcache_usage(void);
-
-/* Buffer (Raw) Interfaces */
-extern xfs_buf_t *libxfs_getbufr(struct xfs_buftarg *, xfs_daddr_t, int);
-extern void	libxfs_putbufr(xfs_buf_t *);
-
-extern int	libxfs_writebuf_int(xfs_buf_t *, int);
-extern int	libxfs_writebufr(struct xfs_buf *);
-extern int	libxfs_readbufr(struct xfs_buftarg *, xfs_daddr_t, xfs_buf_t *, int, int);
-extern int	libxfs_readbufr_map(struct xfs_buftarg *, struct xfs_buf *, int);
-
-extern int libxfs_bhash_size;
-
-#define LIBXFS_BREAD	0x1
-#define LIBXFS_BWRITE	0x2
-#define LIBXFS_BZERO	0x4
-
-extern void	libxfs_iomove (xfs_buf_t *, uint, int, void *, int);
-
-/*
- * Transaction interface
- */
-
-typedef struct xfs_log_item {
-	struct xfs_log_item_desc	*li_desc;	/* ptr to current desc*/
-	struct xfs_mount		*li_mountp;	/* ptr to fs mount */
-	uint				li_type;	/* item type */
-	xfs_lsn_t			li_lsn;
-} xfs_log_item_t;
-
-typedef struct xfs_inode_log_item {
-	xfs_log_item_t		ili_item;		/* common portion */
-	struct xfs_inode	*ili_inode;		/* inode pointer */
-	unsigned short		ili_flags;		/* misc flags */
-	unsigned int		ili_fields;		/* fields to be logged */
-	unsigned int		ili_last_fields;	/* fields when flushed*/
-	xfs_inode_log_format_t	ili_format;		/* logged structure */
-} xfs_inode_log_item_t;
-
-typedef struct xfs_buf_log_item {
-	xfs_log_item_t		bli_item;	/* common item structure */
-	struct xfs_buf		*bli_buf;	/* real buffer pointer */
-	unsigned int		bli_flags;	/* misc flags */
-	unsigned int		bli_recur;	/* recursion count */
-	xfs_buf_log_format_t	bli_format;	/* in-log header */
-} xfs_buf_log_item_t;
-
-#define XFS_BLI_DIRTY			(1<<0)
-#define XFS_BLI_HOLD			(1<<1)
-#define XFS_BLI_STALE			(1<<2)
-#define XFS_BLI_INODE_ALLOC_BUF		(1<<3)
-
-typedef struct xfs_dq_logitem {
-	xfs_log_item_t		qli_item;	/* common portion */
-	struct xfs_dquot	*qli_dquot;	/* dquot ptr */
-	xfs_lsn_t		qli_flush_lsn;	/* lsn at last flush */
-	xfs_dq_logformat_t	qli_format;	/* logged structure */
-} xfs_dq_logitem_t;
-
-typedef struct xfs_qoff_logitem {
-	xfs_log_item_t		qql_item;	/* common portion */
-	struct xfs_qoff_logitem	*qql_start_lip;	/* qoff-start logitem, if any */
-	xfs_qoff_logformat_t	qql_format;	/* logged structure */
-} xfs_qoff_logitem_t;
-
-typedef struct xfs_trans {
-	unsigned int	t_type;			/* transaction type */
-	unsigned int	t_log_res;		/* amt of log space resvd */
-	unsigned int	t_log_count;		/* count for perm log res */
-	xfs_mount_t	*t_mountp;		/* ptr to fs mount struct */
-	unsigned int	t_flags;		/* misc flags */
-	long		t_icount_delta;		/* superblock icount change */
-	long		t_ifree_delta;		/* superblock ifree change */
-	long		t_fdblocks_delta;	/* superblock fdblocks chg */
-	long		t_frextents_delta;	/* superblock freextents chg */
-	struct list_head	t_items;	/* first log item desc chunk */
-} xfs_trans_t;
-
-extern void	xfs_trans_init(struct xfs_mount *);
-extern int	xfs_trans_roll(struct xfs_trans **, struct xfs_inode *);
-
-extern xfs_trans_t	*libxfs_trans_alloc (xfs_mount_t *, int);
-extern xfs_trans_t	*libxfs_trans_dup (xfs_trans_t *);
-extern int	libxfs_trans_reserve(struct xfs_trans *, struct xfs_trans_res *,
-				     uint, uint);
-extern int	libxfs_trans_commit (xfs_trans_t *, uint);
-extern void	libxfs_trans_cancel (xfs_trans_t *, int);
-extern xfs_buf_t	*libxfs_trans_getsb (xfs_trans_t *, xfs_mount_t *, int);
-
-extern int	libxfs_trans_iget (xfs_mount_t *, xfs_trans_t *, xfs_ino_t,
-				uint, uint, struct xfs_inode **);
-extern void	libxfs_trans_ijoin (xfs_trans_t *, struct xfs_inode *, uint);
-extern void	libxfs_trans_ijoin_ref(xfs_trans_t *, struct xfs_inode *, int);
-extern void	libxfs_trans_log_inode (xfs_trans_t *, struct xfs_inode *,
-				uint);
-
-extern void	libxfs_trans_brelse (xfs_trans_t *, struct xfs_buf *);
-extern void	libxfs_trans_binval (xfs_trans_t *, struct xfs_buf *);
-extern void	libxfs_trans_bjoin (xfs_trans_t *, struct xfs_buf *);
-extern void	libxfs_trans_bhold (xfs_trans_t *, struct xfs_buf *);
-extern void	libxfs_trans_log_buf (xfs_trans_t *, struct xfs_buf *,
-				uint, uint);
-/*
-extern xfs_buf_t	*libxfs_trans_get_buf (xfs_trans_t *, dev_t,
-				xfs_daddr_t, int, uint);
-extern int	libxfs_trans_read_buf (xfs_mount_t *, xfs_trans_t *, dev_t,
-				xfs_daddr_t, int, uint, struct xfs_buf **);
-*/
-
-struct xfs_buf	*libxfs_trans_get_buf_map(struct xfs_trans *tp,
-					struct xfs_buftarg *btp,
-					struct xfs_buf_map *map, int nmaps,
-					uint flags);
-
-static inline struct xfs_buf *
-libxfs_trans_get_buf(
-	struct xfs_trans	*tp,
-	struct xfs_buftarg	*btp,
-	xfs_daddr_t		blkno,
-	int			numblks,
-	uint			flags)
-{
-	DEFINE_SINGLE_BUF_MAP(map, blkno, numblks);
-	return libxfs_trans_get_buf_map(tp, btp, &map, 1, flags);
-}
-
-int		libxfs_trans_read_buf_map(struct xfs_mount *mp,
-				       struct xfs_trans *tp,
-				       struct xfs_buftarg *btp,
-				       struct xfs_buf_map *map, int nmaps,
-				       uint flags, struct xfs_buf **bpp,
-				       const struct xfs_buf_ops *ops);
-
-static inline int
-libxfs_trans_read_buf(
-	struct xfs_mount	*mp,
-	struct xfs_trans	*tp,
-	struct xfs_buftarg	*btp,
-	xfs_daddr_t		blkno,
-	int			numblks,
-	uint			flags,
-	struct xfs_buf		**bpp,
-	const struct xfs_buf_ops *ops)
-{
-	DEFINE_SINGLE_BUF_MAP(map, blkno, numblks);
-	return libxfs_trans_read_buf_map(mp, tp, btp, &map, 1,
-				      flags, bpp, ops);
-}
-
-/*
- * Inode interface
- */
-typedef struct xfs_inode {
-	struct cache_node	i_node;
-	xfs_mount_t		*i_mount;	/* fs mount struct ptr */
-	xfs_ino_t		i_ino;		/* inode number (agno/agino) */
-	struct xfs_imap		i_imap;		/* location for xfs_imap() */
-	struct xfs_buftarg	i_dev;		/* dev for this inode */
-	xfs_ifork_t		*i_afp;		/* attribute fork pointer */
-	xfs_ifork_t		i_df;		/* data fork */
-	xfs_trans_t		*i_transp;	/* ptr to owning transaction */
-	xfs_inode_log_item_t	*i_itemp;	/* logging information */
-	unsigned int		i_delayed_blks;	/* count of delay alloc blks */
-	xfs_icdinode_t		i_d;		/* most of ondisk inode */
-	xfs_fsize_t		i_size;		/* in-memory size */
-	const struct xfs_dir_ops *d_ops;	/* directory ops vector */
-} xfs_inode_t;
 
 #define LIBXFS_ATTR_ROOT	0x0002	/* use attrs in root namespace */
 #define LIBXFS_ATTR_SECURE	0x0008	/* use attrs in security namespace */
 #define LIBXFS_ATTR_CREATE	0x0010	/* create, but fail if attr exists */
 #define LIBXFS_ATTR_REPLACE	0x0020	/* set, but fail if attr not exists */
 
-/*
- * Project quota id helpers (previously projid was 16bit only and using two
- * 16bit values to hold new 32bit projid was chosen to retain compatibility with
- * "old" filesystems).
- *
- * Copied here from xfs_inode.h because it has to be defined after the struct
- * xfs_inode...
- */
-static inline prid_t
-xfs_get_projid(struct xfs_icdinode *id)
-{
-	return (prid_t)id->di_projid_hi << 16 | id->di_projid_lo;
-}
-
-static inline void
-xfs_set_projid(struct xfs_icdinode *id, prid_t projid)
-{
-	id->di_projid_hi = (__uint16_t) (projid >> 16);
-	id->di_projid_lo = (__uint16_t) (projid & 0xffff);
-}
-
-typedef struct cred {
-	uid_t	cr_uid;
-	gid_t	cr_gid;
-} cred_t;
-
-extern int	libxfs_inode_alloc (xfs_trans_t **, xfs_inode_t *, mode_t,
-				nlink_t, xfs_dev_t, struct cred *,
-				struct fsxattr *, xfs_inode_t **);
-extern void	libxfs_trans_inode_alloc_buf (xfs_trans_t *, xfs_buf_t *);
-
-extern void	libxfs_trans_ichgtime(struct xfs_trans *,
-					struct xfs_inode *, int);
-extern int	libxfs_iflush_int (xfs_inode_t *, xfs_buf_t *);
-
-/* Inode Cache Interfaces */
-extern int	libxfs_iget (xfs_mount_t *, xfs_trans_t *, xfs_ino_t,
-				uint, xfs_inode_t **, xfs_daddr_t);
-extern void	libxfs_iput (xfs_inode_t *);
-
-#define IRELE(ip) libxfs_iput(ip)
-
 /* Shared utility routines */
 extern unsigned int	libxfs_log2_roundup(unsigned int i);
 
-extern int	libxfs_alloc_file_space (xfs_inode_t *, xfs_off_t,
+extern int	libxfs_alloc_file_space (struct xfs_inode *, xfs_off_t,
 				xfs_off_t, int, int);
-extern int	libxfs_bmap_finish(xfs_trans_t **, xfs_bmap_free_t *, int *);
 
 extern void 	libxfs_fs_repair_cmn_err(int, struct xfs_mount *, char *, ...);
 extern void	libxfs_fs_cmn_err(int, struct xfs_mount *, char *, ...);
 
+/* XXX: this is messy and needs fixing */
+#ifndef __LIBXFS_INTERNAL_XFS_H__
 extern void cmn_err(int, char *, ...);
 enum ce { CE_DEBUG, CE_CONT, CE_NOTE, CE_WARN, CE_ALERT, CE_PANIC };
+#endif
 
 
-#define LIBXFS_BBTOOFF64(bbs)	(((xfs_off_t)(bbs)) << BBSHIFT)
 extern int		libxfs_nproc(void);
 extern unsigned long	libxfs_physmem(void);	/* in kilobytes */
 
@@ -672,35 +190,6 @@
 #define XFS_INOBT_IS_FREE_DISK(rp,i)		\
 			((be64_to_cpu((rp)->ir_free) & XFS_INOBT_MASK(i)) != 0)
 
-#define xfs_notice(mp,fmt,args...)		cmn_err(CE_NOTE,fmt, ## args)
-#define xfs_warn(mp,fmt,args...)		cmn_err(CE_WARN,fmt, ## args)
-#define xfs_alert(mp,fmt,args...)		cmn_err(CE_ALERT,fmt, ## args)
-#define xfs_hex_dump(d,n)		((void) 0)
-
-/* CRC wrappers */
-
-extern uint32_t crc32_le(uint32_t crc, unsigned char const *p, size_t len);
-extern uint32_t crc32c_le(uint32_t crc, unsigned char const *p, size_t len);
-
-#define crc32(c,p,l)	crc32_le((c),(unsigned char const *)(p),(l))
-#define crc32c(c,p,l)	crc32c_le((c),(unsigned char const *)(p),(l))
-
-#include <xfs/xfs_cksum.h>
-
-static inline int
-xfs_buf_verify_cksum(struct xfs_buf *bp, unsigned long cksum_offset)
-{
-	return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
-				cksum_offset);
-}
-
-static inline void
-xfs_buf_update_cksum(struct xfs_buf *bp, unsigned long cksum_offset)
-{
-	xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length),
-			 cksum_offset);
-}
-
 /*
  * public xfs kernel routines to be called as libxfs_*
  *
@@ -733,6 +222,8 @@
 void	libxfs_bmap_cancel(struct xfs_bmap_free *flist);
 int	libxfs_bmap_last_offset(struct xfs_inode *ip,
 		xfs_fileoff_t *unused, int whichfork);
+int	libxfs_bmap_finish(struct xfs_trans **tp, struct xfs_bmap_free *flist,
+		int *committed);
 
 /* xfs_dir2.h */
 int	libxfs_dir_init(struct xfs_trans *tp, struct xfs_inode *dp,
@@ -808,7 +299,7 @@
 int libxfs_attr_remove(struct xfs_inode *, const unsigned char *, int);
 
 /* xfs_bmap.c */
-xfs_bmbt_rec_host_t *xfs_bmap_search_extents(xfs_inode_t *, xfs_fileoff_t,
+xfs_bmbt_rec_host_t *xfs_bmap_search_extents(struct xfs_inode *, xfs_fileoff_t,
 				int, int *, xfs_extnum_t *, xfs_bmbt_irec_t *,
 				xfs_bmbt_irec_t *);
 void libxfs_bmbt_get_all(struct xfs_bmbt_rec_host *r, struct xfs_bmbt_irec *s);
diff --git a/include/libxlog.h b/include/libxlog.h
index a61e437..d6ba9a5 100644
--- a/include/libxlog.h
+++ b/include/libxlog.h
@@ -17,8 +17,6 @@
 #ifndef LIBXLOG_H
 #define LIBXLOG_H
 
-#include <xfs/libxfs.h>
-
 /*
  * define the userlevel xlog_t to be the subset of the kernel's
  * xlog_t that we actually need to get our work done, avoiding
@@ -51,6 +49,8 @@
 
 /*
  * macros mapping kernel code to user code
+ *
+ * XXX: this is duplicated stuff - should be shared with libxfs.
  */
 #ifndef EFSCORRUPTED
 #define EFSCORRUPTED			 990
@@ -65,6 +65,12 @@
 #define XFS_CORRUPTION_ERROR(e,l,mp,m)	((void) 0)
 #define XFS_MOUNT_WAS_CLEAN		0x1
 #define unlikely(x)			(x)
+#define xfs_alert(mp,fmt,args...)	cmn_err(CE_ALERT,fmt, ## args)
+#define xfs_warn(mp,fmt,args...)	cmn_err(CE_WARN,fmt, ## args)
+#define xfs_hex_dump(d,n)		((void) 0)
+#define __round_mask(x, y) ((__typeof__(x))((y)-1))
+#define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1)
+#define round_down(x, y) ((x) & ~__round_mask(x, y))
 
 extern void xlog_warn(char *fmt,...);
 extern void xlog_exit(char *fmt,...);
diff --git a/include/xfs_inode.h b/include/xfs_inode.h
new file mode 100644
index 0000000..8acff7b
--- /dev/null
+++ b/include/xfs_inode.h
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2000-2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write the Free Software Foundation,
+ * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __XFS_INODE_H__
+#define __XFS_INODE_H__
+
+/* These match kernel side includes */
+#include <xfs/xfs_inode_buf.h>
+#include <xfs/xfs_inode_fork.h>
+
+struct xfs_trans;
+struct xfs_mount;
+struct xfs_inode_log_item;
+struct xfs_dir_ops;
+
+/*
+ * Inode interface
+ */
+typedef struct xfs_inode {
+	struct cache_node	i_node;
+	struct xfs_mount	*i_mount;	/* fs mount struct ptr */
+	xfs_ino_t		i_ino;		/* inode number (agno/agino) */
+	struct xfs_imap		i_imap;		/* location for xfs_imap() */
+	struct xfs_buftarg	i_dev;		/* dev for this inode */
+	struct xfs_ifork	*i_afp;		/* attribute fork pointer */
+	struct xfs_ifork	i_df;		/* data fork */
+	struct xfs_trans	*i_transp;	/* ptr to owning transaction */
+	struct xfs_inode_log_item *i_itemp;	/* logging information */
+	unsigned int		i_delayed_blks;	/* count of delay alloc blks */
+	struct xfs_icdinode	i_d;		/* most of ondisk inode */
+	xfs_fsize_t		i_size;		/* in-memory size */
+	const struct xfs_dir_ops *d_ops;	/* directory ops vector */
+} xfs_inode_t;
+
+/*
+ * For regular files we only update the on-disk filesize when actually
+ * writing data back to disk.  Until then only the copy in the VFS inode
+ * is uptodate.
+ */
+static inline xfs_fsize_t XFS_ISIZE(struct xfs_inode *ip)
+{
+	if (S_ISREG(ip->i_d.di_mode))
+		return ip->i_size;
+	return ip->i_d.di_size;
+}
+#define XFS_IS_REALTIME_INODE(ip) ((ip)->i_d.di_flags & XFS_DIFLAG_REALTIME)
+
+/*
+ * Project quota id helpers (previously projid was 16bit only and using two
+ * 16bit values to hold new 32bit projid was chosen to retain compatibility with
+ * "old" filesystems).
+ *
+ * Copied here from xfs_inode.h because it has to be defined after the struct
+ * xfs_inode...
+ */
+static inline prid_t
+xfs_get_projid(struct xfs_icdinode *id)
+{
+	return (prid_t)id->di_projid_hi << 16 | id->di_projid_lo;
+}
+
+static inline void
+xfs_set_projid(struct xfs_icdinode *id, prid_t projid)
+{
+	id->di_projid_hi = (__uint16_t) (projid >> 16);
+	id->di_projid_lo = (__uint16_t) (projid & 0xffff);
+}
+
+typedef struct cred {
+	uid_t	cr_uid;
+	gid_t	cr_gid;
+} cred_t;
+
+extern int	libxfs_inode_alloc (struct xfs_trans **, struct xfs_inode *,
+				mode_t, nlink_t, xfs_dev_t, struct cred *,
+				struct fsxattr *, struct xfs_inode **);
+extern void	libxfs_trans_inode_alloc_buf (struct xfs_trans *,
+				struct xfs_buf *);
+
+extern void	libxfs_trans_ichgtime(struct xfs_trans *,
+				struct xfs_inode *, int);
+extern int	libxfs_iflush_int (struct xfs_inode *, struct xfs_buf *);
+
+/* Inode Cache Interfaces */
+extern int	libxfs_iget(struct xfs_mount *, struct xfs_trans *, xfs_ino_t,
+				uint, struct xfs_inode **, xfs_daddr_t);
+extern void	libxfs_iput(struct xfs_inode *);
+
+#define IRELE(ip) libxfs_iput(ip)
+
+#endif /* __XFS_INODE_H__ */
diff --git a/include/xfs_mount.h b/include/xfs_mount.h
new file mode 100644
index 0000000..166be40
--- /dev/null
+++ b/include/xfs_mount.h
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 2000-2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write the Free Software Foundation,
+ * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __XFS_MOUNT_H__
+#define __XFS_MOUNT_H__
+
+struct xfs_inode;
+struct xfs_buftarg;
+struct xfs_dir_ops;
+struct xfs_da_geometry;
+
+/*
+ * Define a user-level mount structure with all we need
+ * in order to make use of the numerous XFS_* macros.
+ */
+typedef struct xfs_mount {
+	xfs_sb_t		m_sb;		/* copy of fs superblock */
+	char			*m_fsname;	/* filesystem name */
+	int			m_bsize;	/* fs logical block size */
+	xfs_agnumber_t		m_agfrotor;	/* last ag where space found */
+	xfs_agnumber_t		m_agirotor;	/* last ag dir inode alloced */
+	xfs_agnumber_t		m_maxagi;	/* highest inode alloc group */
+	uint			m_rsumlevels;	/* rt summary levels */
+	uint			m_rsumsize;	/* size of rt summary, bytes */
+	struct xfs_inode	*m_rbmip;	/* pointer to bitmap inode */
+	struct xfs_inode	*m_rsumip;	/* pointer to summary inode */
+	struct xfs_buftarg	*m_ddev_targp;
+	struct xfs_buftarg	*m_logdev_targp;
+	struct xfs_buftarg	*m_rtdev_targp;
+#define m_dev		m_ddev_targp
+#define m_logdev	m_logdev_targp
+#define m_rtdev		m_rtdev_targp
+	__uint8_t		m_dircook_elog;	/* log d-cookie entry bits */
+	__uint8_t		m_blkbit_log;	/* blocklog + NBBY */
+	__uint8_t		m_blkbb_log;	/* blocklog - BBSHIFT */
+	__uint8_t		m_sectbb_log;	/* sectorlog - BBSHIFT */
+	__uint8_t		m_agno_log;	/* log #ag's */
+	__uint8_t		m_agino_log;	/* #bits for agino in inum */
+	uint			m_inode_cluster_size;/* min inode buf size */
+	uint			m_blockmask;	/* sb_blocksize-1 */
+	uint			m_blockwsize;	/* sb_blocksize in words */
+	uint			m_blockwmask;	/* blockwsize-1 */
+	uint			m_alloc_mxr[2];	/* XFS_ALLOC_BLOCK_MAXRECS */
+	uint			m_alloc_mnr[2];	/* XFS_ALLOC_BLOCK_MINRECS */
+	uint			m_bmap_dmxr[2];	/* XFS_BMAP_BLOCK_DMAXRECS */
+	uint			m_bmap_dmnr[2];	/* XFS_BMAP_BLOCK_DMINRECS */
+	uint			m_inobt_mxr[2];	/* XFS_INOBT_BLOCK_MAXRECS */
+	uint			m_inobt_mnr[2];	/* XFS_INOBT_BLOCK_MINRECS */
+	uint			m_ag_maxlevels;	/* XFS_AG_MAXLEVELS */
+	uint			m_bm_maxlevels[2]; /* XFS_BM_MAXLEVELS */
+	uint			m_in_maxlevels;	/* XFS_IN_MAXLEVELS */
+	struct radix_tree_root	m_perag_tree;
+	uint			m_flags;	/* global mount flags */
+	uint			m_qflags;	/* quota status flags */
+	uint			m_attroffset;	/* inode attribute offset */
+	int			m_ialloc_inos;	/* inodes in inode allocation */
+	int			m_ialloc_blks;	/* blocks in inode allocation */
+	int			m_litino;	/* size of inode union area */
+	int			m_inoalign_mask;/* mask sb_inoalignmt if used */
+	struct xfs_trans_resv	m_resv;		/* precomputed res values */
+	__uint64_t		m_maxicount;	/* maximum inode count */
+	int			m_dalign;	/* stripe unit */
+	int			m_swidth;	/* stripe width */
+	int			m_sinoalign;	/* stripe unit inode alignmnt */
+	const struct xfs_nameops *m_dirnameops;	/* vector of dir name ops */
+
+	struct xfs_da_geometry	*m_dir_geo;	/* directory block geometry */
+	struct xfs_da_geometry	*m_attr_geo;	/* attribute block geometry */
+	const struct xfs_dir_ops *m_dir_inode_ops; /* vector of dir inode ops */
+	const struct xfs_dir_ops *m_nondir_inode_ops; /* !dir inode ops */
+#define M_DIROPS(mp)	((mp)->m_dir_inode_ops)
+
+	/*
+	 * anonymous struct to allow xfs_dquot_buf.c to compile.
+	 * Pointer is always null in userspace, so code does not use it at all
+	 */
+	struct {
+		int	qi_dqperchunk;
+	}			*m_quotainfo;
+
+} xfs_mount_t;
+
+/*
+ * Per-ag incore structure, copies of information in agf and agi,
+ * to improve the performance of allocation group selection.
+ */
+typedef struct xfs_perag {
+	struct xfs_mount *pag_mount;	/* owner filesystem */
+	xfs_agnumber_t	pag_agno;	/* AG this structure belongs to */
+	atomic_t	pag_ref;	/* perag reference count */
+	char		pagf_init;	/* this agf's entry is initialized */
+	char		pagi_init;	/* this agi's entry is initialized */
+	char		pagf_metadata;	/* the agf is preferred to be metadata */
+	char		pagi_inodeok;	/* The agi is ok for inodes */
+	__uint8_t	pagf_levels[XFS_BTNUM_AGF];
+					/* # of levels in bno & cnt btree */
+	__uint32_t	pagf_flcount;	/* count of blocks in freelist */
+	xfs_extlen_t	pagf_freeblks;	/* total free blocks */
+	xfs_extlen_t	pagf_longest;	/* longest free space */
+	__uint32_t	pagf_btreeblks;	/* # of blocks held in AGF btrees */
+	xfs_agino_t	pagi_freecount;	/* number of free inodes */
+	xfs_agino_t	pagi_count;	/* number of allocated inodes */
+
+	/*
+	 * Inode allocation search lookup optimisation.
+	 * If the pagino matches, the search for new inodes
+	 * doesn't need to search the near ones again straight away
+	 */
+	xfs_agino_t	pagl_pagino;
+	xfs_agino_t	pagl_leftrec;
+	xfs_agino_t	pagl_rightrec;
+	int		pagb_count;	/* pagb slots in use */
+} xfs_perag_t;
+
+#define LIBXFS_MOUNT_DEBUGGER		0x0001
+#define LIBXFS_MOUNT_32BITINODES	0x0002
+#define LIBXFS_MOUNT_32BITINOOPT	0x0004
+#define LIBXFS_MOUNT_COMPAT_ATTR	0x0008
+#define LIBXFS_MOUNT_ATTR2		0x0010
+
+#define LIBXFS_BHASHSIZE(sbp) 		(1<<10)
+
+extern xfs_mount_t	*libxfs_mount (xfs_mount_t *, xfs_sb_t *,
+				dev_t, dev_t, dev_t, int);
+extern void	libxfs_umount (xfs_mount_t *);
+extern void	libxfs_rtmount_destroy (xfs_mount_t *);
+
+#endif	/* __XFS_MOUNT_H__ */
+
diff --git a/include/xfs_trans.h b/include/xfs_trans.h
new file mode 100644
index 0000000..302af35
--- /dev/null
+++ b/include/xfs_trans.h
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 2000-2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write the Free Software Foundation,
+ * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __XFS_TRANS_H__
+#define __XFS_TRANS_H__
+
+struct xfs_mount;
+struct xfs_buftarg;
+struct xfs_buf;
+struct xfs_buf_map;
+
+/*
+ * Userspace Transaction interface
+ */
+
+typedef struct xfs_log_item {
+	struct xfs_log_item_desc	*li_desc;	/* ptr to current desc*/
+	struct xfs_mount		*li_mountp;	/* ptr to fs mount */
+	uint				li_type;	/* item type */
+	xfs_lsn_t			li_lsn;
+} xfs_log_item_t;
+
+typedef struct xfs_inode_log_item {
+	xfs_log_item_t		ili_item;		/* common portion */
+	struct xfs_inode	*ili_inode;		/* inode pointer */
+	unsigned short		ili_flags;		/* misc flags */
+	unsigned int		ili_fields;		/* fields to be logged */
+	unsigned int		ili_last_fields;	/* fields when flushed*/
+	xfs_inode_log_format_t	ili_format;		/* logged structure */
+} xfs_inode_log_item_t;
+
+typedef struct xfs_buf_log_item {
+	xfs_log_item_t		bli_item;	/* common item structure */
+	struct xfs_buf		*bli_buf;	/* real buffer pointer */
+	unsigned int		bli_flags;	/* misc flags */
+	unsigned int		bli_recur;	/* recursion count */
+	xfs_buf_log_format_t	bli_format;	/* in-log header */
+} xfs_buf_log_item_t;
+
+#define XFS_BLI_DIRTY			(1<<0)
+#define XFS_BLI_HOLD			(1<<1)
+#define XFS_BLI_STALE			(1<<2)
+#define XFS_BLI_INODE_ALLOC_BUF		(1<<3)
+
+typedef struct xfs_dq_logitem {
+	xfs_log_item_t		qli_item;	/* common portion */
+	struct xfs_dquot	*qli_dquot;	/* dquot ptr */
+	xfs_lsn_t		qli_flush_lsn;	/* lsn at last flush */
+	xfs_dq_logformat_t	qli_format;	/* logged structure */
+} xfs_dq_logitem_t;
+
+typedef struct xfs_qoff_logitem {
+	xfs_log_item_t		qql_item;	/* common portion */
+	struct xfs_qoff_logitem	*qql_start_lip;	/* qoff-start logitem, if any */
+	xfs_qoff_logformat_t	qql_format;	/* logged structure */
+} xfs_qoff_logitem_t;
+
+typedef struct xfs_trans {
+	unsigned int	t_type;			/* transaction type */
+	unsigned int	t_log_res;		/* amt of log space resvd */
+	unsigned int	t_log_count;		/* count for perm log res */
+	struct xfs_mount *t_mountp;		/* ptr to fs mount struct */
+	unsigned int	t_flags;		/* misc flags */
+	long		t_icount_delta;		/* superblock icount change */
+	long		t_ifree_delta;		/* superblock ifree change */
+	long		t_fdblocks_delta;	/* superblock fdblocks chg */
+	long		t_frextents_delta;	/* superblock freextents chg */
+	struct list_head	t_items;	/* first log item desc chunk */
+} xfs_trans_t;
+
+void	xfs_trans_init(struct xfs_mount *);
+int	xfs_trans_roll(struct xfs_trans **, struct xfs_inode *);
+
+xfs_trans_t	*libxfs_trans_alloc(struct xfs_mount *, int);
+xfs_trans_t	*libxfs_trans_dup(struct xfs_trans *);
+int	libxfs_trans_reserve(struct xfs_trans *, struct xfs_trans_res *,
+				     uint, uint);
+int	libxfs_trans_commit(struct xfs_trans *, uint);
+void	libxfs_trans_cancel(struct xfs_trans *, int);
+struct xfs_buf *libxfs_trans_getsb(struct xfs_trans *, struct xfs_mount *, int);
+
+int	libxfs_trans_iget(struct xfs_mount *, struct xfs_trans *, xfs_ino_t,
+				uint, uint, struct xfs_inode **);
+void	libxfs_trans_ijoin(struct xfs_trans *, struct xfs_inode *, uint);
+void	libxfs_trans_ijoin_ref(struct xfs_trans *, struct xfs_inode *, int);
+void	libxfs_trans_log_inode (struct xfs_trans *, struct xfs_inode *,
+				uint);
+
+void	libxfs_trans_brelse(struct xfs_trans *, struct xfs_buf *);
+void	libxfs_trans_binval(struct xfs_trans *, struct xfs_buf *);
+void	libxfs_trans_bjoin(struct xfs_trans *, struct xfs_buf *);
+void	libxfs_trans_bhold(struct xfs_trans *, struct xfs_buf *);
+void	libxfs_trans_log_buf(struct xfs_trans *, struct xfs_buf *,
+				uint, uint);
+
+struct xfs_buf	*libxfs_trans_get_buf_map(struct xfs_trans *tp,
+					struct xfs_buftarg *btp,
+					struct xfs_buf_map *map, int nmaps,
+					uint flags);
+
+int	libxfs_trans_read_buf_map(struct xfs_mount *mp, struct xfs_trans *tp,
+				  struct xfs_buftarg *btp,
+				  struct xfs_buf_map *map, int nmaps,
+				  uint flags, struct xfs_buf **bpp,
+				  const struct xfs_buf_ops *ops);
+static inline struct xfs_buf *
+libxfs_trans_get_buf(
+	struct xfs_trans	*tp,
+	struct xfs_buftarg	*btp,
+	xfs_daddr_t		blkno,
+	int			numblks,
+	uint			flags)
+{
+	DEFINE_SINGLE_BUF_MAP(map, blkno, numblks);
+	return libxfs_trans_get_buf_map(tp, btp, &map, 1, flags);
+}
+
+static inline int
+libxfs_trans_read_buf(
+	struct xfs_mount	*mp,
+	struct xfs_trans	*tp,
+	struct xfs_buftarg	*btp,
+	xfs_daddr_t		blkno,
+	int			numblks,
+	uint			flags,
+	struct xfs_buf		**bpp,
+	const struct xfs_buf_ops *ops)
+{
+	DEFINE_SINGLE_BUF_MAP(map, blkno, numblks);
+	return libxfs_trans_read_buf_map(mp, tp, btp, &map, 1, flags, bpp, ops);
+}
+
+#endif	/* __XFS_TRANS_H__ */
diff --git a/libxfs/Makefile b/libxfs/Makefile
index 0b67ea0..51b98ec 100644
--- a/libxfs/Makefile
+++ b/libxfs/Makefile
@@ -45,7 +45,8 @@
 	xfs_sb.h \
 	xfs_shared.h \
 	xfs_trans_resv.h \
-	xfs_trans_space.h
+	xfs_trans_space.h \
+	libxfs_io.h
 
 CFILES = cache.c \
 	crc32.c \
diff --git a/libxfs/cache.c b/libxfs/cache.c
index 7509d95..105d2f9 100644
--- a/libxfs/cache.c
+++ b/libxfs/cache.c
@@ -22,10 +22,13 @@
 #include <unistd.h>
 #include <pthread.h>
 
-#include <xfs/platform_defs.h>
-#include <xfs/list.h>
-#include <xfs/cache.h>
-#include <xfs/libxfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_bit.h"
 
 #define CACHE_DEBUG 1
 #undef CACHE_DEBUG
diff --git a/libxfs/crc32.c b/libxfs/crc32.c
index 0f847d2..0a8d309 100644
--- a/libxfs/crc32.c
+++ b/libxfs/crc32.c
@@ -33,7 +33,10 @@
  * match the hardware acceleration available on Intel CPUs.
  */
 
-#include <libxfs.h>
+//#include <libxfs.h>
+#include <xfs/platform_defs.h>
+#include <xfs/swab.h>
+#include <xfs/xfs_arch.h>
 #include "crc32defs.h"
 
 /* types specifc to this file */
diff --git a/libxfs/init.c b/libxfs/init.c
index 9805448..42fa7af 100644
--- a/libxfs/init.c
+++ b/libxfs/init.c
@@ -16,10 +16,23 @@
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-#include <xfs.h>
 #include <sys/stat.h>
 #include "init.h"
 
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_inode_buf.h"
+#include "xfs_inode_fork.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
+
+#include <xfs/libxfs.h>		/* for now */
+
 char *progname = "libxfs";	/* default, changed by each tool */
 
 struct cache *libxfs_bcache;	/* global buffer cache */
@@ -387,7 +400,7 @@
 	}
 	/* otherwise initialise zone allocation */
 	xfs_buf_zone = kmem_zone_init(sizeof(xfs_buf_t), "xfs_buffer");
-	xfs_inode_zone = kmem_zone_init(sizeof(xfs_inode_t), "xfs_inode");
+	xfs_inode_zone = kmem_zone_init(sizeof(struct xfs_inode), "xfs_inode");
 	xfs_ifork_zone = kmem_zone_init(sizeof(xfs_ifork_t), "xfs_ifork");
 	xfs_ili_zone = kmem_zone_init(
 			sizeof(xfs_inode_log_item_t), "xfs_inode_log_item");
diff --git a/libxfs/kmem.c b/libxfs/kmem.c
index 5d3b9b6..c2b91fd 100644
--- a/libxfs/kmem.c
+++ b/libxfs/kmem.c
@@ -1,6 +1,6 @@
 
 
-#include <xfs/libxfs.h>
+#include "xfs.h"
 
 /*
  * Simple memory interface
diff --git a/libxfs/libxfs_io.h b/libxfs/libxfs_io.h
new file mode 100644
index 0000000..0e6ed31
--- /dev/null
+++ b/libxfs/libxfs_io.h
@@ -0,0 +1,236 @@
+/*
+ * Copyright (c) 2000-2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write the Free Software Foundation,
+ * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __LIBXFS_IO_H_
+#define __LIBXFS_IO_H_
+
+/*
+ * Kernel equivalent buffer based I/O interface
+ */
+
+struct xfs_buf;
+struct xfs_mount;
+struct xfs_perag;
+
+/*
+ * IO verifier callbacks need the xfs_mount pointer, so we have to behave
+ * somewhat like the kernel now for userspace IO in terms of having buftarg
+ * based devices...
+ */
+struct xfs_buftarg {
+	struct xfs_mount	*bt_mount;
+	dev_t			dev;
+};
+
+extern void	libxfs_buftarg_init(struct xfs_mount *mp, dev_t ddev,
+				    dev_t logdev, dev_t rtdev);
+
+#define LIBXFS_BBTOOFF64(bbs)	(((xfs_off_t)(bbs)) << BBSHIFT)
+
+#define XB_PAGES        2
+struct xfs_buf_map {
+	xfs_daddr_t		bm_bn;  /* block number for I/O */
+	int			bm_len; /* size of I/O */
+};
+
+#define DEFINE_SINGLE_BUF_MAP(map, blkno, numblk) \
+	struct xfs_buf_map (map) = { .bm_bn = (blkno), .bm_len = (numblk) };
+
+struct xfs_buf_ops {
+	void (*verify_read)(struct xfs_buf *);
+	void (*verify_write)(struct xfs_buf *);
+};
+
+typedef struct xfs_buf {
+	struct cache_node	b_node;
+	unsigned int		b_flags;
+	xfs_daddr_t		b_bn;
+	unsigned		b_bcount;
+	unsigned int		b_length;
+	struct xfs_buftarg	*b_target;
+#define b_dev		b_target->dev
+	pthread_mutex_t		b_lock;
+	pthread_t		b_holder;
+	unsigned int		b_recur;
+	void			*b_fspriv;
+	void			*b_fsprivate2;
+	void			*b_fsprivate3;
+	void			*b_addr;
+	int			b_error;
+	const struct xfs_buf_ops *b_ops;
+	struct xfs_perag	*b_pag;
+	struct xfs_buf_map	*b_map;
+	int			b_nmaps;
+#ifdef XFS_BUF_TRACING
+	struct list_head	b_lock_list;
+	const char		*b_func;
+	const char		*b_file;
+	int			b_line;
+#endif
+} xfs_buf_t;
+
+enum xfs_buf_flags_t {	/* b_flags bits */
+	LIBXFS_B_EXIT		= 0x0001,	/* ==LIBXFS_EXIT_ON_FAILURE */
+	LIBXFS_B_DIRTY		= 0x0002,	/* buffer has been modified */
+	LIBXFS_B_STALE		= 0x0004,	/* buffer marked as invalid */
+	LIBXFS_B_UPTODATE	= 0x0008,	/* buffer is sync'd to disk */
+	LIBXFS_B_DISCONTIG	= 0x0010,	/* discontiguous buffer */
+	LIBXFS_B_UNCHECKED	= 0x0020,	/* needs verification */
+};
+
+#define XFS_BUF_DADDR_NULL		((xfs_daddr_t) (-1LL))
+
+#define XFS_BUF_PTR(bp)			((char *)(bp)->b_addr)
+#define xfs_buf_offset(bp, offset)	(XFS_BUF_PTR(bp) + (offset))
+#define XFS_BUF_ADDR(bp)		((bp)->b_bn)
+#define XFS_BUF_SIZE(bp)		((bp)->b_bcount)
+#define XFS_BUF_COUNT(bp)		((bp)->b_bcount)
+#define XFS_BUF_TARGET(bp)		((bp)->b_dev)
+#define XFS_BUF_SET_PTR(bp,p,cnt)	({	\
+	(bp)->b_addr = (char *)(p);		\
+	XFS_BUF_SET_COUNT(bp,cnt);		\
+})
+
+#define XFS_BUF_SET_ADDR(bp,blk)	((bp)->b_bn = (blk))
+#define XFS_BUF_SET_COUNT(bp,cnt)	((bp)->b_bcount = (cnt))
+
+#define XFS_BUF_FSPRIVATE(bp,type)	((type)(bp)->b_fspriv)
+#define XFS_BUF_SET_FSPRIVATE(bp,val)	(bp)->b_fspriv = (void *)(val)
+#define XFS_BUF_FSPRIVATE2(bp,type)	((type)(bp)->b_fsprivate2)
+#define XFS_BUF_SET_FSPRIVATE2(bp,val)	(bp)->b_fsprivate2 = (void *)(val)
+#define XFS_BUF_FSPRIVATE3(bp,type)	((type)(bp)->b_fsprivate3)
+#define XFS_BUF_SET_FSPRIVATE3(bp,val)	(bp)->b_fsprivate3 = (void *)(val)
+
+#define XFS_BUF_SET_PRIORITY(bp,pri)	cache_node_set_priority( \
+						libxfs_bcache, \
+						(struct cache_node *)(bp), \
+						(pri))
+#define XFS_BUF_PRIORITY(bp)		(cache_node_get_priority( \
+						(struct cache_node *)(bp)))
+#define xfs_buf_set_ref(bp,ref)		((void) 0)
+#define xfs_buf_ioerror(bp,err)		((bp)->b_error = (err))
+
+#define xfs_daddr_to_agno(mp,d) \
+	((xfs_agnumber_t)(XFS_BB_TO_FSBT(mp, d) / (mp)->m_sb.sb_agblocks))
+#define xfs_daddr_to_agbno(mp,d) \
+	((xfs_agblock_t)(XFS_BB_TO_FSBT(mp, d) % (mp)->m_sb.sb_agblocks))
+
+/* Buffer Cache Interfaces */
+
+extern struct cache	*libxfs_bcache;
+extern struct cache_operations	libxfs_bcache_operations;
+
+#define LIBXFS_GETBUF_TRYLOCK	(1 << 0)
+
+#ifdef XFS_BUF_TRACING
+
+#define libxfs_readbuf(dev, daddr, len, flags, ops) \
+	libxfs_trace_readbuf(__FUNCTION__, __FILE__, __LINE__, \
+			    (dev), (daddr), (len), (flags), (ops))
+#define libxfs_readbuf_map(dev, map, nmaps, flags, ops) \
+	libxfs_trace_readbuf_map(__FUNCTION__, __FILE__, __LINE__, \
+			    (dev), (map), (nmaps), (flags), (ops))
+#define libxfs_writebuf(buf, flags) \
+	libxfs_trace_writebuf(__FUNCTION__, __FILE__, __LINE__, \
+			      (buf), (flags))
+#define libxfs_getbuf(dev, daddr, len) \
+	libxfs_trace_getbuf(__FUNCTION__, __FILE__, __LINE__, \
+			    (dev), (daddr), (len))
+#define libxfs_getbuf_map(dev, map, nmaps, flags) \
+	libxfs_trace_getbuf_map(__FUNCTION__, __FILE__, __LINE__, \
+			    (dev), (map), (nmaps), (flags))
+#define libxfs_getbuf_flags(dev, daddr, len, flags) \
+	libxfs_trace_getbuf_flags(__FUNCTION__, __FILE__, __LINE__, \
+			    (dev), (daddr), (len), (flags))
+#define libxfs_putbuf(buf) \
+	libxfs_trace_putbuf(__FUNCTION__, __FILE__, __LINE__, (buf))
+
+extern xfs_buf_t *libxfs_trace_readbuf(const char *, const char *, int,
+			struct xfs_buftarg *, xfs_daddr_t, int, int,
+			const struct xfs_buf_ops *);
+extern xfs_buf_t *libxfs_trace_readbuf_map(const char *, const char *, int,
+			struct xfs_buftarg *, struct xfs_buf_map *, int, int,
+			const struct xfs_buf_ops *);
+extern int	libxfs_trace_writebuf(const char *, const char *, int,
+			xfs_buf_t *, int);
+extern xfs_buf_t *libxfs_trace_getbuf(const char *, const char *, int,
+			struct xfs_buftarg *, xfs_daddr_t, int);
+extern xfs_buf_t *libxfs_trace_getbuf_map(const char *, const char *, int,
+			struct xfs_buftarg *, struct xfs_buf_map *, int, int);
+extern xfs_buf_t *libxfs_trace_getbuf_flags(const char *, const char *, int,
+			struct xfs_buftarg *, xfs_daddr_t, int, unsigned int);
+extern void	libxfs_trace_putbuf (const char *, const char *, int,
+			xfs_buf_t *);
+
+#else
+
+extern xfs_buf_t *libxfs_readbuf(struct xfs_buftarg *, xfs_daddr_t, int, int,
+			const struct xfs_buf_ops *);
+extern xfs_buf_t *libxfs_readbuf_map(struct xfs_buftarg *, struct xfs_buf_map *,
+			int, int, const struct xfs_buf_ops *);
+extern int	libxfs_writebuf(xfs_buf_t *, int);
+extern xfs_buf_t *libxfs_getbuf(struct xfs_buftarg *, xfs_daddr_t, int);
+extern xfs_buf_t *libxfs_getbuf_map(struct xfs_buftarg *,
+			struct xfs_buf_map *, int, int);
+extern xfs_buf_t *libxfs_getbuf_flags(struct xfs_buftarg *, xfs_daddr_t,
+			int, unsigned int);
+extern void	libxfs_putbuf (xfs_buf_t *);
+
+#endif
+
+extern void	libxfs_readbuf_verify(struct xfs_buf *bp,
+			const struct xfs_buf_ops *ops);
+extern xfs_buf_t *libxfs_getsb(struct xfs_mount *, int);
+extern void	libxfs_bcache_purge(void);
+extern void	libxfs_bcache_flush(void);
+extern void	libxfs_purgebuf(xfs_buf_t *);
+extern int	libxfs_bcache_overflowed(void);
+extern int	libxfs_bcache_usage(void);
+
+/* Buffer (Raw) Interfaces */
+extern xfs_buf_t *libxfs_getbufr(struct xfs_buftarg *, xfs_daddr_t, int);
+extern void	libxfs_putbufr(xfs_buf_t *);
+
+extern int	libxfs_writebuf_int(xfs_buf_t *, int);
+extern int	libxfs_writebufr(struct xfs_buf *);
+extern int	libxfs_readbufr(struct xfs_buftarg *, xfs_daddr_t, xfs_buf_t *, int, int);
+extern int	libxfs_readbufr_map(struct xfs_buftarg *, struct xfs_buf *, int);
+
+extern int libxfs_bhash_size;
+
+#define LIBXFS_BREAD	0x1
+#define LIBXFS_BWRITE	0x2
+#define LIBXFS_BZERO	0x4
+
+extern void	libxfs_iomove (xfs_buf_t *, uint, int, void *, int);
+
+static inline int
+xfs_buf_verify_cksum(struct xfs_buf *bp, unsigned long cksum_offset)
+{
+	return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length),
+				cksum_offset);
+}
+
+static inline void
+xfs_buf_update_cksum(struct xfs_buf *bp, unsigned long cksum_offset)
+{
+	xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length),
+			 cksum_offset);
+}
+
+#endif	/* __LIBXFS_IO_H__ */
diff --git a/libxfs/linux.c b/libxfs/linux.c
index 8d1a117..f16a51c 100644
--- a/libxfs/linux.c
+++ b/libxfs/linux.c
@@ -17,7 +17,6 @@
  */
 
 #define ustat __kernel_ustat
-#include <xfs/libxfs.h>
 #include <mntent.h>
 #include <sys/stat.h>
 #undef ustat
@@ -26,6 +25,9 @@
 #include <sys/ioctl.h>
 #include <sys/sysinfo.h>
 
+#include "xfs.h"
+#include "xfs_fs.h"
+
 int platform_has_uuid = 1;
 extern char *progname;
 static int max_block_alignment;
diff --git a/libxfs/logitem.c b/libxfs/logitem.c
index 73d5a9e..31d8005 100644
--- a/libxfs/logitem.c
+++ b/libxfs/logitem.c
@@ -16,7 +16,17 @@
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_inode_buf.h"
+#include "xfs_inode_fork.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
 
 kmem_zone_t	*xfs_buf_item_zone;
 kmem_zone_t	*xfs_ili_zone;		/* inode log item zone */
diff --git a/libxfs/radix-tree.c b/libxfs/radix-tree.c
index dbb3e76..c4b6971 100644
--- a/libxfs/radix-tree.c
+++ b/libxfs/radix-tree.c
@@ -18,7 +18,7 @@
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#include <libxfs.h>
+#include <xfs/platform_defs.h>
 #include "radix-tree.h"
 
 #ifndef ARRAY_SIZE
diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c
index 8ed534a..9f8d600 100644
--- a/libxfs/rdwr.c
+++ b/libxfs/rdwr.c
@@ -16,8 +16,21 @@
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+
 #include "xfs.h"
 #include "init.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_inode_buf.h"
+#include "xfs_inode_fork.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
+
+#include <xfs/libxfs.h>		/* for now */
 
 /*
  * Important design/architecture note:
diff --git a/libxfs/trans.c b/libxfs/trans.c
index 261757f..a24057b 100644
--- a/libxfs/trans.c
+++ b/libxfs/trans.c
@@ -17,7 +17,18 @@
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_inode_buf.h"
+#include "xfs_inode_fork.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
+#include "xfs_sb.h"
 
 /*
  * Simple transaction interface
diff --git a/libxfs/util.c b/libxfs/util.c
index 0bfc415..0eeb586 100644
--- a/libxfs/util.c
+++ b/libxfs/util.c
@@ -16,10 +16,23 @@
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-#include <xfs.h>
-#include <time.h>
-#include <stdio.h>
-#include <stdarg.h>
+#include "xfs.h"
+#include "init.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_inode_buf.h"
+#include "xfs_inode_fork.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
+#include "xfs_bmap.h"
+#include "xfs_bmap_btree.h"
+#include "xfs_trans_space.h"
+#include "xfs_ialloc.h"
+#include "xfs_alloc.h"
 
 /*
  * Calculate the worst case log unit reservation for a given superblock
@@ -465,7 +478,7 @@
 int
 libxfs_mod_incore_sb(
 	xfs_mount_t	*mp,
-	xfs_sb_field_t	field,
+	int		field,
 	int64_t		delta,
 	int		rsvd)
 {
diff --git a/libxfs/xfs.h b/libxfs/xfs.h
index 18a443a..eef2804 100644
--- a/libxfs/xfs.h
+++ b/libxfs/xfs.h
@@ -46,8 +46,8 @@
  * define a guard and something we can check to determine what include context
  * we are running from.
  */
-#ifndef __LIBXFS_INTERNAL_XFS_H
-#define __LIBXFS_INTERNAL_XFS_H
+#ifndef __LIBXFS_INTERNAL_XFS_H__
+#define __LIBXFS_INTERNAL_XFS_H__
 
 /*
  * start by remapping all the symbols we expect external users to call
@@ -160,8 +160,39 @@
  * Now we've renamed and mapped everything, include the rest of the external
  * libxfs headers.
  */
-#include <xfs/libxfs.h>
-#include "xfs_dir2_priv.h"
+#include <xfs/platform_defs.h>
+
+#include <xfs/list.h>
+#include <xfs/hlist.h>
+#include <xfs/cache.h>
+#include <xfs/bitops.h>
+#include <xfs/kmem.h>
+#include <xfs/radix-tree.h>
+#include <xfs/swab.h>
+#include <xfs/atomic.h>
+
+#include <xfs/xfs_types.h>
+#include <xfs/xfs_arch.h>
+
+#include <xfs/xfs_fs.h>
+
+/* CRC stuff, buffer API dependent on it */
+extern uint32_t crc32_le(uint32_t crc, unsigned char const *p, size_t len);
+extern uint32_t crc32c_le(uint32_t crc, unsigned char const *p, size_t len);
+
+#define crc32(c,p,l)	crc32_le((c),(unsigned char const *)(p),(l))
+#define crc32c(c,p,l)	crc32c_le((c),(unsigned char const *)(p),(l))
+
+#include <xfs/xfs_cksum.h>
+
+/*
+ * This mirrors the kernel include for xfs_buf.h - it's implicitly included in
+ * every files via a similar include in the kernel xfs_linux.h.
+ */
+#include <xfs/libxfs_io.h>
+
+/* for all the support code that uses progname in error messages */
+extern char    *progname;
 
 #undef ASSERT
 #define ASSERT(ex) assert(ex)
@@ -169,40 +200,6 @@
 typedef __uint32_t		uint_t;
 typedef __uint32_t		inst_t;		/* an instruction */
 
-/*
- * Argument structure for xfs_bmap_alloc.
- */
-typedef struct xfs_bmalloca {
-	xfs_fsblock_t		*firstblock; /* i/o first block allocated */
-	struct xfs_bmap_free    *flist;	/* bmap freelist */
-	struct xfs_trans        *tp;	/* transaction pointer */
-	struct xfs_inode        *ip;	/* incore inode pointer */
-	struct xfs_bmbt_irec    prev;	/* extent before the new one */
-	struct xfs_bmbt_irec    got;	/* extent after, or delayed */
-
-	xfs_fileoff_t		offset;	/* offset in file filling in */
-	xfs_extlen_t		length;	/* i/o length asked/allocated */
-	xfs_fsblock_t		blkno;	/* starting block of new extent */
-
-	struct xfs_btree_cur    *cur;	/* btree cursor */
-	xfs_extnum_t		idx;	/* current extent index */
-	int			nallocs;/* number of extents alloc'd */
-	int			logflags;/* flags for transaction logging */
-
-	xfs_extlen_t		total;	/* total blocks needed for xaction */
-	xfs_extlen_t		minlen;	/* minimum allocation size (blocks) */
-	xfs_extlen_t		minleft; /* amount must be left after alloc */
-	char			eof;	/* set if allocating past last extent */
-	char			wasdel;	/* replacing a delayed allocation */
-	char			userdata;/* set if is user data */
-	char			aeof;	/* allocated space at eof */
-	char			conv;	/* overwriting unwritten extents */
-	char			stack_switch;
-	int			flags;
-} xfs_bmalloca_t;
-
-#define xfs_bmapi_allocate		__xfs_bmapi_allocate
-
 #ifndef EWRONGFS
 #define EWRONGFS	EINVAL
 #endif
@@ -211,10 +208,11 @@
 
 #define STATIC				static
 
-#define ATTR_ROOT			LIBXFS_ATTR_ROOT
-#define ATTR_SECURE			LIBXFS_ATTR_SECURE
-#define ATTR_CREATE			LIBXFS_ATTR_CREATE
-#define ATTR_REPLACE			LIBXFS_ATTR_REPLACE
+/* XXX: need to push these out to make LIBXFS_ATTR defines */
+#define ATTR_ROOT			0x0002
+#define ATTR_SECURE			0x0008
+#define ATTR_CREATE			0x0010
+#define ATTR_REPLACE			0x0020
 #define ATTR_KERNOTIME			0
 #define ATTR_KERNOVAL			0
 
@@ -223,6 +221,14 @@
 #define XFS_IGET_CREATE			0x1
 #define XFS_IGET_UNTRUSTED		0x2
 
+extern void cmn_err(int, char *, ...);
+enum ce { CE_DEBUG, CE_CONT, CE_NOTE, CE_WARN, CE_ALERT, CE_PANIC };
+
+#define xfs_notice(mp,fmt,args...)		cmn_err(CE_NOTE,fmt, ## args)
+#define xfs_warn(mp,fmt,args...)		cmn_err(CE_WARN,fmt, ## args)
+#define xfs_hex_dump(d,n)		((void) 0)
+
+
 /* stop unused var warnings by assigning mp to itself */
 #define XFS_CORRUPTION_ERROR(e,l,mp,m)	do { \
 	(mp) = (mp); \
@@ -333,6 +339,10 @@
 	return x * y;
 }
 
+#define __round_mask(x, y) ((__typeof__(x))((y)-1))
+#define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1)
+#define round_down(x, y) ((x) & ~__round_mask(x, y))
+
 /* buffer management */
 #define XFS_BUF_LOCK			0
 #define XFS_BUF_TRYLOCK			0
@@ -472,32 +482,31 @@
 
 /*
  * Prototypes for kernel static functions that are aren't in their
- * associated header files
+ * associated header files.
  */
+struct xfs_da_args;
+struct xfs_bmap_free;
+struct xfs_bmap_free_item;
+struct xfs_mount;
+struct xfs_sb;
+struct xfs_trans;
+struct xfs_inode;
+struct xfs_log_item;
+struct xfs_buf;
+struct xfs_buf_map;
+struct xfs_buf_log_item;
+struct xfs_buftarg;
 
 /* xfs_attr.c */
 int xfs_attr_rmtval_get(struct xfs_da_args *);
 
 /* xfs_bmap.c */
-void xfs_bmap_del_free(xfs_bmap_free_t *, xfs_bmap_free_item_t *,
-			xfs_bmap_free_item_t *);
-
-/*
- * For regular files we only update the on-disk filesize when actually
- * writing data back to disk.  Until then only the copy in the VFS inode
- * is uptodate.
- */
-static inline xfs_fsize_t XFS_ISIZE(struct xfs_inode *ip)
-{
-	if (S_ISREG(ip->i_d.di_mode))
-		return ip->i_size;
-	return ip->i_d.di_size;
-}
-#define XFS_IS_REALTIME_INODE(ip) ((ip)->i_d.di_flags & XFS_DIFLAG_REALTIME)
+void xfs_bmap_del_free(struct xfs_bmap_free *, struct xfs_bmap_free_item *,
+			struct xfs_bmap_free_item *);
 
 /* xfs_mount.c */
-int xfs_initialize_perag_data(xfs_mount_t *, xfs_agnumber_t);
-void xfs_mount_common(xfs_mount_t *, xfs_sb_t *);
+int xfs_initialize_perag_data(struct xfs_mount *, xfs_agnumber_t);
+void xfs_mount_common(struct xfs_mount *, struct xfs_sb *);
 
 /*
  * logitem.c and trans.c prototypes
@@ -511,21 +520,25 @@
 void xfs_trans_free_items(struct xfs_trans *, int);
 
 /* xfs_inode_item.c */
-void xfs_inode_item_init (xfs_inode_t *, xfs_mount_t *);
+void xfs_inode_item_init(struct xfs_inode *, struct xfs_mount *);
 
 /* xfs_buf_item.c */
-void xfs_buf_item_init (xfs_buf_t *, xfs_mount_t *);
-void xfs_buf_item_log (xfs_buf_log_item_t *, uint, uint);
+void xfs_buf_item_init(struct xfs_buf *, struct xfs_mount *);
+void xfs_buf_item_log(struct xfs_buf_log_item *, uint, uint);
 
 /* xfs_trans_buf.c */
-xfs_buf_t *xfs_trans_buf_item_match(xfs_trans_t *, struct xfs_buftarg *,
-			struct xfs_buf_map *, int);
+struct xfs_buf *xfs_trans_buf_item_match(struct xfs_trans *,
+			struct xfs_buftarg *, struct xfs_buf_map *, int);
 
 /* local source files */
-int  xfs_mod_incore_sb(xfs_mount_t *, xfs_sb_field_t, int64_t, int);
-void xfs_trans_mod_sb(xfs_trans_t *, uint, long);
+int  xfs_mod_incore_sb(struct xfs_mount *, int, int64_t, int);
+void xfs_trans_mod_sb(struct xfs_trans *, uint, long);
 void xfs_trans_init(struct xfs_mount *);
 int  xfs_trans_roll(struct xfs_trans **, struct xfs_inode *);
 void xfs_verifier_error(struct xfs_buf *bp);
 
-#endif	/* __LIBXFS_INTERNAL_XFS_H */
+/* XXX: this is clearly a bug - a shared header needs to export this */
+/* xfs_rtalloc.c */
+int libxfs_rtfree_extent(struct xfs_trans *, xfs_rtblock_t, xfs_extlen_t);
+
+#endif	/* __LIBXFS_INTERNAL_XFS_H__ */
diff --git a/libxfs/xfs_alloc.c b/libxfs/xfs_alloc.c
index d33b4c5..98d794d 100644
--- a/libxfs/xfs_alloc.c
+++ b/libxfs/xfs_alloc.c
@@ -15,7 +15,22 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_shared.h"
+#include "xfs_trans_resv.h"
+#include "xfs_bit.h"
+#include "xfs_sb.h"
+#include "xfs_mount.h"
+#include "xfs_inode.h"
+#include "xfs_btree.h"
+#include "xfs_alloc_btree.h"
+#include "xfs_alloc.h"
+#include "xfs_cksum.h"
+#include "xfs_trace.h"
+#include "xfs_trans.h"
 
 struct workqueue_struct *xfs_alloc_wq;
 
diff --git a/libxfs/xfs_alloc_btree.c b/libxfs/xfs_alloc_btree.c
index 2d75589..20a072d 100644
--- a/libxfs/xfs_alloc_btree.c
+++ b/libxfs/xfs_alloc_btree.c
@@ -15,7 +15,21 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_sb.h"
+#include "xfs_mount.h"
+#include "xfs_btree.h"
+#include "xfs_alloc_btree.h"
+#include "xfs_alloc.h"
+#include "xfs_trace.h"
+#include "xfs_cksum.h"
+#include "xfs_trans.h"
+
 
 STATIC struct xfs_btree_cur *
 xfs_allocbt_dup_cursor(
diff --git a/libxfs/xfs_attr.c b/libxfs/xfs_attr.c
index 5aa8c4f..00a319b 100644
--- a/libxfs/xfs_attr.c
+++ b/libxfs/xfs_attr.c
@@ -15,8 +15,26 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_bit.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_da_btree.h"
+#include "xfs_attr_sf.h"
+#include "xfs_inode.h"
+#include "xfs_alloc.h"
+#include "xfs_trans.h"
+#include "xfs_bmap.h"
+#include "xfs_bmap_btree.h"
+#include "xfs_attr_leaf.h"
+#include "xfs_attr_remote.h"
+#include "xfs_trans_space.h"
+#include "xfs_trace.h"
 
 /*
  * xfs_attr.c
diff --git a/libxfs/xfs_attr_leaf.c b/libxfs/xfs_attr_leaf.c
index 7331c85..418138b 100644
--- a/libxfs/xfs_attr_leaf.c
+++ b/libxfs/xfs_attr_leaf.c
@@ -16,8 +16,28 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_bit.h"
+#include "xfs_sb.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_da_btree.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
+#include "xfs_bmap_btree.h"
+#include "xfs_bmap.h"
+#include "xfs_attr_sf.h"
+#include "xfs_attr_remote.h"
+#include "xfs_attr_leaf.h"
+#include "xfs_trace.h"
+#include "xfs_cksum.h"
+#include "xfs_dir2.h"
 
-#include <xfs.h>
 
 /*
  * xfs_attr_leaf.c
diff --git a/libxfs/xfs_attr_leaf.h b/libxfs/xfs_attr_leaf.h
index e2929da..a50f56e 100644
--- a/libxfs/xfs_attr_leaf.h
+++ b/libxfs/xfs_attr_leaf.h
@@ -52,7 +52,7 @@
 int	xfs_attr_shortform_remove(struct xfs_da_args *args);
 int	xfs_attr_shortform_list(struct xfs_attr_list_context *context);
 int	xfs_attr_shortform_allfit(struct xfs_buf *bp, struct xfs_inode *dp);
-int	xfs_attr_shortform_bytesfit(xfs_inode_t *dp, int bytes);
+int	xfs_attr_shortform_bytesfit(struct xfs_inode *dp, int bytes);
 
 
 /*
diff --git a/libxfs/xfs_attr_remote.c b/libxfs/xfs_attr_remote.c
index 23d1871..356b2e0 100644
--- a/libxfs/xfs_attr_remote.c
+++ b/libxfs/xfs_attr_remote.c
@@ -16,7 +16,25 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_bit.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_da_btree.h"
+#include "xfs_inode.h"
+#include "xfs_alloc.h"
+#include "xfs_trans.h"
+#include "xfs_bmap.h"
+#include "xfs_attr_leaf.h"
+#include "xfs_attr_remote.h"
+#include "xfs_trans_space.h"
+#include "xfs_trace.h"
+#include "xfs_cksum.h"
 
 #define ATTR_RMTVALUE_MAPSIZE	1	/* # of map entries at once */
 
diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c
index 9915847..1e2d385 100644
--- a/libxfs/xfs_bmap.c
+++ b/libxfs/xfs_bmap.c
@@ -15,7 +15,29 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_bit.h"
+#include "xfs_sb.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_da_btree.h"
+#include "xfs_dir2.h"
+#include "xfs_inode.h"
+#include "xfs_btree.h"
+#include "xfs_trans.h"
+#include "xfs_alloc.h"
+#include "xfs_bmap.h"
+#include "xfs_bmap_btree.h"
+#include "xfs_trans_space.h"
+#include "xfs_trace.h"
+#include "xfs_attr_leaf.h"
+#include "xfs_quota_defs.h"
+
 
 kmem_zone_t		*xfs_bmap_free_item_zone;
 
diff --git a/libxfs/xfs_bmap.h b/libxfs/xfs_bmap.h
index 44db6db..ea53ce3 100644
--- a/libxfs/xfs_bmap.h
+++ b/libxfs/xfs_bmap.h
@@ -28,6 +28,38 @@
 extern kmem_zone_t	*xfs_bmap_free_item_zone;
 
 /*
+ * Argument structure for xfs_bmap_alloc.
+ */
+struct xfs_bmalloca {
+	xfs_fsblock_t		*firstblock; /* i/o first block allocated */
+	struct xfs_bmap_free    *flist;	/* bmap freelist */
+	struct xfs_trans        *tp;	/* transaction pointer */
+	struct xfs_inode        *ip;	/* incore inode pointer */
+	struct xfs_bmbt_irec    prev;	/* extent before the new one */
+	struct xfs_bmbt_irec    got;	/* extent after, or delayed */
+
+	xfs_fileoff_t		offset;	/* offset in file filling in */
+	xfs_extlen_t		length;	/* i/o length asked/allocated */
+	xfs_fsblock_t		blkno;	/* starting block of new extent */
+
+	struct xfs_btree_cur    *cur;	/* btree cursor */
+	xfs_extnum_t		idx;	/* current extent index */
+	int			nallocs;/* number of extents alloc'd */
+	int			logflags;/* flags for transaction logging */
+
+	xfs_extlen_t		total;	/* total blocks needed for xaction */
+	xfs_extlen_t		minlen;	/* minimum allocation size (blocks) */
+	xfs_extlen_t		minleft; /* amount must be left after alloc */
+	char			eof;	/* set if allocating past last extent */
+	char			wasdel;	/* replacing a delayed allocation */
+	char			userdata;/* set if is user data */
+	char			aeof;	/* allocated space at eof */
+	char			conv;	/* overwriting unwritten extents */
+	char			stack_switch;
+	int			flags;
+};
+
+/*
  * List of extents to be free "later".
  * The list is kept sorted on xbf_startblock.
  */
@@ -149,6 +181,8 @@
 void	xfs_bmap_add_free(xfs_fsblock_t bno, xfs_filblks_t len,
 		struct xfs_bmap_free *flist, struct xfs_mount *mp);
 void	xfs_bmap_cancel(struct xfs_bmap_free *flist);
+int	xfs_bmap_finish(struct xfs_trans **tp, struct xfs_bmap_free *flist,
+			int *committed);
 void	xfs_bmap_compute_maxlevels(struct xfs_mount *mp, int whichfork);
 int	xfs_bmap_first_unused(struct xfs_trans *tp, struct xfs_inode *ip,
 		xfs_extlen_t len, xfs_fileoff_t *unused, int whichfork);
diff --git a/libxfs/xfs_bmap_btree.c b/libxfs/xfs_bmap_btree.c
index 7b8b307..f1ad2f9 100644
--- a/libxfs/xfs_bmap_btree.c
+++ b/libxfs/xfs_bmap_btree.c
@@ -15,7 +15,22 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_bit.h"
+#include "xfs_mount.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
+#include "xfs_alloc.h"
+#include "xfs_btree.h"
+#include "xfs_bmap_btree.h"
+#include "xfs_bmap.h"
+#include "xfs_trace.h"
+#include "xfs_cksum.h"
 
 /*
  * Determine the extent state.
diff --git a/libxfs/xfs_btree.c b/libxfs/xfs_btree.c
index c0896c9..c7933d7 100644
--- a/libxfs/xfs_btree.c
+++ b/libxfs/xfs_btree.c
@@ -15,8 +15,20 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_bit.h"
+#include "xfs_mount.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
+#include "xfs_btree.h"
+#include "xfs_trace.h"
+#include "xfs_cksum.h"
+#include "xfs_alloc.h"
 
 /*
  * Cursor allocation zone.
diff --git a/libxfs/xfs_da_btree.c b/libxfs/xfs_da_btree.c
index 33dc333..0f84d10 100644
--- a/libxfs/xfs_da_btree.c
+++ b/libxfs/xfs_da_btree.c
@@ -16,8 +16,25 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_bit.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_da_btree.h"
+#include "xfs_dir2.h"
+#include "xfs_dir2_priv.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
+#include "xfs_alloc.h"
+#include "xfs_bmap.h"
+#include "xfs_attr_leaf.h"
+#include "xfs_trace.h"
+#include "xfs_cksum.h"
 
 /*
  * xfs_da_btree.c
diff --git a/libxfs/xfs_da_format.c b/libxfs/xfs_da_format.c
index fe20fff..9d624a6 100644
--- a/libxfs/xfs_da_format.c
+++ b/libxfs/xfs_da_format.c
@@ -16,7 +16,18 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_da_btree.h"
+#include "xfs_inode.h"
+#include "xfs_dir2.h"
+#include "xfs_dir2_priv.h"
 
 /*
  * Shortform directory ops
diff --git a/libxfs/xfs_dir2.c b/libxfs/xfs_dir2.c
index 0be516f..9ad9540 100644
--- a/libxfs/xfs_dir2.c
+++ b/libxfs/xfs_dir2.c
@@ -15,8 +15,20 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_da_btree.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
+#include "xfs_bmap.h"
+#include "xfs_dir2.h"
+#include "xfs_dir2_priv.h"
+#include "xfs_trace.h"
 
 struct xfs_name xfs_name_dotdot = { (unsigned char *)"..", 2, XFS_DIR3_FT_DIR };
 
diff --git a/libxfs/xfs_dir2_block.c b/libxfs/xfs_dir2_block.c
index 40d7851..4ca3cc5 100644
--- a/libxfs/xfs_dir2_block.c
+++ b/libxfs/xfs_dir2_block.c
@@ -16,8 +16,21 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_da_btree.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
+#include "xfs_bmap.h"
+#include "xfs_dir2.h"
+#include "xfs_dir2_priv.h"
+#include "xfs_trace.h"
+#include "xfs_cksum.h"
 
 /*
  * Local function prototypes.
diff --git a/libxfs/xfs_dir2_data.c b/libxfs/xfs_dir2_data.c
index b3cb3e8..8946916 100644
--- a/libxfs/xfs_dir2_data.c
+++ b/libxfs/xfs_dir2_data.c
@@ -16,8 +16,19 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_da_btree.h"
+#include "xfs_inode.h"
+#include "xfs_dir2.h"
+#include "xfs_dir2_priv.h"
+#include "xfs_trans.h"
+#include "xfs_cksum.h"
 
 /*
  * Check the consistency of the data block.
diff --git a/libxfs/xfs_dir2_leaf.c b/libxfs/xfs_dir2_leaf.c
index adc43b4..8636b27 100644
--- a/libxfs/xfs_dir2_leaf.c
+++ b/libxfs/xfs_dir2_leaf.c
@@ -16,8 +16,21 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_da_btree.h"
+#include "xfs_inode.h"
+#include "xfs_bmap.h"
+#include "xfs_dir2.h"
+#include "xfs_dir2_priv.h"
+#include "xfs_trace.h"
+#include "xfs_trans.h"
+#include "xfs_cksum.h"
 
 /*
  * Local function declarations.
diff --git a/libxfs/xfs_dir2_node.c b/libxfs/xfs_dir2_node.c
index cdd06dc..d7e6850 100644
--- a/libxfs/xfs_dir2_node.c
+++ b/libxfs/xfs_dir2_node.c
@@ -16,8 +16,21 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_da_btree.h"
+#include "xfs_inode.h"
+#include "xfs_bmap.h"
+#include "xfs_dir2.h"
+#include "xfs_dir2_priv.h"
+#include "xfs_trace.h"
+#include "xfs_trans.h"
+#include "xfs_cksum.h"
 
 /*
  * Function declarations.
diff --git a/libxfs/xfs_dir2_sf.c b/libxfs/xfs_dir2_sf.c
index 020856b..f549afe 100644
--- a/libxfs/xfs_dir2_sf.c
+++ b/libxfs/xfs_dir2_sf.c
@@ -15,7 +15,19 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_da_btree.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
+#include "xfs_dir2.h"
+#include "xfs_dir2_priv.h"
+#include "xfs_trace.h"
 
 /*
  * Prototypes for internal functions.
diff --git a/libxfs/xfs_dquot_buf.c b/libxfs/xfs_dquot_buf.c
index 97ac60c..8582798 100644
--- a/libxfs/xfs_dquot_buf.c
+++ b/libxfs/xfs_dquot_buf.c
@@ -17,6 +17,17 @@
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 #include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
+#include "xfs_cksum.h"
+#include "xfs_trace.h"
+#include "xfs_quota_defs.h"
 
 /*
  * XXX: kernel implementation causes ndquots calc to go real
diff --git a/libxfs/xfs_ialloc.c b/libxfs/xfs_ialloc.c
index a2aaff5..15e3a39 100644
--- a/libxfs/xfs_ialloc.c
+++ b/libxfs/xfs_ialloc.c
@@ -15,8 +15,24 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_bit.h"
+#include "xfs_sb.h"
+#include "xfs_mount.h"
+#include "xfs_inode.h"
+#include "xfs_btree.h"
+#include "xfs_ialloc.h"
+#include "xfs_ialloc_btree.h"
+#include "xfs_alloc.h"
+#include "xfs_bmap.h"
+#include "xfs_cksum.h"
+#include "xfs_trans.h"
+#include "xfs_trace.h"
 
 
 /*
diff --git a/libxfs/xfs_ialloc_btree.c b/libxfs/xfs_ialloc_btree.c
index 55799b4..fd62c7f 100644
--- a/libxfs/xfs_ialloc_btree.c
+++ b/libxfs/xfs_ialloc_btree.c
@@ -15,7 +15,23 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_bit.h"
+#include "xfs_mount.h"
+#include "xfs_inode.h"
+#include "xfs_btree.h"
+#include "xfs_ialloc.h"
+#include "xfs_ialloc_btree.h"
+#include "xfs_alloc.h"
+#include "xfs_trace.h"
+#include "xfs_cksum.h"
+#include "xfs_trans.h"
+
 
 STATIC int
 xfs_inobt_get_minrecs(
diff --git a/libxfs/xfs_inode_buf.c b/libxfs/xfs_inode_buf.c
index 06e9c0c..a7cbd89 100644
--- a/libxfs/xfs_inode_buf.c
+++ b/libxfs/xfs_inode_buf.c
@@ -15,8 +15,17 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_inode.h"
+#include "xfs_cksum.h"
+#include "xfs_trans.h"
+#include "xfs_ialloc.h"
 
 /*
  * Check that none of the inode's in the buffer have a next
diff --git a/libxfs/xfs_inode_fork.c b/libxfs/xfs_inode_fork.c
index 1b21154..334ff86 100644
--- a/libxfs/xfs_inode_fork.c
+++ b/libxfs/xfs_inode_fork.c
@@ -15,7 +15,18 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_inode.h"
+#include "xfs_trans.h"
+#include "xfs_bmap_btree.h"
+#include "xfs_bmap.h"
+#include "xfs_trace.h"
+#include "xfs_attr_sf.h"
 
 kmem_zone_t *xfs_ifork_zone;
 
diff --git a/libxfs/xfs_log_rlimit.c b/libxfs/xfs_log_rlimit.c
index 8818c63..c105979 100644
--- a/libxfs/xfs_log_rlimit.c
+++ b/libxfs/xfs_log_rlimit.c
@@ -15,7 +15,19 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_trans_space.h"
+#include "xfs_inode.h"
+#include "xfs_da_btree.h"
+#include "xfs_attr_leaf.h"
+#include "xfs_bmap_btree.h"
 
 /*
  * Calculate the maximum length in bytes that would be required for a local
diff --git a/libxfs/xfs_rtbitmap.c b/libxfs/xfs_rtbitmap.c
index 088f104..a420156 100644
--- a/libxfs/xfs_rtbitmap.c
+++ b/libxfs/xfs_rtbitmap.c
@@ -16,6 +16,21 @@
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 #include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_bit.h"
+#include "xfs_mount.h"
+#include "xfs_inode.h"
+#include "xfs_bmap.h"
+#include "xfs_bmap_btree.h"
+#include "xfs_alloc.h"
+#include "xfs_trans.h"
+#include "xfs_trans_space.h"
+#include "xfs_trace.h"
+
 
 /*
  * Realtime allocator bitmap functions shared with userspace.
diff --git a/libxfs/xfs_sb.c b/libxfs/xfs_sb.c
index a27ee7e..37e2151 100644
--- a/libxfs/xfs_sb.c
+++ b/libxfs/xfs_sb.c
@@ -15,7 +15,24 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_bit.h"
+#include "xfs_sb.h"
+#include "xfs_mount.h"
+#include "xfs_inode.h"
+#include "xfs_ialloc.h"
+#include "xfs_alloc.h"
+#include "xfs_trace.h"
+#include "xfs_cksum.h"
+#include "xfs_trans.h"
+#include "xfs_bmap_btree.h"
+#include "xfs_alloc_btree.h"
+#include "xfs_ialloc_btree.h"
 
 /*
  * Physical superblock buffer manipulations. Shared with libxfs in userspace.
diff --git a/libxfs/xfs_symlink_remote.c b/libxfs/xfs_symlink_remote.c
index 525c83d..1deea82 100644
--- a/libxfs/xfs_symlink_remote.c
+++ b/libxfs/xfs_symlink_remote.c
@@ -16,7 +16,19 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_shared.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_bmap_btree.h"
+#include "xfs_inode.h"
+#include "xfs_trace.h"
+#include "xfs_cksum.h"
+#include "xfs_trans.h"
+
 
 /*
  * Each contiguous block has a header, so it is not just a simple pathlen
diff --git a/libxfs/xfs_trans_resv.c b/libxfs/xfs_trans_resv.c
index b8576a1..3034ccb 100644
--- a/libxfs/xfs_trans_resv.c
+++ b/libxfs/xfs_trans_resv.c
@@ -16,7 +16,22 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-#include <xfs.h>
+#include "xfs.h"
+#include "xfs_fs.h"
+#include "xfs_shared.h"
+#include "xfs_format.h"
+#include "xfs_log_format.h"
+#include "xfs_trans_resv.h"
+#include "xfs_mount.h"
+#include "xfs_da_format.h"
+#include "xfs_da_btree.h"
+#include "xfs_inode.h"
+#include "xfs_bmap_btree.h"
+#include "xfs_ialloc.h"
+#include "xfs_trans.h"
+#include "xfs_trans_space.h"
+#include "xfs_trace.h"
+#include "xfs_quota_defs.h"
 
 /*
  * A buffer has a format structure overhead in the log in addition
diff --git a/libxlog/util.c b/libxlog/util.c
index 949b79d..053cf04 100644
--- a/libxlog/util.c
+++ b/libxlog/util.c
@@ -16,6 +16,7 @@
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#include <xfs/libxfs.h>
 #include <xfs/libxlog.h>
 
 int print_exit;
diff --git a/libxlog/xfs_log_recover.c b/libxlog/xfs_log_recover.c
index d1fa535..cc8aff8 100644
--- a/libxlog/xfs_log_recover.c
+++ b/libxlog/xfs_log_recover.c
@@ -15,7 +15,7 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-
+#include <xfs/libxfs.h>
 #include <xfs/libxlog.h>
 
 #define xfs_readonly_buftarg(buftarg)			(0)
diff --git a/logprint/log_copy.c b/logprint/log_copy.c
index f6ef0e9..1517846 100644
--- a/logprint/log_copy.c
+++ b/logprint/log_copy.c
@@ -15,6 +15,8 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
+#include <xfs/libxfs.h>
+#include <xfs/libxlog.h>
 
 #include "logprint.h"
 
diff --git a/logprint/log_dump.c b/logprint/log_dump.c
index a333077..dcecb44 100644
--- a/logprint/log_dump.c
+++ b/logprint/log_dump.c
@@ -15,6 +15,8 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
+#include <xfs/libxfs.h>
+#include <xfs/libxlog.h>
 
 #include "logprint.h"
 
diff --git a/logprint/log_misc.c b/logprint/log_misc.c
index c61bd0e..521ab66 100644
--- a/logprint/log_misc.c
+++ b/logprint/log_misc.c
@@ -15,6 +15,8 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
+#include <xfs/libxfs.h>
+#include <xfs/libxlog.h>
 
 #include "logprint.h"
 
diff --git a/logprint/log_print_all.c b/logprint/log_print_all.c
index 2b5c4be..a02c71a 100644
--- a/logprint/log_print_all.c
+++ b/logprint/log_print_all.c
@@ -15,6 +15,8 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
+#include <xfs/libxfs.h>
+#include <xfs/libxlog.h>
 
 #include "logprint.h"
 
diff --git a/logprint/log_print_trans.c b/logprint/log_print_trans.c
index 2dd3a10..0911b6f 100644
--- a/logprint/log_print_trans.c
+++ b/logprint/log_print_trans.c
@@ -15,6 +15,8 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
+#include <xfs/libxfs.h>
+#include <xfs/libxlog.h>
 
 #include "logprint.h"
 
diff --git a/logprint/logprint.c b/logprint/logprint.c
index 7a56462..960a267 100644
--- a/logprint/logprint.c
+++ b/logprint/logprint.c
@@ -15,11 +15,14 @@
  * along with this program; if not, write the Free Software Foundation,
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
-
-#include "logprint.h"
 #include <sys/types.h>
 #include <sys/stat.h>
 
+#include <xfs/libxfs.h>
+#include <xfs/libxlog.h>
+
+#include "logprint.h"
+
 #define OP_PRINT	0
 #define OP_PRINT_TRANS	1
 #define OP_DUMP		2
diff --git a/logprint/logprint.h b/logprint/logprint.h
index 228b042..018af81 100644
--- a/logprint/logprint.h
+++ b/logprint/logprint.h
@@ -18,8 +18,6 @@
 #ifndef LOGPRINT_H
 #define LOGPRINT_H
 
-#include <xfs/libxlog.h>
-
 /* command line flags */
 extern int	print_data;
 extern int	print_only_data;
diff --git a/repair/phase2.c b/repair/phase2.c
index 2817fed..0192346 100644
--- a/repair/phase2.c
+++ b/repair/phase2.c
@@ -16,6 +16,7 @@
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#include <xfs/libxfs.h>
 #include <xfs/libxlog.h>
 #include "avl.h"
 #include "globals.h"
diff --git a/repair/xfs_repair.c b/repair/xfs_repair.c
index 5024e80..11a6069 100644
--- a/repair/xfs_repair.c
+++ b/repair/xfs_repair.c
@@ -16,6 +16,7 @@
  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#include <xfs/libxfs.h>
 #include <xfs/libxlog.h>
 #include <sys/resource.h>
 #include "avl.h"
