Lines Matching refs:inode
28 nilfs_palloc_groups_per_desc_block(const struct inode *inode) in nilfs_palloc_groups_per_desc_block() argument
30 return i_blocksize(inode) / in nilfs_palloc_groups_per_desc_block()
41 nilfs_palloc_groups_count(const struct inode *inode) in nilfs_palloc_groups_count() argument
43 return 1UL << (BITS_PER_LONG - (inode->i_blkbits + 3 /* log2(8) */)); in nilfs_palloc_groups_count()
53 int nilfs_palloc_init_blockgroup(struct inode *inode, unsigned int entry_size) in nilfs_palloc_init_blockgroup() argument
55 struct nilfs_mdt_info *mi = NILFS_MDT(inode); in nilfs_palloc_init_blockgroup()
63 nilfs_mdt_set_entry_size(inode, entry_size, 0); in nilfs_palloc_init_blockgroup()
66 DIV_ROUND_UP(nilfs_palloc_entries_per_group(inode), in nilfs_palloc_init_blockgroup()
73 nilfs_palloc_groups_per_desc_block(inode) * in nilfs_palloc_init_blockgroup()
91 static unsigned long nilfs_palloc_group(const struct inode *inode, __u64 nr, in nilfs_palloc_group() argument
96 *offset = do_div(group, nilfs_palloc_entries_per_group(inode)); in nilfs_palloc_group()
109 nilfs_palloc_desc_blkoff(const struct inode *inode, unsigned long group) in nilfs_palloc_desc_blkoff() argument
112 group / nilfs_palloc_groups_per_desc_block(inode); in nilfs_palloc_desc_blkoff()
113 return desc_block * NILFS_MDT(inode)->mi_blocks_per_desc_block; in nilfs_palloc_desc_blkoff()
128 nilfs_palloc_bitmap_blkoff(const struct inode *inode, unsigned long group) in nilfs_palloc_bitmap_blkoff() argument
131 group % nilfs_palloc_groups_per_desc_block(inode); in nilfs_palloc_bitmap_blkoff()
132 return nilfs_palloc_desc_blkoff(inode, group) + 1 + in nilfs_palloc_bitmap_blkoff()
133 desc_offset * NILFS_MDT(inode)->mi_blocks_per_group; in nilfs_palloc_bitmap_blkoff()
186 nilfs_palloc_entry_blkoff(const struct inode *inode, __u64 nr) in nilfs_palloc_entry_blkoff() argument
190 group = nilfs_palloc_group(inode, nr, &group_offset); in nilfs_palloc_entry_blkoff()
192 return nilfs_palloc_bitmap_blkoff(inode, group) + 1 + in nilfs_palloc_entry_blkoff()
193 group_offset / NILFS_MDT(inode)->mi_entries_per_block; in nilfs_palloc_entry_blkoff()
204 static void nilfs_palloc_desc_block_init(struct inode *inode, in nilfs_palloc_desc_block_init() argument
208 unsigned long n = nilfs_palloc_groups_per_desc_block(inode); in nilfs_palloc_desc_block_init()
211 nfrees = cpu_to_le32(nilfs_palloc_entries_per_group(inode)); in nilfs_palloc_desc_block_init()
218 static int nilfs_palloc_get_block(struct inode *inode, unsigned long blkoff, in nilfs_palloc_get_block() argument
220 void (*init_block)(struct inode *, in nilfs_palloc_get_block() argument
239 ret = nilfs_mdt_get_block(inode, blkoff, create, init_block, bhp); in nilfs_palloc_get_block()
268 static int nilfs_palloc_delete_block(struct inode *inode, unsigned long blkoff, in nilfs_palloc_delete_block() argument
278 return nilfs_mdt_delete_block(inode, blkoff); in nilfs_palloc_delete_block()
290 static int nilfs_palloc_get_desc_block(struct inode *inode, in nilfs_palloc_get_desc_block() argument
294 struct nilfs_palloc_cache *cache = NILFS_MDT(inode)->mi_palloc_cache; in nilfs_palloc_get_desc_block()
296 return nilfs_palloc_get_block(inode, in nilfs_palloc_get_desc_block()
297 nilfs_palloc_desc_blkoff(inode, group), in nilfs_palloc_get_desc_block()
311 static int nilfs_palloc_get_bitmap_block(struct inode *inode, in nilfs_palloc_get_bitmap_block() argument
315 struct nilfs_palloc_cache *cache = NILFS_MDT(inode)->mi_palloc_cache; in nilfs_palloc_get_bitmap_block()
317 return nilfs_palloc_get_block(inode, in nilfs_palloc_get_bitmap_block()
318 nilfs_palloc_bitmap_blkoff(inode, group), in nilfs_palloc_get_bitmap_block()
330 static int nilfs_palloc_delete_bitmap_block(struct inode *inode, in nilfs_palloc_delete_bitmap_block() argument
333 struct nilfs_palloc_cache *cache = NILFS_MDT(inode)->mi_palloc_cache; in nilfs_palloc_delete_bitmap_block()
335 return nilfs_palloc_delete_block(inode, in nilfs_palloc_delete_bitmap_block()
336 nilfs_palloc_bitmap_blkoff(inode, in nilfs_palloc_delete_bitmap_block()
350 int nilfs_palloc_get_entry_block(struct inode *inode, __u64 nr, in nilfs_palloc_get_entry_block() argument
353 struct nilfs_palloc_cache *cache = NILFS_MDT(inode)->mi_palloc_cache; in nilfs_palloc_get_entry_block()
355 return nilfs_palloc_get_block(inode, in nilfs_palloc_get_entry_block()
356 nilfs_palloc_entry_blkoff(inode, nr), in nilfs_palloc_get_entry_block()
368 static int nilfs_palloc_delete_entry_block(struct inode *inode, __u64 nr) in nilfs_palloc_delete_entry_block() argument
370 struct nilfs_palloc_cache *cache = NILFS_MDT(inode)->mi_palloc_cache; in nilfs_palloc_delete_entry_block()
372 return nilfs_palloc_delete_block(inode, in nilfs_palloc_delete_entry_block()
373 nilfs_palloc_entry_blkoff(inode, nr), in nilfs_palloc_delete_entry_block()
386 static size_t nilfs_palloc_group_desc_offset(const struct inode *inode, in nilfs_palloc_group_desc_offset() argument
392 (group % nilfs_palloc_groups_per_desc_block(inode)); in nilfs_palloc_group_desc_offset()
416 size_t nilfs_palloc_entry_offset(const struct inode *inode, __u64 nr, in nilfs_palloc_entry_offset() argument
421 nilfs_palloc_group(inode, nr, &entry_index_in_group); in nilfs_palloc_entry_offset()
423 NILFS_MDT(inode)->mi_entries_per_block; in nilfs_palloc_entry_offset()
426 entry_index_in_block * NILFS_MDT(inode)->mi_entry_size; in nilfs_palloc_entry_offset()
485 nilfs_palloc_rest_groups_in_desc_block(const struct inode *inode, in nilfs_palloc_rest_groups_in_desc_block() argument
489 nilfs_palloc_groups_per_desc_block(inode) - in nilfs_palloc_rest_groups_in_desc_block()
490 curr % nilfs_palloc_groups_per_desc_block(inode), in nilfs_palloc_rest_groups_in_desc_block()
501 static int nilfs_palloc_count_desc_blocks(struct inode *inode, in nilfs_palloc_count_desc_blocks() argument
507 ret = nilfs_bmap_last_key(NILFS_I(inode)->i_bmap, &blknum); in nilfs_palloc_count_desc_blocks()
511 NILFS_MDT(inode)->mi_blocks_per_desc_block); in nilfs_palloc_count_desc_blocks()
523 static inline bool nilfs_palloc_mdt_file_can_grow(struct inode *inode, in nilfs_palloc_mdt_file_can_grow() argument
526 return (nilfs_palloc_groups_per_desc_block(inode) * desc_blocks) < in nilfs_palloc_mdt_file_can_grow()
527 nilfs_palloc_groups_count(inode); in nilfs_palloc_mdt_file_can_grow()
543 int nilfs_palloc_count_max_entries(struct inode *inode, u64 nused, u64 *nmaxp) in nilfs_palloc_count_max_entries() argument
549 err = nilfs_palloc_count_desc_blocks(inode, &desc_blocks); in nilfs_palloc_count_max_entries()
553 entries_per_desc_block = (u64)nilfs_palloc_entries_per_group(inode) * in nilfs_palloc_count_max_entries()
554 nilfs_palloc_groups_per_desc_block(inode); in nilfs_palloc_count_max_entries()
558 nilfs_palloc_mdt_file_can_grow(inode, desc_blocks)) in nilfs_palloc_count_max_entries()
581 int nilfs_palloc_prepare_alloc_entry(struct inode *inode, in nilfs_palloc_prepare_alloc_entry() argument
595 ngroups = nilfs_palloc_groups_count(inode); in nilfs_palloc_prepare_alloc_entry()
597 group = nilfs_palloc_group(inode, req->pr_entry_nr, &group_offset); in nilfs_palloc_prepare_alloc_entry()
598 entries_per_group = nilfs_palloc_entries_per_group(inode); in nilfs_palloc_prepare_alloc_entry()
604 maxgroup = nilfs_palloc_group(inode, req->pr_entry_nr, in nilfs_palloc_prepare_alloc_entry()
607 ret = nilfs_palloc_get_desc_block(inode, group, 1, &desc_bh); in nilfs_palloc_prepare_alloc_entry()
611 doff = nilfs_palloc_group_desc_offset(inode, group, desc_bh); in nilfs_palloc_prepare_alloc_entry()
613 n = nilfs_palloc_rest_groups_in_desc_block(inode, group, in nilfs_palloc_prepare_alloc_entry()
616 lock = nilfs_mdt_bgl_lock(inode, group); in nilfs_palloc_prepare_alloc_entry()
621 ret = nilfs_palloc_get_bitmap_block(inode, group, 1, in nilfs_palloc_prepare_alloc_entry()
675 void nilfs_palloc_commit_alloc_entry(struct inode *inode, in nilfs_palloc_commit_alloc_entry() argument
680 nilfs_mdt_mark_dirty(inode); in nilfs_palloc_commit_alloc_entry()
691 void nilfs_palloc_commit_free_entry(struct inode *inode, in nilfs_palloc_commit_free_entry() argument
700 group = nilfs_palloc_group(inode, req->pr_entry_nr, &group_offset); in nilfs_palloc_commit_free_entry()
701 doff = nilfs_palloc_group_desc_offset(inode, group, req->pr_desc_bh); in nilfs_palloc_commit_free_entry()
706 lock = nilfs_mdt_bgl_lock(inode, group); in nilfs_palloc_commit_free_entry()
709 nilfs_warn(inode->i_sb, in nilfs_palloc_commit_free_entry()
711 __func__, inode->i_ino, in nilfs_palloc_commit_free_entry()
721 nilfs_mdt_mark_dirty(inode); in nilfs_palloc_commit_free_entry()
732 void nilfs_palloc_abort_alloc_entry(struct inode *inode, in nilfs_palloc_abort_alloc_entry() argument
741 group = nilfs_palloc_group(inode, req->pr_entry_nr, &group_offset); in nilfs_palloc_abort_alloc_entry()
742 doff = nilfs_palloc_group_desc_offset(inode, group, req->pr_desc_bh); in nilfs_palloc_abort_alloc_entry()
747 lock = nilfs_mdt_bgl_lock(inode, group); in nilfs_palloc_abort_alloc_entry()
750 nilfs_warn(inode->i_sb, in nilfs_palloc_abort_alloc_entry()
752 __func__, inode->i_ino, in nilfs_palloc_abort_alloc_entry()
775 int nilfs_palloc_prepare_free_entry(struct inode *inode, in nilfs_palloc_prepare_free_entry() argument
782 group = nilfs_palloc_group(inode, req->pr_entry_nr, &group_offset); in nilfs_palloc_prepare_free_entry()
783 ret = nilfs_palloc_get_desc_block(inode, group, 1, &desc_bh); in nilfs_palloc_prepare_free_entry()
786 ret = nilfs_palloc_get_bitmap_block(inode, group, 1, &bitmap_bh); in nilfs_palloc_prepare_free_entry()
802 void nilfs_palloc_abort_free_entry(struct inode *inode, in nilfs_palloc_abort_free_entry() argument
821 int nilfs_palloc_freev(struct inode *inode, __u64 *entry_nrs, size_t nitems) in nilfs_palloc_freev() argument
829 const unsigned long epg = nilfs_palloc_entries_per_group(inode); in nilfs_palloc_freev()
830 const unsigned int epb = NILFS_MDT(inode)->mi_entries_per_block; in nilfs_palloc_freev()
840 group = nilfs_palloc_group(inode, entry_nrs[i], &group_offset); in nilfs_palloc_freev()
841 ret = nilfs_palloc_get_desc_block(inode, group, 0, &desc_bh); in nilfs_palloc_freev()
844 ret = nilfs_palloc_get_bitmap_block(inode, group, 0, in nilfs_palloc_freev()
856 lock = nilfs_mdt_bgl_lock(inode, group); in nilfs_palloc_freev()
863 nilfs_warn(inode->i_sb, in nilfs_palloc_freev()
865 __func__, inode->i_ino, in nilfs_palloc_freev()
905 ret = nilfs_palloc_delete_entry_block(inode, in nilfs_palloc_freev()
908 nilfs_warn(inode->i_sb, in nilfs_palloc_freev()
911 inode->i_ino); in nilfs_palloc_freev()
914 doff = nilfs_palloc_group_desc_offset(inode, group, desc_bh); in nilfs_palloc_freev()
919 nilfs_mdt_mark_dirty(inode); in nilfs_palloc_freev()
922 if (nfree == nilfs_palloc_entries_per_group(inode)) { in nilfs_palloc_freev()
923 ret = nilfs_palloc_delete_bitmap_block(inode, group); in nilfs_palloc_freev()
925 nilfs_warn(inode->i_sb, in nilfs_palloc_freev()
927 ret, group, inode->i_ino); in nilfs_palloc_freev()
933 void nilfs_palloc_setup_cache(struct inode *inode, in nilfs_palloc_setup_cache() argument
936 NILFS_MDT(inode)->mi_palloc_cache = cache; in nilfs_palloc_setup_cache()
940 void nilfs_palloc_clear_cache(struct inode *inode) in nilfs_palloc_clear_cache() argument
942 struct nilfs_palloc_cache *cache = NILFS_MDT(inode)->mi_palloc_cache; in nilfs_palloc_clear_cache()
954 void nilfs_palloc_destroy_cache(struct inode *inode) in nilfs_palloc_destroy_cache() argument
956 nilfs_palloc_clear_cache(inode); in nilfs_palloc_destroy_cache()
957 NILFS_MDT(inode)->mi_palloc_cache = NULL; in nilfs_palloc_destroy_cache()