363
366
manage_zones(int release)
365
extern xfs_zone_t *xfs_buf_zone;
366
extern xfs_zone_t *xfs_ili_zone;
367
extern xfs_zone_t *xfs_inode_zone;
368
extern xfs_zone_t *xfs_ifork_zone;
369
extern xfs_zone_t *xfs_dabuf_zone;
370
extern xfs_zone_t *xfs_buf_item_zone;
371
extern xfs_zone_t *xfs_da_state_zone;
372
extern xfs_zone_t *xfs_btree_cur_zone;
373
extern xfs_zone_t *xfs_bmap_free_item_zone;
368
extern kmem_zone_t *xfs_buf_zone;
369
extern kmem_zone_t *xfs_ili_zone;
370
extern kmem_zone_t *xfs_inode_zone;
371
extern kmem_zone_t *xfs_ifork_zone;
372
extern kmem_zone_t *xfs_dabuf_zone;
373
extern kmem_zone_t *xfs_buf_item_zone;
374
extern kmem_zone_t *xfs_da_state_zone;
375
extern kmem_zone_t *xfs_btree_cur_zone;
376
extern kmem_zone_t *xfs_bmap_free_item_zone;
374
377
extern void xfs_dir_startup();
376
379
if (release) { /* free zone allocation */
377
libxfs_free(xfs_buf_zone);
378
libxfs_free(xfs_inode_zone);
379
libxfs_free(xfs_ifork_zone);
380
libxfs_free(xfs_dabuf_zone);
381
libxfs_free(xfs_buf_item_zone);
382
libxfs_free(xfs_da_state_zone);
383
libxfs_free(xfs_btree_cur_zone);
384
libxfs_free(xfs_bmap_free_item_zone);
380
kmem_free(xfs_buf_zone);
381
kmem_free(xfs_inode_zone);
382
kmem_free(xfs_ifork_zone);
383
kmem_free(xfs_dabuf_zone);
384
kmem_free(xfs_buf_item_zone);
385
kmem_free(xfs_da_state_zone);
386
kmem_free(xfs_btree_cur_zone);
387
kmem_free(xfs_bmap_free_item_zone);
387
390
/* otherwise initialise zone allocation */
388
xfs_buf_zone = libxfs_zone_init(sizeof(xfs_buf_t), "xfs_buffer");
389
xfs_inode_zone = libxfs_zone_init(sizeof(xfs_inode_t), "xfs_inode");
390
xfs_ifork_zone = libxfs_zone_init(sizeof(xfs_ifork_t), "xfs_ifork");
391
xfs_dabuf_zone = libxfs_zone_init(sizeof(xfs_dabuf_t), "xfs_dabuf");
392
xfs_ili_zone = libxfs_zone_init(
391
xfs_buf_zone = kmem_zone_init(sizeof(xfs_buf_t), "xfs_buffer");
392
xfs_inode_zone = kmem_zone_init(sizeof(xfs_inode_t), "xfs_inode");
393
xfs_ifork_zone = kmem_zone_init(sizeof(xfs_ifork_t), "xfs_ifork");
394
xfs_dabuf_zone = kmem_zone_init(sizeof(xfs_dabuf_t), "xfs_dabuf");
395
xfs_ili_zone = kmem_zone_init(
393
396
sizeof(xfs_inode_log_item_t), "xfs_inode_log_item");
394
xfs_buf_item_zone = libxfs_zone_init(
397
xfs_buf_item_zone = kmem_zone_init(
395
398
sizeof(xfs_buf_log_item_t), "xfs_buf_log_item");
396
xfs_da_state_zone = libxfs_zone_init(
399
xfs_da_state_zone = kmem_zone_init(
397
400
sizeof(xfs_da_state_t), "xfs_da_state");
398
xfs_btree_cur_zone = libxfs_zone_init(
401
xfs_btree_cur_zone = kmem_zone_init(
399
402
sizeof(xfs_btree_cur_t), "xfs_btree_cur");
400
xfs_bmap_free_item_zone = libxfs_zone_init(
403
xfs_bmap_free_item_zone = kmem_zone_init(
401
404
sizeof(xfs_bmap_free_item_t), "xfs_bmap_free_item");
402
405
xfs_dir_startup();
518
537
sbp = &(mp->m_sb);
520
libxfs_mount_common(mp, sb);
539
xfs_mount_common(mp, sb);
522
libxfs_alloc_compute_maxlevels(mp);
523
libxfs_bmap_compute_maxlevels(mp, XFS_DATA_FORK);
524
libxfs_bmap_compute_maxlevels(mp, XFS_ATTR_FORK);
525
libxfs_ialloc_compute_maxlevels(mp);
541
xfs_alloc_compute_maxlevels(mp);
542
xfs_bmap_compute_maxlevels(mp, XFS_DATA_FORK);
543
xfs_bmap_compute_maxlevels(mp, XFS_ATTR_FORK);
544
xfs_ialloc_compute_maxlevels(mp);
527
546
if (sbp->sb_imax_pct) {
528
547
/* Make sure the maximum inode count is a multiple of the
576
595
/* Initialize the appropriate directory manager */
577
if (XFS_SB_VERSION_HASDIRV2(sbp))
578
libxfs_dir2_mount(mp);
580
libxfs_dir_mount(mp);
596
if (xfs_sb_version_hasdirv2(sbp))
599
fprintf(stderr, _("%s: WARNING - filesystem uses v1 dirs,"
600
"limited functionality provided.\n"), progname);
601
libxfs_dirv1_mount(mp);
582
604
/* Initialize cached values for the attribute manager */
583
605
mp->m_attr_magicpct = (mp->m_sb.sb_blocksize * 37) / 100;
606
if (xfs_sb_version_hasattr2(&mp->m_sb))
607
mp->m_flags |= LIBXFS_MOUNT_ATTR2;
585
609
/* Initialize the precomputed transaction reservations values */
586
libxfs_trans_init(mp);
588
612
if (dev == 0) /* maxtrres, we have no device so leave now */