void ktrace_init(int zentries) { ktrace_zentries = zentries; ktrace_hdr_zone = kmem_zone_init(sizeof(ktrace_t), "ktrace_hdr"); ASSERT(ktrace_hdr_zone); ktrace_ent_zone = kmem_zone_init(ktrace_zentries * sizeof(ktrace_entry_t), "ktrace_ent"); ASSERT(ktrace_ent_zone); }
void ktrace_init(int zentries) { ktrace_zentries = zentries; ktrace_hdr_zone = kmem_zone_init(sizeof(ktrace_t), "ktrace_hdr"); ASSERT(ktrace_hdr_zone); ktrace_ent_zone = kmem_zone_init(ktrace_zentries * sizeof(ktrace_entry_t), "ktrace_ent"); ASSERT(ktrace_ent_zone); mtx_init(&wrap_lock, "xfsktr", NULL, MTX_DEF); }
int xfs_filestream_init(void) { item_zone = kmem_zone_init(sizeof(fstrm_item_t), "fstrm_item"); if (!item_zone) return -ENOMEM; return 0; }
/* * xfs_filestream_init() is called at xfs initialisation time to set up the * memory zone that will be used for filestream data structure allocation. */ int xfs_filestream_init(void) { item_zone = kmem_zone_init(sizeof(fstrm_item_t), "fstrm_item"); #ifdef XFS_FILESTREAMS_TRACE xfs_filestreams_trace_buf = ktrace_alloc(XFS_FSTRM_KTRACE_SIZE, KM_SLEEP); #endif return item_zone ? 0 : -ENOMEM; }
int __init xfs_qm_init(void) { xfs_qm_dqzone = kmem_zone_init(sizeof(struct xfs_dquot), "xfs_dquot"); if (!xfs_qm_dqzone) goto out; xfs_qm_dqtrxzone = kmem_zone_init(sizeof(struct xfs_dquot_acct), "xfs_dqtrx"); if (!xfs_qm_dqtrxzone) goto out_free_dqzone; return 0; out_free_dqzone: kmem_zone_destroy(xfs_qm_dqzone); out: return -ENOMEM; }
/* * Initialize/destroy all of the zone allocators we use. */ static void manage_zones(int release) { extern kmem_zone_t *xfs_buf_zone; extern kmem_zone_t *xfs_ili_zone; extern kmem_zone_t *xfs_ifork_zone; extern kmem_zone_t *xfs_buf_item_zone; extern kmem_zone_t *xfs_da_state_zone; extern kmem_zone_t *xfs_btree_cur_zone; extern kmem_zone_t *xfs_bmap_free_item_zone; extern kmem_zone_t *xfs_log_item_desc_zone; extern void xfs_dir_startup(); if (release) { /* free zone allocation */ kmem_free(xfs_buf_zone); kmem_free(xfs_inode_zone); kmem_free(xfs_ifork_zone); kmem_free(xfs_buf_item_zone); kmem_free(xfs_da_state_zone); kmem_free(xfs_btree_cur_zone); kmem_free(xfs_bmap_free_item_zone); kmem_free(xfs_log_item_desc_zone); return; } /* otherwise initialise zone allocation */ xfs_buf_zone = kmem_zone_init(sizeof(xfs_buf_t), "xfs_buffer"); xfs_inode_zone = kmem_zone_init(sizeof(struct xfs_inode), "xfs_inode"); xfs_ifork_zone = kmem_zone_init(sizeof(xfs_ifork_t), "xfs_ifork"); xfs_ili_zone = kmem_zone_init( sizeof(xfs_inode_log_item_t), "xfs_inode_log_item"); xfs_buf_item_zone = kmem_zone_init( sizeof(xfs_buf_log_item_t), "xfs_buf_log_item"); xfs_da_state_zone = kmem_zone_init( sizeof(xfs_da_state_t), "xfs_da_state"); xfs_btree_cur_zone = kmem_zone_init( sizeof(xfs_btree_cur_t), "xfs_btree_cur"); xfs_bmap_free_item_zone = kmem_zone_init( sizeof(xfs_bmap_free_item_t), "xfs_bmap_free_item"); xfs_log_item_desc_zone = kmem_zone_init( sizeof(struct xfs_log_item_desc), "xfs_log_item_desc"); xfs_dir_startup(); }
int xfs_init(void) { extern kmem_zone_t *xfs_bmap_free_item_zone; extern kmem_zone_t *xfs_btree_cur_zone; extern kmem_zone_t *xfs_trans_zone; extern kmem_zone_t *xfs_buf_item_zone; extern kmem_zone_t *xfs_dabuf_zone; #ifdef XFS_DABUF_DEBUG extern lock_t xfs_dabuf_global_lock; spinlock_init(&xfs_dabuf_global_lock, "xfsda"); #endif /* * Initialize all of the zone allocators we use. */ xfs_bmap_free_item_zone = kmem_zone_init(sizeof(xfs_bmap_free_item_t), "xfs_bmap_free_item"); xfs_btree_cur_zone = kmem_zone_init(sizeof(xfs_btree_cur_t), "xfs_btree_cur"); xfs_inode_zone = kmem_zone_init(sizeof(xfs_inode_t), "xfs_inode"); xfs_trans_zone = kmem_zone_init(sizeof(xfs_trans_t), "xfs_trans"); xfs_da_state_zone = kmem_zone_init(sizeof(xfs_da_state_t), "xfs_da_state"); xfs_dabuf_zone = kmem_zone_init(sizeof(xfs_dabuf_t), "xfs_dabuf"); /* * The size of the zone allocated buf log item is the maximum * size possible under XFS. This wastes a little bit of memory, * but it is much faster. */ xfs_buf_item_zone = kmem_zone_init((sizeof(xfs_buf_log_item_t) + (((XFS_MAX_BLOCKSIZE / XFS_BLI_CHUNK) / NBWORD) * sizeof(int))), "xfs_buf_item"); xfs_efd_zone = kmem_zone_init((sizeof(xfs_efd_log_item_t) + ((XFS_EFD_MAX_FAST_EXTENTS - 1) * sizeof(xfs_extent_t))), "xfs_efd_item"); xfs_efi_zone = kmem_zone_init((sizeof(xfs_efi_log_item_t) + ((XFS_EFI_MAX_FAST_EXTENTS - 1) * sizeof(xfs_extent_t))), "xfs_efi_item"); xfs_ifork_zone = kmem_zone_init(sizeof(xfs_ifork_t), "xfs_ifork"); xfs_ili_zone = kmem_zone_init(sizeof(xfs_inode_log_item_t), "xfs_ili"); xfs_chashlist_zone = kmem_zone_init(sizeof(xfs_chashlist_t), "xfs_chashlist"); _ACL_ZONE_INIT(xfs_acl_zone, "xfs_acl"); /* * Allocate global trace buffers. */ #ifdef XFS_ALLOC_TRACE xfs_alloc_trace_buf = ktrace_alloc(XFS_ALLOC_TRACE_SIZE, KM_SLEEP); #endif #ifdef XFS_BMAP_TRACE xfs_bmap_trace_buf = ktrace_alloc(XFS_BMAP_TRACE_SIZE, KM_SLEEP); #endif #ifdef XFS_BMBT_TRACE xfs_bmbt_trace_buf = ktrace_alloc(XFS_BMBT_TRACE_SIZE, KM_SLEEP); #endif #ifdef XFS_DIR_TRACE xfs_dir_trace_buf = ktrace_alloc(XFS_DIR_TRACE_SIZE, KM_SLEEP); #endif #ifdef XFS_ATTR_TRACE xfs_attr_trace_buf = ktrace_alloc(XFS_ATTR_TRACE_SIZE, KM_SLEEP); #endif #ifdef XFS_DIR2_TRACE xfs_dir2_trace_buf = ktrace_alloc(XFS_DIR2_GTRACE_SIZE, KM_SLEEP); #endif xfs_dir_startup(); #if (defined(DEBUG) || defined(INDUCE_IO_ERROR)) xfs_error_test_init(); #endif /* DEBUG || INDUCE_IO_ERROR */ xfs_init_procfs(); xfs_sysctl_register(); return 0; }