jfs_user.h revision 86c627ec1136446409a0170d439e60c148e6eb48
1cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o/*
2cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o * Compatibility header file for e2fsck which should be included
3cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o * instead of linux/jfs.h
4cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o *
5cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o * Copyright (C) 2000 Stephen C. Tweedie
6cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o *
7cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o * This file may be redistributed under the terms of the
8cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o * GNU General Public License version 2 or at your discretion
9cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o * any later version.
10cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o */
11cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o
12cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o/*
13cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o * Pull in the definition of the e2fsck context structure
14cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o */
150e8a9560d89dd9cca73037a59efa93e46abdccdaTheodore Ts'o#include "e2fsck.h"
16cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o
17cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'ostruct buffer_head {
18cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	char	 b_data[8192];
19cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	e2fsck_t b_ctx;
20cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	io_channel b_io;
21cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	int	 b_size;
22cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	blk_t	 b_blocknr;
23cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	int	 b_dirty;
24cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	int	 b_uptodate;
25cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	int	 b_err;
26cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o};
27cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o
28cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'ostruct inode {
2986c627ec1136446409a0170d439e60c148e6eb48Theodore Ts'o	e2fsck_t	i_ctx;
3086c627ec1136446409a0170d439e60c148e6eb48Theodore Ts'o	ext2_ino_t	i_ino;
31cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	struct ext2_inode i_ext2;
32cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o};
33cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o
34cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'otypedef e2fsck_t kdev_t;
35cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o
36cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o/*
37cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o * Kernel compatibility functions are defined in journal.c
38cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o */
39cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'oint bmap(struct inode *inode, int block);
40cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'ostruct buffer_head *getblk(e2fsck_t ctx, blk_t blocknr, int blocksize);
41cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'ovoid ll_rw_block(int rw, int dummy, struct buffer_head *bh[]);
42cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'ovoid mark_buffer_dirty(struct buffer_head *bh, int dummy);
43cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'ovoid brelse(struct buffer_head *bh);
44cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'oint buffer_uptodate(struct buffer_head *bh);
45cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'ovoid wait_on_buffer(struct buffer_head *bh);
46cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o#define fsync_dev(dev) do {} while(0)
47cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o#define buffer_req(bh) 1
48cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o#define do_readahead(journal, start) do {} while(0)
49cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o
50cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'oextern e2fsck_t e2fsck_global_ctx;  /* Try your very best not to use this! */
51cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o
52cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'otypedef struct {
53cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	int	object_length;
54cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o} kmem_cache_t;
55cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o
56cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o#define kmem_cache_alloc(cache,flags) malloc((cache)->object_length)
57cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o#define kmem_cache_free(cache,obj) free(obj)
58cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o#define kmem_cache_create(name,len,a,b,c,d) do_cache_create(len)
59cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o#define kmalloc(len,flags) malloc(len)
60cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o#define kfree(p) free(p)
61cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o
6253ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o/*
6353ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o * We use the standard libext2fs portability tricks for inline
6453ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o * functions.
6553ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o */
6653ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'oextern kmem_cache_t * do_cache_create(int len);
6753ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o
6853ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o#if (defined(E2FSCK_INCLUDE_INLINE_FUNCS) || !defined(NO_INLINE_FUNCS))
6953ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o#ifdef E2FSCK_INCLUDE_INLINE_FUNCS
7053ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o#define _INLINE_ extern
7153ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o#else
7253ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o#ifdef __GNUC__
7353ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o#define _INLINE_ extern __inline__
7453ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o#else				/* For Watcom C */
7553ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o#define _INLINE_ extern inline
7653ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o#endif
7753ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o#endif
7853ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o
7953ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o_INLINE_ kmem_cache_t * do_cache_create(int len)
80cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o{
81cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	kmem_cache_t *new_cache;
82cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	new_cache = malloc(sizeof(*new_cache));
83cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	if (new_cache)
84cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o		new_cache->object_length = len;
85cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o	return new_cache;
86cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o}
87cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o
8853ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o#undef _INLINE_
8953ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o#endif
9053ef44c40a3e425d2c700d8fd77a6b655aa121feTheodore Ts'o
91cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o/*
92cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o * Now pull in the real linux/jfs.h definitions.
93cc7067b40bbd3e585da3031c1e06794107ff0d0bTheodore Ts'o */
940e8a9560d89dd9cca73037a59efa93e46abdccdaTheodore Ts'o#include <linux/jfs.h>
95