Lines Matching defs:nilfsdev
298 nilfs_create_system_nodes(struct nilfs_device *nilfsdev)
302 error = nilfs_get_node_raw(nilfsdev, NULL, NILFS_DAT_INO,
303 &nilfsdev->super_root.sr_dat, &nilfsdev->dat_node);
307 error = nilfs_get_node_raw(nilfsdev, NULL, NILFS_CPFILE_INO,
308 &nilfsdev->super_root.sr_cpfile, &nilfsdev->cp_node);
312 error = nilfs_get_node_raw(nilfsdev, NULL, NILFS_SUFILE_INO,
313 &nilfsdev->super_root.sr_sufile, &nilfsdev->su_node);
319 nilfs_dispose_node(&nilfsdev->dat_node);
320 nilfs_dispose_node(&nilfsdev->cp_node);
321 nilfs_dispose_node(&nilfsdev->su_node);
328 nilfs_release_system_nodes(struct nilfs_device *nilfsdev)
330 if (!nilfsdev)
332 if (nilfsdev->refcnt > 0)
335 nilfs_dispose_node(&nilfsdev->dat_node);
336 nilfs_dispose_node(&nilfsdev->cp_node);
337 nilfs_dispose_node(&nilfsdev->su_node);
370 nilfs_read_superblock(struct nilfs_device *nilfsdev)
382 sb2off = NILFS_SB2_OFFSET_BYTES(nilfsdev->devsize);
384 dev_bsize = 1 << nilfsdev->devvp->v_mount->mnt_fs_bshift;
389 error = bread(nilfsdev->devvp, dev_blk, dev_blks * dev_bsize, 0, &bp);
395 super = &nilfsdev->super;
403 error = bread(nilfsdev->devvp, dev_blk, dev_blks * dev_bsize, 0, &bp);
409 super = &nilfsdev->super2;
414 sb1ok = nilfs_check_superblock_crc(&nilfsdev->super);
415 sb2ok = nilfs_check_superblock_crc(&nilfsdev->super2);
417 last_cno1 = nilfs_rw64(nilfsdev->super.s_last_cno);
418 last_cno2 = nilfs_rw64(nilfsdev->super2.s_last_cno);
423 tmp_super = nilfsdev->super2;
424 nilfsdev->super2 = nilfsdev->super; /* why preserve? */
425 nilfsdev->super = tmp_super;
439 nilfs_unmount_base(struct nilfs_device *nilfsdev)
443 if (!nilfsdev)
447 error = vinvalbuf(nilfsdev->devvp, 0, FSCRED, curlwp, 0, 0);
451 nilfs_release_system_nodes(nilfsdev);
458 nilfs_mount_base(struct nilfs_device *nilfsdev,
467 if ((error = vinvalbuf(nilfsdev->devvp, V_SAVE, l->l_cred, l, 0, 0)))
471 error = nilfs_read_superblock(nilfsdev);
478 log_blocksize = nilfs_rw32(nilfsdev->super.s_log_block_size);
479 nilfsdev->blocksize = (uint64_t) 1 << (log_blocksize + 10);
483 nilfs_calc_mdt_consts(nilfsdev, &nilfsdev->dat_mdt,
484 nilfs_rw16(nilfsdev->super.s_dat_entry_size));
485 nilfs_calc_mdt_consts(nilfsdev, &nilfsdev->ifile_mdt,
486 nilfs_rw16(nilfsdev->super.s_inode_size));
491 nilfs_search_super_root(nilfsdev);
493 nilfsdev->mount_state = nilfs_rw16(nilfsdev->super.s_state);
494 if (nilfsdev->mount_state != NILFS_VALID_FS) {
504 last_pseg = nilfs_rw64(nilfsdev->super.s_last_pseg); /*blknr */
505 last_cno = nilfs_rw64(nilfsdev->super.s_last_cno);
506 last_seq = nilfs_rw64(nilfsdev->super.s_last_seq);
508 nilfsdev->last_seg_seq = last_seq;
509 nilfsdev->last_seg_num = nilfs_get_segnum_of_block(nilfsdev, last_pseg);
510 nilfsdev->next_seg_num = nilfs_get_segnum_of_block(nilfsdev,
511 nilfs_rw64(nilfsdev->last_segsum.ss_next));
512 nilfsdev->last_cno = last_cno;
517 error = nilfs_create_system_nodes(nilfsdev);
519 nilfs_unmount_base(nilfsdev);
525 nilfs_unmount_device(struct nilfs_device *nilfsdev)
530 if (nilfsdev == NULL)
534 nilfsdev->refcnt--;
535 if (nilfsdev->refcnt >= 1)
539 nilfs_unmount_base(nilfsdev);
542 SLIST_REMOVE(&nilfs_devices, nilfsdev, nilfs_device, next_device);
548 spec_node_setmountedfs(nilfsdev->devvp, NULL);
551 vn_lock(nilfsdev->devvp, LK_EXCLUSIVE | LK_RETRY);
552 error = VOP_CLOSE(nilfsdev->devvp, FREAD | FWRITE, NOCRED);
559 vput(nilfsdev->devvp);
562 cv_destroy(&nilfsdev->sync_cv);
563 free(nilfsdev, M_NILFSMNT);
568 nilfs_check_mounts(struct nilfs_device *nilfsdev, struct mount *mp,
575 STAILQ_FOREACH(ump, &nilfsdev->mounts, next_mount) {
585 STAILQ_FOREACH(ump, &nilfsdev->mounts, next_mount) {
590 last_cno = nilfs_rw64(ump->nilfsdev->super.s_last_cno);
606 struct nilfs_device *nilfsdev;
614 SLIST_FOREACH(nilfsdev, &nilfs_devices, next_device)
615 if (nilfsdev->devvp == devvp)
618 if (nilfsdev) {
620 error = nilfs_check_mounts(nilfsdev, mp, args);
623 nilfsdev->refcnt++;
624 *nilfsdev_p = nilfsdev;
669 nilfsdev = malloc(sizeof(*nilfsdev), M_NILFSMNT, M_WAITOK | M_ZERO);
672 nilfsdev->refcnt = 1;
673 nilfsdev->devvp = devvp;
674 nilfsdev->uncomitted_bl = 0;
675 cv_init(&nilfsdev->sync_cv, "nilfssyn");
676 STAILQ_INIT(&nilfsdev->mounts);
679 SLIST_INSERT_HEAD(&nilfs_devices, nilfsdev, next_device);
685 nilfs_unmount_device(nilfsdev);
689 nilfsdev->devsize = psize * secsize;
692 error = nilfs_mount_base(nilfsdev, mp, args);
695 nilfs_unmount_device(nilfsdev);
699 *nilfsdev_p = nilfsdev;
721 cp_node = ump->nilfsdev->cp_node;
742 dlen = nilfs_rw16(ump->nilfsdev->super.s_checkpoint_size);
743 cp_per_block = ump->nilfsdev->blocksize / dlen;
774 last_cno = nilfs_rw64(ump->nilfsdev->super.s_last_cno);
789 error = nilfs_get_node_raw(ump->nilfsdev, NULL, NILFS_IFILE_INO,
840 struct nilfs_device *nilfsdev;
885 error = nilfs_mount_device(devvp, mp, args, &nilfsdev);
909 mp->mnt_dev_bshift = nilfs_rw32(nilfsdev->super.s_log_block_size) + 10;
918 ump->nilfsdev = nilfsdev;
941 STAILQ_INSERT_TAIL(&nilfsdev->mounts, ump, next_mount);
945 args->cpno = nilfsdev->last_cno;
946 args->cpno = MIN(args->cpno, nilfsdev->last_cno);
977 struct nilfs_device *nilfsdev;
986 nilfsdev = ump->nilfsdev;
1003 STAILQ_REMOVE(&nilfsdev->mounts, ump, nilfs_mount, next_mount);
1011 nilfs_unmount_device(nilfsdev);
1061 blocksize = ump->nilfsdev->blocksize;
1114 struct nilfs_device *nilfsdev;
1140 nilfsdev = ump->nilfsdev;
1141 nilfs_mdt_trans(&nilfsdev->ifile_mdt, ino, &ivblocknr, &entry_in_block);
1153 error = nilfs_get_node_raw(ump->nilfsdev, ump, ino, &inode, &node);