Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef _VXFS_KCOMPAT_H |
| 2 | #define _VXFS_KCOMPAT_H |
| 3 | |
| 4 | #include <linux/version.h> |
| 5 | |
| 6 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) |
| 7 | |
| 8 | #include <linux/blkdev.h> |
| 9 | |
| 10 | typedef long sector_t; |
| 11 | |
| 12 | /* From include/linux/fs.h (Linux 2.5.2-pre3) */ |
| 13 | static inline struct buffer_head * sb_bread(struct super_block *sb, int block) |
| 14 | { |
| 15 | return bread(sb->s_dev, block, sb->s_blocksize); |
| 16 | } |
| 17 | |
| 18 | /* Dito. */ |
| 19 | static inline void map_bh(struct buffer_head *bh, struct super_block *sb, int block) |
| 20 | { |
| 21 | bh->b_state |= 1 << BH_Mapped; |
| 22 | bh->b_dev = sb->s_dev; |
| 23 | bh->b_blocknr = block; |
| 24 | } |
| 25 | |
| 26 | /* From fs/block_dev.c (Linux 2.5.2-pre2) */ |
| 27 | static inline int sb_set_blocksize(struct super_block *sb, int size) |
| 28 | { |
| 29 | int bits; |
| 30 | if (set_blocksize(sb->s_dev, size) < 0) |
| 31 | return 0; |
| 32 | sb->s_blocksize = size; |
| 33 | for (bits = 9, size >>= 9; size >>= 1; bits++) |
| 34 | ; |
| 35 | sb->s_blocksize_bits = bits; |
| 36 | return sb->s_blocksize; |
| 37 | } |
| 38 | |
| 39 | /* Dito. */ |
| 40 | static inline int sb_min_blocksize(struct super_block *sb, int size) |
| 41 | { |
| 42 | int minsize = get_hardsect_size(sb->s_dev); |
| 43 | if (size < minsize) |
| 44 | size = minsize; |
| 45 | return sb_set_blocksize(sb, size); |
| 46 | } |
| 47 | |
| 48 | #endif /* Kernel 2.4 */ |
| 49 | #endif /* _VXFS_KCOMPAT_H */ |