X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fhfs%2Fbtree.c;h=3e620efdd476ee63f437c6bf0b38ece367af6f28;hb=b4e5fe4ac713ec66470b6fc3eeb828603b8ed76a;hp=19f10cf9f6fb7378d60bb0bafde90e9f03ce4133;hpb=a91482bdcc2e0f6035702e46f1b99043a0893346;p=linux-2.6.git diff --git a/fs/hfs/btree.c b/fs/hfs/btree.c index 19f10cf9f..3e620efdd 100644 --- a/fs/hfs/btree.c +++ b/fs/hfs/btree.c @@ -19,7 +19,7 @@ struct hfs_btree *hfs_btree_open(struct super_block *sb, u32 id, btree_keycmp ke struct hfs_btree_header_rec *head; struct address_space *mapping; struct page *page; - unsigned int size; + unsigned int shift, size; tree = kmalloc(sizeof(*tree), GFP_KERNEL); if (!tree) @@ -82,7 +82,10 @@ struct hfs_btree *hfs_btree_open(struct super_block *sb, u32 id, btree_keycmp ke goto fail_page; if (!tree->node_count) goto fail_page; - tree->node_size_shift = ffs(size) - 1; + for (shift = 0; size >>= 1; shift += 1) + ; + tree->node_size_shift = shift; + tree->pages_per_bnode = (tree->node_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; kunmap(page);