Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable
[sfrench/cifs-2.6.git] / fs / minix / itree_common.c
index 429baf8de105419c49308447d8978348892701b9..a731cabf1540e0d0f12bff4f88ea23d40e78dd7a 100644 (file)
@@ -23,7 +23,7 @@ static inline int verify_chain(Indirect *from, Indirect *to)
 
 static inline block_t *block_end(struct buffer_head *bh)
 {
-       return (block_t *)((char*)bh->b_data + BLOCK_SIZE);
+       return (block_t *)((char*)bh->b_data + bh->b_size);
 }
 
 static inline Indirect *get_branch(struct inode *inode,
@@ -85,7 +85,7 @@ static int alloc_branch(struct inode *inode,
                branch[n].key = cpu_to_block(nr);
                bh = sb_getblk(inode->i_sb, parent);
                lock_buffer(bh);
-               memset(bh->b_data, 0, BLOCK_SIZE);
+               memset(bh->b_data, 0, bh->b_size);
                branch[n].bh = bh;
                branch[n].p = (block_t*) bh->b_data + offsets[n];
                *branch[n].p = branch[n].key;
@@ -292,6 +292,7 @@ static void free_branches(struct inode *inode, block_t *p, block_t *q, int depth
 
 static inline void truncate (struct inode * inode)
 {
+       struct super_block *sb = inode->i_sb;
        block_t *idata = i_data(inode);
        int offsets[DEPTH];
        Indirect chain[DEPTH];
@@ -301,7 +302,7 @@ static inline void truncate (struct inode * inode)
        int first_whole;
        long iblock;
 
-       iblock = (inode->i_size + BLOCK_SIZE-1) >> 10;
+       iblock = (inode->i_size + sb->s_blocksize -1) >> sb->s_blocksize_bits;
        block_truncate_page(inode->i_mapping, inode->i_size, get_block);
 
        n = block_to_path(inode, iblock, offsets);
@@ -346,15 +347,16 @@ do_indirects:
        mark_inode_dirty(inode);
 }
 
-static inline unsigned nblocks(loff_t size)
+static inline unsigned nblocks(loff_t size, struct super_block *sb)
 {
+       int k = sb->s_blocksize_bits - 10;
        unsigned blocks, res, direct = DIRECT, i = DEPTH;
-       blocks = (size + BLOCK_SIZE - 1) >> BLOCK_SIZE_BITS;
+       blocks = (size + sb->s_blocksize - 1) >> (BLOCK_SIZE_BITS + k);
        res = blocks;
        while (--i && blocks > direct) {
                blocks -= direct;
-               blocks += BLOCK_SIZE/sizeof(block_t) - 1;
-               blocks /= BLOCK_SIZE/sizeof(block_t);
+               blocks += sb->s_blocksize/sizeof(block_t) - 1;
+               blocks /= sb->s_blocksize/sizeof(block_t);
                res += blocks;
                direct = 1;
        }