Lines Matching refs:fsdev

267 nandfs_sblocks_in_esize(struct nandfs_device *fsdev)
270 return ((fsdev->nd_erasesize - NANDFS_SBLOCK_OFFSET_BYTES) /
275 nandfs_max_sblocks(struct nandfs_device *fsdev)
278 return (NANDFS_NFSAREAS * nandfs_sblocks_in_esize(fsdev));
282 nandfs_sblocks_in_block(struct nandfs_device *fsdev)
285 return (fsdev->nd_devblocksize / sizeof(struct nandfs_super_block));
290 nandfs_sblocks_in_first_block(struct nandfs_device *fsdev)
294 n = nandfs_sblocks_in_block(fsdev) -
304 nandfs_write_superblock_at(struct nandfs_device *fsdev,
314 __func__, fstp->last_used, nandfs_sblocks_in_esize(fsdev)));
315 if (fstp->last_used == nandfs_sblocks_in_esize(fsdev) - 1)
320 super = &fsdev->nd_super;
323 sb_per_sector = nandfs_sblocks_in_block(fsdev);
340 error = nandfs_erase(fsdev, offset, fsdev->nd_erasesize);
344 error = bread(fsdev->nd_devvp, btodb(offset),
345 fsdev->nd_devblocksize, NOCRED, &bp);
352 memcpy(bp->b_data, &fsdev->nd_fsdata, sizeof(fsdev->nd_fsdata));
361 if (fsdev->nd_devblocksize > sizeof(fsdev->nd_fsdata))
362 memset(bp->b_data + sizeof(fsdev->nd_fsdata), 0xff,
363 fsdev->nd_devblocksize - sizeof(fsdev->nd_fsdata));
372 error = bread(fsdev->nd_devvp, read_block, fsdev->nd_devblocksize,
406 nandfs_write_superblock(struct nandfs_device *fsdev)
415 super = &fsdev->nd_super;
417 super->s_last_pseg = fsdev->nd_last_pseg;
418 super->s_last_cno = fsdev->nd_last_cno;
419 super->s_last_seq = fsdev->nd_seg_sequence;
422 nandfs_calc_superblock_crc(&fsdev->nd_fsdata, super);
425 for (i = 0, j = fsdev->nd_last_fsarea; i < NANDFS_NFSAREAS;
427 if (fsdev->nd_fsarea[j].flags & NANDFS_FSSTOR_FAILED) {
431 error = nandfs_write_superblock_at(fsdev, &fsdev->nd_fsarea[j]);
434 "%d\n", j * fsdev->nd_erasesize, error);
435 fsdev->nd_fsarea[j].flags |= NANDFS_FSSTOR_FAILED;
447 fsdev->nd_last_fsarea = (j + 1) % NANDFS_NFSAREAS;
453 nandfs_select_fsdata(struct nandfs_device *fsdev,
472 nandfs_select_sb(struct nandfs_device *fsdev,
480 if (!nandfs_check_superblock_crc(&fsdev->nd_fsdata, &supert[i]))
494 nandfs_read_structures_at(struct nandfs_device *fsdev,
506 if (fsdev->nd_erasesize > MAXBSIZE)
509 read_size = fsdev->nd_erasesize;
511 error = bread(fsdev->nd_devvp, btodb(offset), read_size, NOCRED, &bp);
529 for (i = 1; i < fsdev->nd_erasesize / read_size; i++) {
530 error = bread(fsdev->nd_devvp, btodb(offset + i * read_size),
544 fstp->last_used = nandfs_sblocks_in_esize(fsdev) - 1;
558 nandfs_read_structures(struct nandfs_device *fsdev)
567 nsbs = nandfs_max_sblocks(fsdev);
576 fsdev->nd_fsarea[i].offset = i * fsdev->nd_erasesize;
577 error = nandfs_read_structures_at(fsdev, &fsdev->nd_fsarea[i],
581 nrsbs += (fsdev->nd_fsarea[i].last_used + 1);
582 if (fsdev->nd_fsarea[fsdev->nd_last_fsarea].last_used >
583 fsdev->nd_fsarea[i].last_used)
584 fsdev->nd_last_fsarea = i;
593 error = nandfs_select_fsdata(fsdev, fsdatat, &fsdata, nfsds);
596 memcpy(&fsdev->nd_fsdata, fsdata, sizeof(struct nandfs_fsdata));
598 error = nandfs_select_sb(fsdev, sblocks, &ssblock, nsbs);
602 memcpy(&fsdev->nd_super, ssblock, sizeof(struct nandfs_super_block));
609 "last_pseg %#jx\n", __func__, fsdev->nd_super.s_wtime,
610 fsdev->nd_super.s_last_pseg));
730 "fsdev: last_seg: seq %#jx num %#jx, next_seg_num %#jx "