• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/fs/logfs/

Lines Matching defs:bix

23 static u64 adjust_bix(u64 bix, level_t level)
27 return bix;
29 return max_t(u64, bix, I0_BLOCKS);
31 return max_t(u64, bix, I1_BLOCKS);
33 return max_t(u64, bix, I2_BLOCKS);
35 return max_t(u64, bix, I3_BLOCKS);
37 return max_t(u64, bix, I4_BLOCKS);
40 return bix;
52 * set, the actual block index (bix) and level can be derived from the page
67 pgoff_t logfs_pack_index(u64 bix, level_t level)
71 BUG_ON(bix >= INDIRECT_BIT);
73 return bix;
77 index |= bix >> ((__force u8)level * LOGFS_BLOCK_BITS);
81 void logfs_unpack_index(pgoff_t index, u64 *bix, level_t *level)
86 *bix = index;
93 *bix = (index << (__level * LOGFS_BLOCK_BITS)) & ~INDIRECT_BIT;
94 *bix = adjust_bix(*bix, *level);
274 static struct page *logfs_get_read_page(struct inode *inode, u64 bix,
278 logfs_pack_index(bix, level), GFP_NOFS);
310 static struct page *logfs_get_write_page(struct inode *inode, u64 bix,
314 pgoff_t index = logfs_pack_index(bix, level);
348 static struct page *logfs_get_page(struct inode *inode, u64 bix, level_t level,
352 return logfs_get_read_page(inode, bix, level);
354 return logfs_get_write_page(inode, bix, level);
467 u64 ino , bix;
495 bix = inode->i_ino;
497 err = write_one_alias(sb, ino, bix, level, pos, val);
508 u64 ino , bix;
519 logfs_unpack_index(page->index, &bix, &level);
523 err = write_one_alias(sb, ino, bix, level, pos, val);
580 u64 ino, u64 bix, level_t level)
591 block->bix = bix;
642 u64 bix;
648 logfs_unpack_index(page->index, &bix, &level);
649 block = __alloc_block(inode->i_sb, inode->i_ino, bix, level);
725 u64 bix, bofs = li->li_data[INDIRECT_INDEX];
730 logfs_unpack_index(page->index, &bix, &target_level);
734 if (bix >= maxbix(li->li_height))
740 ipage = logfs_get_page(inode, bix, level, rw_context);
744 ret = logfs_segment_read(inode, ipage, bofs, bix, level);
750 bofs = block_get_pointer(ipage, get_bits(bix, SUBLEVEL(level)));
756 return logfs_segment_read(inode, page, bofs, bix, 0);
769 static int logfs_exist_loop(struct inode *inode, u64 bix)
779 if (bix >= maxbix(li->li_height))
783 ipage = logfs_get_read_page(inode, bix, level);
787 ret = logfs_segment_read(inode, ipage, bofs, bix, level);
793 bofs = block_get_pointer(ipage, get_bits(bix, SUBLEVEL(level)));
802 int logfs_exist_block(struct inode *inode, u64 bix)
806 if (bix < I0_BLOCKS)
807 return !!li->li_data[bix];
808 return logfs_exist_loop(inode, bix);
811 static u64 seek_holedata_direct(struct inode *inode, u64 bix, int data)
815 for (; bix < I0_BLOCKS; bix++)
816 if (data ^ (li->li_data[bix] == 0))
817 return bix;
821 static u64 seek_holedata_loop(struct inode *inode, u64 bix, int data)
834 page = logfs_get_read_page(inode, bix, level);
836 return bix;
838 ret = logfs_segment_read(inode, page, bofs, bix, level);
841 return bix;
844 slot = get_bits(bix, SUBLEVEL(level));
852 bix += increment;
853 bix &= ~(increment - 1);
858 return bix;
865 return bix;
868 return bix;
874 * @bix: block index to start searching
879 u64 logfs_seek_hole(struct inode *inode, u64 bix)
883 if (bix < I0_BLOCKS) {
884 bix = seek_holedata_direct(inode, bix, 0);
885 if (bix < I0_BLOCKS)
886 return bix;
890 return bix;
892 bix = maxbix(li->li_height);
893 else if (bix >= maxbix(li->li_height))
894 return bix;
896 bix = seek_holedata_loop(inode, bix, 0);
897 if (bix < maxbix(li->li_height))
898 return bix;
902 WARN_ON_ONCE(bix == maxbix(li->li_height));
905 return bix;
908 static u64 __logfs_seek_data(struct inode *inode, u64 bix)
912 if (bix < I0_BLOCKS) {
913 bix = seek_holedata_direct(inode, bix, 1);
914 if (bix < I0_BLOCKS)
915 return bix;
918 if (bix < maxbix(li->li_height)) {
920 bix = maxbix(li->li_height);
922 return seek_holedata_loop(inode, bix, 1);
925 return bix;
931 * @bix: block index to start searching
936 u64 logfs_seek_data(struct inode *inode, u64 bix)
941 ret = __logfs_seek_data(inode, bix);
944 ret = max(bix, end);
948 static int logfs_is_valid_direct(struct logfs_inode *li, u64 bix, u64 ofs)
950 return pure_ofs(li->li_data[bix]) == ofs;
953 static int __logfs_is_valid_loop(struct inode *inode, u64 bix,
962 page = logfs_get_write_page(inode, bix, level);
965 ret = logfs_segment_read(inode, page, bofs, bix, level);
971 bofs = block_get_pointer(page, get_bits(bix, SUBLEVEL(level)));
982 static int logfs_is_valid_loop(struct inode *inode, u64 bix, u64 ofs)
990 if (bix >= maxbix(li->li_height))
996 return __logfs_is_valid_loop(inode, bix, ofs, bofs);
999 static int __logfs_is_valid_block(struct inode *inode, u64 bix, u64 ofs)
1006 if (bix < I0_BLOCKS)
1007 return logfs_is_valid_direct(li, bix, ofs);
1008 return logfs_is_valid_loop(inode, bix, ofs);
1017 * @bix - block index
1023 int logfs_is_valid_block(struct super_block *sb, u64 ofs, u64 ino, u64 bix,
1041 ret = __logfs_is_valid_block(inode, bix, ofs);
1208 static struct logfs_shadow *alloc_shadow(struct inode *inode, u64 bix,
1217 shadow->bix = bix;
1335 u64 bix;
1339 logfs_unpack_index(page->index, &bix, &level);
1344 shadow = alloc_shadow(inode, bix, level, wc->ofs);
1409 pgoff_t bix, level_t target_level, level_t level)
1412 int child_no = get_bits(bix, SUBLEVEL(level));
1418 ipage = logfs_get_write_page(inode, bix, level);
1423 ret = logfs_segment_read(inode, ipage, this_wc->ofs, bix, level);
1434 ret = __logfs_write_rec(inode, page, &child_wc, bix,
1458 pgoff_t bix, level_t target_level, long flags)
1470 ret = __logfs_write_rec(inode, page, &wc, bix, target_level,
1499 static int grow_inode(struct inode *inode, u64 bix, level_t level)
1510 while (height > li->li_height || bix >= maxbix(li->li_height)) {
1534 u64 bix;
1541 logfs_unpack_index(index, &bix, &level);
1548 bix = adjust_bix(bix, level);
1549 err = grow_inode(inode, bix, level);
1552 return logfs_write_rec(inode, page, bix, level, flags);
1597 int logfs_rewrite_block(struct inode *inode, u64 bix, u64 ofs,
1604 page = logfs_get_write_page(inode, bix, level);
1608 err = logfs_segment_read(inode, page, ofs, bix, level);
1634 u64 bix;
1642 logfs_unpack_index(page->index, &bix, &level);
1645 err = logfs_segment_read(inode, page, ofs, bix, level);
1657 u64 bix;
1661 logfs_unpack_index(page->index, &bix, &level);
1663 shadow = alloc_shadow(inode, bix, level, wc->ofs);
1743 static void logfs_unpack_raw_index(pgoff_t index, u64 *bix, level_t *level)
1745 logfs_unpack_index(index, bix, level);
1746 if (*bix <= logfs_start_index(SUBLEVEL(*level)))
1747 *bix = 0;
1755 u64 bix, child_bix, next_bix;
1760 logfs_unpack_raw_index(ipage->index, &bix, &level);
1761 err = logfs_segment_read(inode, ipage, this_wc->ofs, bix, level);
1766 child_bix = bix + e * logfs_step(SUBLEVEL(level));
1892 block->ino, block->bix, block->level);
1912 block->ino, block->bix, block->level);
2178 page = logfs_get_write_page(inode, block->bix, block->level);
2193 loff_t bix, long flags, struct shadow_tree *shadow_tree)
2195 loff_t pos = bix << inode->i_sb->s_blocksize_bits;
2202 page = logfs_get_write_page(inode, bix, 0);