summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorEvgeniy Dushistov <dushistov@mail.ru>2007-02-12 00:54:32 -0800
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-02-12 09:48:40 -0800
commit54fb996ac15c4014fa4d6b0ec8e42da134204897 (patch)
treeee7a98270cabefc996a13691a7c9d63141a8d3a9 /include/linux
parent3313e29267414e4e3bf0d3de1caf9cb439b64aaf (diff)
[PATCH] ufs2 write: block allocation update
Patch adds ability to work with 64bit metadata, this made by replacing work with 32bit pointers by inline functions. Signed-off-by: Evgeniy Dushistov <dushistov@mail.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/ufs_fs.h33
-rw-r--r--include/linux/ufs_fs_i.h2
2 files changed, 23 insertions, 12 deletions
diff --git a/include/linux/ufs_fs.h b/include/linux/ufs_fs.h
index 24ce39820560..44c45449065c 100644
--- a/include/linux/ufs_fs.h
+++ b/include/linux/ufs_fs.h
@@ -40,6 +40,7 @@ typedef __u64 __fs64;
typedef __u32 __fs32;
typedef __u16 __fs16;
#else
+#include <asm/div64.h>
typedef __u64 __bitwise __fs64;
typedef __u32 __bitwise __fs32;
typedef __u16 __bitwise __fs16;
@@ -267,13 +268,6 @@ typedef __u16 __bitwise __fs16;
#define ufs_inotofsbo(x) ((x) % uspi->s_inopf)
/*
- * Give cylinder group number for a file system block.
- * Give cylinder group block number for a file system block.
- */
-#define ufs_dtog(d) ((d) / uspi->s_fpg)
-#define ufs_dtogd(d) ((d) % uspi->s_fpg)
-
-/*
* Compute the cylinder and rotational position of a cyl block addr.
*/
#define ufs_cbtocylno(bno) \
@@ -723,6 +717,7 @@ struct ufs_cg_private_info {
__u32 c_nclusterblks; /* number of clusters this cg */
};
+
struct ufs_sb_private_info {
struct ufs_buffer_head s_ubh; /* buffer containing super block */
struct ufs_csum_core cs_total;
@@ -952,10 +947,10 @@ struct ufs_super_block_third {
#ifdef __KERNEL__
/* balloc.c */
-extern void ufs_free_fragments (struct inode *, unsigned, unsigned);
-extern void ufs_free_blocks (struct inode *, unsigned, unsigned);
-extern unsigned ufs_new_fragments(struct inode *, __fs32 *, unsigned, unsigned,
- unsigned, int *, struct page *);
+extern void ufs_free_fragments (struct inode *, u64, unsigned);
+extern void ufs_free_blocks (struct inode *, u64, unsigned);
+extern u64 ufs_new_fragments(struct inode *, void *, u64, u64,
+ unsigned, int *, struct page *);
/* cylinder.c */
extern struct ufs_cg_private_info * ufs_load_cylinder (struct super_block *, unsigned);
@@ -1016,6 +1011,22 @@ static inline struct ufs_inode_info *UFS_I(struct inode *inode)
return container_of(inode, struct ufs_inode_info, vfs_inode);
}
+/*
+ * Give cylinder group number for a file system block.
+ * Give cylinder group block number for a file system block.
+ */
+/* #define ufs_dtog(d) ((d) / uspi->s_fpg) */
+static inline u64 ufs_dtog(struct ufs_sb_private_info * uspi, u64 b)
+{
+ do_div(b, uspi->s_fpg);
+ return b;
+}
+/* #define ufs_dtogd(d) ((d) % uspi->s_fpg) */
+static inline u32 ufs_dtogd(struct ufs_sb_private_info * uspi, u64 b)
+{
+ return do_div(b, uspi->s_fpg);
+}
+
#endif /* __KERNEL__ */
#endif /* __LINUX_UFS_FS_H */
diff --git a/include/linux/ufs_fs_i.h b/include/linux/ufs_fs_i.h
index fef77d52b029..6496caa82f9e 100644
--- a/include/linux/ufs_fs_i.h
+++ b/include/linux/ufs_fs_i.h
@@ -25,7 +25,7 @@ struct ufs_inode_info {
__u32 i_unused2;
__u32 i_oeftflag;
__u16 i_osync;
- __u32 i_lastfrag;
+ __u64 i_lastfrag;
__u32 i_dir_start_lookup;
struct inode vfs_inode;
};