Lines Matching refs:info

43 zx_status_t blobfs_check_info(const blobfs_info_t* info, uint64_t max) {
44 if ((info->magic0 != kBlobfsMagic0) ||
45 (info->magic1 != kBlobfsMagic1)) {
49 if (info->version != kBlobfsVersion) {
50 fprintf(stderr, "blobfs: FS Version: %08x. Driver version: %08x\n", info->version,
54 if (info->block_size != kBlobfsBlockSize) {
55 fprintf(stderr, "blobfs: bsz %u unsupported\n", info->block_size);
58 if ((info->flags & kBlobFlagFVM) == 0) {
59 if (info->block_count + DataStartBlock(*info) > max) {
64 const size_t blocks_per_slice = info->slice_size / info->block_size;
66 size_t abm_blocks_needed = BlockMapBlocks(*info);
67 size_t abm_blocks_allocated = info->abm_slices * blocks_per_slice;
71 } else if (abm_blocks_allocated + BlockMapStartBlock(*info) >= NodeMapStartBlock(*info)) {
76 size_t ino_blocks_needed = NodeMapBlocks(*info);
77 size_t ino_blocks_allocated = info->ino_slices * blocks_per_slice;
81 } else if (ino_blocks_allocated + NodeMapStartBlock(*info) >= DataStartBlock(*info)) {
86 size_t dat_blocks_needed = DataBlocks(*info);
87 size_t dat_blocks_allocated = info->dat_slices * blocks_per_slice;
94 } else if (dat_blocks_allocated + DataStartBlock(*info) >
100 if (info->blob_header_next != 0) {
109 block_info_t info;
111 if ((r = ioctl_block_get_info(fd, &info)) < 0) {
114 *out = (info.block_size * info.block_count) / kBlobfsBlockSize;
154 blobfs_info_t info;
155 memset(&info, 0x00, sizeof(info));
156 info.magic0 = kBlobfsMagic0;
157 info.magic1 = kBlobfsMagic1;
158 info.version = kBlobfsVersion;
159 info.flags = kBlobFlagClean;
160 info.block_size = kBlobfsBlockSize;
162 info.block_count = block_count;
163 info.inode_count = inodes;
164 info.alloc_block_count = 0;
165 info.alloc_inode_count = 0;
166 info.blob_header_next = 0; // TODO(smklein): Allow chaining
167 // The result of DataStartBlock(info) is based on the current value of info.block_count. As a
169 info.block_count -= DataStartBlock(info); // Set block_count to number of data blocks
175 info.slice_size = fvm_info.slice_size;
176 info.flags |= kBlobFlagFVM;
178 if (info.slice_size % kBlobfsBlockSize) {
188 const size_t kBlocksPerSlice = info.slice_size / kBlobfsBlockSize;
209 info.abm_slices = 1;
210 info.ino_slices = 1;
211 info.dat_slices = static_cast<uint32_t>(request.length);
213 info.vslice_count = info.abm_slices + info.ino_slices + info.dat_slices + 1;
215 info.inode_count = static_cast<uint32_t>(info.ino_slices * info.slice_size / kBlobfsInodeSize);
216 info.block_count = static_cast<uint32_t>(info.dat_slices * info.slice_size / kBlobfsBlockSize);
223 xprintf("Block Count: %" PRIu64 "\n", TotalBlocks(info));
225 xprintf("FVM-aware: %s\n", (info.flags & kBlobFlagFVM) ? "YES" : "NO");
227 if (info.block_count < kMinimumDataBlocks) {
233 uint64_t bbm_blocks = BlockMapBlocks(info);
234 uint64_t nbm_blocks = NodeMapBlocks(info);
240 } else if (abm.Shrink(info.block_count)) {
247 info.alloc_block_count += kStartBlockMinimum;
249 if (info.inode_count * sizeof(blobfs_inode_t) != nbm_blocks * kBlobfsBlockSize) {
260 memcpy(block, &info, sizeof(info));
269 if ((status = writeblk(fd, BlockMapStartBlock(info) + n, bmdata)) < 0) {
278 if (writeblk(fd, NodeMapStartBlock(info) + n, block)) {