Lines Matching refs:inode

40 nilfs_palloc_groups_per_desc_block(const struct inode *inode)  in nilfs_palloc_groups_per_desc_block()  argument
42 return (1UL << inode->i_blkbits) / in nilfs_palloc_groups_per_desc_block()
51 nilfs_palloc_groups_count(const struct inode *inode) in nilfs_palloc_groups_count() argument
53 return 1UL << (BITS_PER_LONG - (inode->i_blkbits + 3 /* log2(8) */)); in nilfs_palloc_groups_count()
61 int nilfs_palloc_init_blockgroup(struct inode *inode, unsigned entry_size) in nilfs_palloc_init_blockgroup() argument
63 struct nilfs_mdt_info *mi = NILFS_MDT(inode); in nilfs_palloc_init_blockgroup()
71 nilfs_mdt_set_entry_size(inode, entry_size, 0); in nilfs_palloc_init_blockgroup()
74 DIV_ROUND_UP(nilfs_palloc_entries_per_group(inode), in nilfs_palloc_init_blockgroup()
79 nilfs_palloc_groups_per_desc_block(inode) * in nilfs_palloc_init_blockgroup()
92 static unsigned long nilfs_palloc_group(const struct inode *inode, __u64 nr, in nilfs_palloc_group() argument
97 *offset = do_div(group, nilfs_palloc_entries_per_group(inode)); in nilfs_palloc_group()
110 nilfs_palloc_desc_blkoff(const struct inode *inode, unsigned long group) in nilfs_palloc_desc_blkoff() argument
113 group / nilfs_palloc_groups_per_desc_block(inode); in nilfs_palloc_desc_blkoff()
114 return desc_block * NILFS_MDT(inode)->mi_blocks_per_desc_block; in nilfs_palloc_desc_blkoff()
126 nilfs_palloc_bitmap_blkoff(const struct inode *inode, unsigned long group) in nilfs_palloc_bitmap_blkoff() argument
129 group % nilfs_palloc_groups_per_desc_block(inode); in nilfs_palloc_bitmap_blkoff()
130 return nilfs_palloc_desc_blkoff(inode, group) + 1 + in nilfs_palloc_bitmap_blkoff()
131 desc_offset * NILFS_MDT(inode)->mi_blocks_per_group; in nilfs_palloc_bitmap_blkoff()
176 nilfs_palloc_entry_blkoff(const struct inode *inode, __u64 nr) in nilfs_palloc_entry_blkoff() argument
180 group = nilfs_palloc_group(inode, nr, &group_offset); in nilfs_palloc_entry_blkoff()
182 return nilfs_palloc_bitmap_blkoff(inode, group) + 1 + in nilfs_palloc_entry_blkoff()
183 group_offset / NILFS_MDT(inode)->mi_entries_per_block; in nilfs_palloc_entry_blkoff()
192 static void nilfs_palloc_desc_block_init(struct inode *inode, in nilfs_palloc_desc_block_init() argument
196 unsigned long n = nilfs_palloc_groups_per_desc_block(inode); in nilfs_palloc_desc_block_init()
199 nfrees = cpu_to_le32(nilfs_palloc_entries_per_group(inode)); in nilfs_palloc_desc_block_init()
206 static int nilfs_palloc_get_block(struct inode *inode, unsigned long blkoff, in nilfs_palloc_get_block() argument
208 void (*init_block)(struct inode *, in nilfs_palloc_get_block() argument
226 ret = nilfs_mdt_get_block(inode, blkoff, create, init_block, bhp); in nilfs_palloc_get_block()
249 static int nilfs_palloc_delete_block(struct inode *inode, unsigned long blkoff, in nilfs_palloc_delete_block() argument
259 return nilfs_mdt_delete_block(inode, blkoff); in nilfs_palloc_delete_block()
269 static int nilfs_palloc_get_desc_block(struct inode *inode, in nilfs_palloc_get_desc_block() argument
273 struct nilfs_palloc_cache *cache = NILFS_MDT(inode)->mi_palloc_cache; in nilfs_palloc_get_desc_block()
275 return nilfs_palloc_get_block(inode, in nilfs_palloc_get_desc_block()
276 nilfs_palloc_desc_blkoff(inode, group), in nilfs_palloc_get_desc_block()
288 static int nilfs_palloc_get_bitmap_block(struct inode *inode, in nilfs_palloc_get_bitmap_block() argument
292 struct nilfs_palloc_cache *cache = NILFS_MDT(inode)->mi_palloc_cache; in nilfs_palloc_get_bitmap_block()
294 return nilfs_palloc_get_block(inode, in nilfs_palloc_get_bitmap_block()
295 nilfs_palloc_bitmap_blkoff(inode, group), in nilfs_palloc_get_bitmap_block()
305 static int nilfs_palloc_delete_bitmap_block(struct inode *inode, in nilfs_palloc_delete_bitmap_block() argument
308 struct nilfs_palloc_cache *cache = NILFS_MDT(inode)->mi_palloc_cache; in nilfs_palloc_delete_bitmap_block()
310 return nilfs_palloc_delete_block(inode, in nilfs_palloc_delete_bitmap_block()
311 nilfs_palloc_bitmap_blkoff(inode, in nilfs_palloc_delete_bitmap_block()
323 int nilfs_palloc_get_entry_block(struct inode *inode, __u64 nr, in nilfs_palloc_get_entry_block() argument
326 struct nilfs_palloc_cache *cache = NILFS_MDT(inode)->mi_palloc_cache; in nilfs_palloc_get_entry_block()
328 return nilfs_palloc_get_block(inode, in nilfs_palloc_get_entry_block()
329 nilfs_palloc_entry_blkoff(inode, nr), in nilfs_palloc_get_entry_block()
339 static int nilfs_palloc_delete_entry_block(struct inode *inode, __u64 nr) in nilfs_palloc_delete_entry_block() argument
341 struct nilfs_palloc_cache *cache = NILFS_MDT(inode)->mi_palloc_cache; in nilfs_palloc_delete_entry_block()
343 return nilfs_palloc_delete_block(inode, in nilfs_palloc_delete_entry_block()
344 nilfs_palloc_entry_blkoff(inode, nr), in nilfs_palloc_delete_entry_block()
356 nilfs_palloc_block_get_group_desc(const struct inode *inode, in nilfs_palloc_block_get_group_desc() argument
361 group % nilfs_palloc_groups_per_desc_block(inode); in nilfs_palloc_block_get_group_desc()
371 void *nilfs_palloc_block_get_entry(const struct inode *inode, __u64 nr, in nilfs_palloc_block_get_entry() argument
376 nilfs_palloc_group(inode, nr, &group_offset); in nilfs_palloc_block_get_entry()
377 entry_offset = group_offset % NILFS_MDT(inode)->mi_entries_per_block; in nilfs_palloc_block_get_entry()
380 entry_offset * NILFS_MDT(inode)->mi_entry_size; in nilfs_palloc_block_get_entry()
430 nilfs_palloc_rest_groups_in_desc_block(const struct inode *inode, in nilfs_palloc_rest_groups_in_desc_block() argument
434 nilfs_palloc_groups_per_desc_block(inode) - in nilfs_palloc_rest_groups_in_desc_block()
435 curr % nilfs_palloc_groups_per_desc_block(inode), in nilfs_palloc_rest_groups_in_desc_block()
444 static int nilfs_palloc_count_desc_blocks(struct inode *inode, in nilfs_palloc_count_desc_blocks() argument
450 ret = nilfs_bmap_last_key(NILFS_I(inode)->i_bmap, &blknum); in nilfs_palloc_count_desc_blocks()
454 NILFS_MDT(inode)->mi_blocks_per_desc_block); in nilfs_palloc_count_desc_blocks()
464 static inline bool nilfs_palloc_mdt_file_can_grow(struct inode *inode, in nilfs_palloc_mdt_file_can_grow() argument
467 return (nilfs_palloc_groups_per_desc_block(inode) * desc_blocks) < in nilfs_palloc_mdt_file_can_grow()
468 nilfs_palloc_groups_count(inode); in nilfs_palloc_mdt_file_can_grow()
478 int nilfs_palloc_count_max_entries(struct inode *inode, u64 nused, u64 *nmaxp) in nilfs_palloc_count_max_entries() argument
484 err = nilfs_palloc_count_desc_blocks(inode, &desc_blocks); in nilfs_palloc_count_max_entries()
488 entries_per_desc_block = (u64)nilfs_palloc_entries_per_group(inode) * in nilfs_palloc_count_max_entries()
489 nilfs_palloc_groups_per_desc_block(inode); in nilfs_palloc_count_max_entries()
493 nilfs_palloc_mdt_file_can_grow(inode, desc_blocks)) in nilfs_palloc_count_max_entries()
508 int nilfs_palloc_prepare_alloc_entry(struct inode *inode, in nilfs_palloc_prepare_alloc_entry() argument
522 ngroups = nilfs_palloc_groups_count(inode); in nilfs_palloc_prepare_alloc_entry()
524 group = nilfs_palloc_group(inode, req->pr_entry_nr, &group_offset); in nilfs_palloc_prepare_alloc_entry()
525 entries_per_group = nilfs_palloc_entries_per_group(inode); in nilfs_palloc_prepare_alloc_entry()
531 maxgroup = nilfs_palloc_group(inode, req->pr_entry_nr, in nilfs_palloc_prepare_alloc_entry()
534 ret = nilfs_palloc_get_desc_block(inode, group, 1, &desc_bh); in nilfs_palloc_prepare_alloc_entry()
539 inode, group, desc_bh, desc_kaddr); in nilfs_palloc_prepare_alloc_entry()
540 n = nilfs_palloc_rest_groups_in_desc_block(inode, group, in nilfs_palloc_prepare_alloc_entry()
543 lock = nilfs_mdt_bgl_lock(inode, group); in nilfs_palloc_prepare_alloc_entry()
546 inode, group, 1, &bitmap_bh); in nilfs_palloc_prepare_alloc_entry()
592 void nilfs_palloc_commit_alloc_entry(struct inode *inode, in nilfs_palloc_commit_alloc_entry() argument
597 nilfs_mdt_mark_dirty(inode); in nilfs_palloc_commit_alloc_entry()
608 void nilfs_palloc_commit_free_entry(struct inode *inode, in nilfs_palloc_commit_free_entry() argument
617 group = nilfs_palloc_group(inode, req->pr_entry_nr, &group_offset); in nilfs_palloc_commit_free_entry()
619 desc = nilfs_palloc_block_get_group_desc(inode, group, in nilfs_palloc_commit_free_entry()
623 lock = nilfs_mdt_bgl_lock(inode, group); in nilfs_palloc_commit_free_entry()
626 nilfs_warning(inode->i_sb, __func__, in nilfs_palloc_commit_free_entry()
629 (unsigned long)inode->i_ino); in nilfs_palloc_commit_free_entry()
638 nilfs_mdt_mark_dirty(inode); in nilfs_palloc_commit_free_entry()
649 void nilfs_palloc_abort_alloc_entry(struct inode *inode, in nilfs_palloc_abort_alloc_entry() argument
658 group = nilfs_palloc_group(inode, req->pr_entry_nr, &group_offset); in nilfs_palloc_abort_alloc_entry()
660 desc = nilfs_palloc_block_get_group_desc(inode, group, in nilfs_palloc_abort_alloc_entry()
664 lock = nilfs_mdt_bgl_lock(inode, group); in nilfs_palloc_abort_alloc_entry()
667 nilfs_warning(inode->i_sb, __func__, in nilfs_palloc_abort_alloc_entry()
670 (unsigned long)inode->i_ino); in nilfs_palloc_abort_alloc_entry()
690 int nilfs_palloc_prepare_free_entry(struct inode *inode, in nilfs_palloc_prepare_free_entry() argument
697 group = nilfs_palloc_group(inode, req->pr_entry_nr, &group_offset); in nilfs_palloc_prepare_free_entry()
698 ret = nilfs_palloc_get_desc_block(inode, group, 1, &desc_bh); in nilfs_palloc_prepare_free_entry()
701 ret = nilfs_palloc_get_bitmap_block(inode, group, 1, &bitmap_bh); in nilfs_palloc_prepare_free_entry()
717 void nilfs_palloc_abort_free_entry(struct inode *inode, in nilfs_palloc_abort_free_entry() argument
734 int nilfs_palloc_freev(struct inode *inode, __u64 *entry_nrs, size_t nitems) in nilfs_palloc_freev() argument
742 const unsigned long epg = nilfs_palloc_entries_per_group(inode); in nilfs_palloc_freev()
743 const unsigned epb = NILFS_MDT(inode)->mi_entries_per_block; in nilfs_palloc_freev()
753 group = nilfs_palloc_group(inode, entry_nrs[i], &group_offset); in nilfs_palloc_freev()
754 ret = nilfs_palloc_get_desc_block(inode, group, 0, &desc_bh); in nilfs_palloc_freev()
757 ret = nilfs_palloc_get_bitmap_block(inode, group, 0, in nilfs_palloc_freev()
769 lock = nilfs_mdt_bgl_lock(inode, group); in nilfs_palloc_freev()
776 nilfs_warning(inode->i_sb, __func__, in nilfs_palloc_freev()
779 (unsigned long)inode->i_ino); in nilfs_palloc_freev()
818 ret = nilfs_palloc_delete_entry_block(inode, in nilfs_palloc_freev()
821 nilfs_warning(inode->i_sb, __func__, in nilfs_palloc_freev()
824 (unsigned long)inode->i_ino, ret); in nilfs_palloc_freev()
830 inode, group, desc_bh, desc_kaddr); in nilfs_palloc_freev()
834 nilfs_mdt_mark_dirty(inode); in nilfs_palloc_freev()
837 if (nfree == nilfs_palloc_entries_per_group(inode)) { in nilfs_palloc_freev()
838 ret = nilfs_palloc_delete_bitmap_block(inode, group); in nilfs_palloc_freev()
840 nilfs_warning(inode->i_sb, __func__, in nilfs_palloc_freev()
843 (unsigned long)inode->i_ino, ret); in nilfs_palloc_freev()
850 void nilfs_palloc_setup_cache(struct inode *inode, in nilfs_palloc_setup_cache() argument
853 NILFS_MDT(inode)->mi_palloc_cache = cache; in nilfs_palloc_setup_cache()
857 void nilfs_palloc_clear_cache(struct inode *inode) in nilfs_palloc_clear_cache() argument
859 struct nilfs_palloc_cache *cache = NILFS_MDT(inode)->mi_palloc_cache; in nilfs_palloc_clear_cache()
871 void nilfs_palloc_destroy_cache(struct inode *inode) in nilfs_palloc_destroy_cache() argument
873 nilfs_palloc_clear_cache(inode); in nilfs_palloc_destroy_cache()
874 NILFS_MDT(inode)->mi_palloc_cache = NULL; in nilfs_palloc_destroy_cache()