Lines Matching defs:seginfo

83 create_segment(struct nandfs_seginfo *seginfo)
93 fsdev = seginfo->fsdev;
94 prev = seginfo->curseg;
146 seginfo->reiterate = 1;
166 bzero(bp->b_data, seginfo->fsdev->nd_blocksize);
167 bp->b_bufobj = &seginfo->fsdev->nd_devvp->v_bufobj;
181 LIST_INSERT_HEAD(&seginfo->seg_list, seg, seg_link);
185 seginfo->curseg = seg;
191 delete_segment(struct nandfs_seginfo *seginfo)
196 LIST_FOREACH_SAFE(seg, &seginfo->seg_list, seg_link, tseg) {
212 create_seginfo(struct nandfs_device *fsdev, struct nandfs_seginfo **seginfo)
222 *seginfo = info;
228 delete_seginfo(struct nandfs_seginfo *seginfo)
232 nffsdev = seginfo->fsdev;
233 delete_segment(seginfo);
235 free(seginfo, M_DEVBUF);
241 nandfs_create_superroot_block(struct nandfs_seginfo *seginfo,
247 bp = nandfs_geteblk(seginfo->fsdev->nd_blocksize, GB_NOWAIT_BD);
249 bzero(bp->b_data, seginfo->fsdev->nd_blocksize);
250 bp->b_bufobj = &seginfo->fsdev->nd_devvp->v_bufobj;
253 if (!(seginfo->curseg) || !seginfo->curseg->num_blocks) {
254 error = create_segment(seginfo);
263 TAILQ_INSERT_TAIL(&seginfo->curseg->data, bp, b_cluster.cluster_entry);
265 seginfo->curseg->nblocks++;
266 seginfo->curseg->num_blocks--;
267 seginfo->blocks++;
274 nandfs_add_superroot(struct nandfs_seginfo *seginfo)
283 fsdev = seginfo->fsdev;
285 error = nandfs_create_superroot_block(seginfo, &bp);
310 bp->b_bufobj = &seginfo->fsdev->nd_devvp->v_bufobj;
320 nandfs_add_segsum_block(struct nandfs_seginfo *seginfo, struct buf **newbp)
327 if (!(seginfo->curseg) || seginfo->curseg->num_blocks <= 1) {
328 error = create_segment(seginfo);
334 *newbp = TAILQ_FIRST(&seginfo->curseg->segsum);
338 fsdev = seginfo->fsdev;
339 blk = nandfs_block_to_dblock(fsdev, seginfo->curseg->start_block +
340 seginfo->curseg->segsum_blocks);
344 bzero(bp->b_data, seginfo->fsdev->nd_blocksize);
345 bp->b_bufobj = &seginfo->fsdev->nd_devvp->v_bufobj;
348 TAILQ_INSERT_TAIL(&seginfo->curseg->segsum, bp,
350 seginfo->curseg->num_blocks--;
352 seginfo->curseg->segsum_blocks++;
353 seginfo->curseg->bytes_left = seginfo->fsdev->nd_blocksize;
354 seginfo->curseg->current_off = bp->b_data;
355 seginfo->blocks++;
365 nandfs_add_blocks(struct nandfs_seginfo *seginfo, struct nandfs_node *node,
372 if (!(seginfo->curseg) || !seginfo->curseg->num_blocks) {
373 error = create_segment(seginfo);
381 if (seginfo->curseg->bytes_left < sizeof(union nandfs_binfo)) {
382 error = nandfs_add_segsum_block(seginfo, &seg_bp);
389 binfo = (union nandfs_binfo *)seginfo->curseg->current_off;
404 seginfo->curseg->bytes_left -= sizeof(union nandfs_binfo);
405 seginfo->curseg->segsum_bytes += sizeof(union nandfs_binfo);
406 seginfo->curseg->current_off = (char *)binfo;
408 TAILQ_INSERT_TAIL(&seginfo->curseg->data, bp, b_cluster.cluster_entry);
410 seginfo->curseg->nbinfos++;
411 seginfo->curseg->nblocks++;
412 seginfo->curseg->num_blocks--;
413 seginfo->blocks++;
416 __func__, bp, seginfo->curseg->nblocks,
417 seginfo->curseg->num_blocks));
422 nandfs_iterate_dirty_buf(struct vnode *vp, struct nandfs_seginfo *seginfo,
446 nandfs_add_blocks(seginfo, node, bp);
455 struct nandfs_seginfo *seginfo)
471 nandfs_iterate_dirty_buf(vp, seginfo, hold);
477 nandfs_iterate_dirty_vnodes(struct mount *mp, struct nandfs_seginfo *seginfo)
506 error = nandfs_iterate_dirty_buf(vp, seginfo, 0);
627 nandfs_seginfo_assign_pblk(struct nandfs_seginfo *seginfo)
632 LIST_FOREACH(nfsseg, &seginfo->seg_list, seg_link) {
863 clean_seginfo(struct nandfs_seginfo *seginfo, uint8_t unlock)
867 DPRINTF(SYNC, ("%s: seginfo %p\n", __func__, seginfo));
869 LIST_FOREACH(seg, &seginfo->seg_list, seg_link) {
875 save_seginfo(struct nandfs_seginfo *seginfo, uint8_t unlock)
882 fsdev = seginfo->fsdev;
884 DPRINTF(SYNC, ("%s: seginfo %p\n", __func__, seginfo));
886 LIST_FOREACH(seg, &seginfo->seg_list, seg_link) {
910 clean_seginfo(seginfo, unlock);
981 struct nandfs_seginfo *seginfo = NULL;
1007 create_seginfo(fsdev, &seginfo);
1018 error = nandfs_iterate_dirty_buf(vp, seginfo, 0);
1020 clean_seginfo(seginfo, 0);
1021 delete_seginfo(seginfo);
1035 clean_seginfo(seginfo, 0);
1036 delete_seginfo(seginfo);
1048 if (seginfo->blocks) {
1054 clean_seginfo(seginfo, 0);
1055 delete_seginfo(seginfo);
1065 nandfs_seginfo_assign_pblk(seginfo);
1069 &ifile->nn_inode, seginfo->blocks);
1071 clean_seginfo(seginfo, 0);
1072 delete_seginfo(seginfo);
1082 LIST_FOREACH(seg, &seginfo->seg_list, seg_link)
1087 error = save_seginfo(seginfo, 0);
1089 clean_seginfo(seginfo, 0);
1090 delete_seginfo(seginfo);
1103 delete_seginfo(seginfo);
1121 struct nandfs_seginfo *seginfo = NULL;
1132 create_seginfo(fsdev, &seginfo);
1145 nandfs_iterate_system_vnode(gc, seginfo);
1146 nandfs_iterate_dirty_vnodes(nmp->nm_vfs_mountp, seginfo);
1147 nandfs_iterate_system_vnode(ifile, seginfo);
1148 nandfs_iterate_system_vnode(su, seginfo);
1151 if (seginfo->blocks || flags) {
1156 clean_seginfo(seginfo, 0);
1157 delete_seginfo(seginfo);
1162 nandfs_iterate_system_vnode(cp, seginfo);
1163 nandfs_iterate_system_vnode(su, seginfo);
1165 nandfs_iterate_system_vnode(dat, seginfo);
1168 seginfo->reiterate = 0;
1169 nandfs_iterate_system_vnode(su, seginfo);
1171 nandfs_iterate_system_vnode(dat, seginfo);
1173 if (seginfo->reiterate)
1175 if (!(seginfo->curseg) || !seginfo->curseg->num_blocks) {
1176 error = create_segment(seginfo);
1178 clean_seginfo(seginfo, 0);
1179 delete_seginfo(seginfo);
1186 nandfs_seginfo_assign_pblk(seginfo);
1189 error = nandfs_add_superroot(seginfo);
1191 clean_seginfo(seginfo, 0);
1192 delete_seginfo(seginfo);
1195 KASSERT(!(seginfo->reiterate), ("reiteration after superroot"));
1199 &ifile->nn_inode, seginfo->blocks);
1201 LIST_FOREACH(seg, &seginfo->seg_list, seg_link)
1206 error = save_seginfo(seginfo, 1);
1208 clean_seginfo(seginfo, 1);
1209 delete_seginfo(seginfo);
1223 delete_seginfo(seginfo);