Lines Matching refs:df
26 static int incfs_scan_metadata_chain(struct data_file *df);
221 struct data_file *df) in handle_mapped_file() argument
230 file_id_str = file_id_to_str(df->df_id); in handle_mapped_file()
266 result->df_mapped_offset = df->df_metadata_off; in handle_mapped_file()
275 struct data_file *df = NULL; in incfs_open_data_file() local
292 df = kzalloc(sizeof(*df), GFP_NOFS); in incfs_open_data_file()
293 if (!df) { in incfs_open_data_file()
298 mutex_init(&df->df_enable_verity); in incfs_open_data_file()
300 df->df_backing_file_context = bfc; in incfs_open_data_file()
301 df->df_mount_info = mi; in incfs_open_data_file()
302 for (i = 0; i < ARRAY_SIZE(df->df_segments); i++) in incfs_open_data_file()
303 data_file_segment_init(&df->df_segments[i]); in incfs_open_data_file()
305 error = incfs_read_file_header(bfc, &df->df_metadata_off, &df->df_id, in incfs_open_data_file()
306 &size, &df->df_header_flags); in incfs_open_data_file()
311 df->df_size = size; in incfs_open_data_file()
313 df->df_data_block_count = get_blocks_count_for_size(size); in incfs_open_data_file()
315 if (df->df_header_flags & INCFS_FILE_MAPPED) { in incfs_open_data_file()
316 struct data_file *mapped_df = handle_mapped_file(mi, df); in incfs_open_data_file()
318 incfs_free_data_file(df); in incfs_open_data_file()
322 md_records = incfs_scan_metadata_chain(df); in incfs_open_data_file()
329 if (df) in incfs_open_data_file()
330 df->df_backing_file_context = NULL; in incfs_open_data_file()
331 incfs_free_data_file(df); in incfs_open_data_file()
334 return df; in incfs_open_data_file()
337 void incfs_free_data_file(struct data_file *df) in incfs_free_data_file() argument
341 if (!df) in incfs_free_data_file()
344 data_blocks_written = atomic_read(&df->df_data_blocks_written); in incfs_free_data_file()
345 hash_blocks_written = atomic_read(&df->df_hash_blocks_written); in incfs_free_data_file()
347 if (data_blocks_written != df->df_initial_data_blocks_written || in incfs_free_data_file()
348 hash_blocks_written != df->df_initial_hash_blocks_written) { in incfs_free_data_file()
349 struct backing_file_context *bfc = df->df_backing_file_context; in incfs_free_data_file()
354 df->df_backing_file_context, in incfs_free_data_file()
355 df->df_status_offset, in incfs_free_data_file()
366 incfs_free_mtree(df->df_hash_tree); in incfs_free_data_file()
367 incfs_free_bfc(df->df_backing_file_context); in incfs_free_data_file()
368 kfree(df->df_signature); in incfs_free_data_file()
369 kfree(df->df_verity_file_digest.data); in incfs_free_data_file()
370 kfree(df->df_verity_signature); in incfs_free_data_file()
371 mutex_destroy(&df->df_enable_verity); in incfs_free_data_file()
372 kfree(df); in incfs_free_data_file()
380 struct data_file *df = NULL; in make_inode_ready_for_data_ops() local
386 df = incfs_open_data_file(mi, backing_file); in make_inode_ready_for_data_ops()
388 if (IS_ERR(df)) in make_inode_ready_for_data_ops()
389 err = PTR_ERR(df); in make_inode_ready_for_data_ops()
391 node->n_file = df; in make_inode_ready_for_data_ops()
671 struct data_file *df = get_incfs_data_file(f); in validate_hash_tree() local
689 tree = smp_load_acquire(&df->df_hash_tree); in validate_hash_tree()
690 sig = df->df_signature; in validate_hash_tree()
709 file_pages = DIV_ROUND_UP(df->df_size, INCFS_DATA_FILE_BLOCK_SIZE); in validate_hash_tree()
787 static struct data_file_segment *get_file_segment(struct data_file *df, in get_file_segment() argument
790 int seg_idx = block_index % ARRAY_SIZE(df->df_segments); in get_file_segment()
792 return &df->df_segments[seg_idx]; in get_file_segment()
815 static int get_data_file_block(struct data_file *df, int index, in get_data_file_block() argument
823 if (!df || !res_block) in get_data_file_block()
826 blockmap_off = df->df_blockmap_off; in get_data_file_block()
827 bfc = df->df_backing_file_context; in get_data_file_block()
863 int incfs_get_filled_blocks(struct data_file *df, in incfs_get_filled_blocks() argument
873 arg->end_index ? arg->end_index : df->df_total_block_count; in incfs_get_filled_blocks()
882 if (end_index > df->df_total_block_count) in incfs_get_filled_blocks()
883 end_index = df->df_total_block_count; in incfs_get_filled_blocks()
884 arg->total_blocks_out = df->df_total_block_count; in incfs_get_filled_blocks()
885 arg->data_blocks_out = df->df_data_block_count; in incfs_get_filled_blocks()
887 if (atomic_read(&df->df_data_blocks_written) == in incfs_get_filled_blocks()
888 df->df_data_block_count) { in incfs_get_filled_blocks()
923 df->df_backing_file_context, bme, in incfs_get_filled_blocks()
925 df->df_blockmap_off); in incfs_get_filled_blocks()
942 if (arg->index_out >= df->df_data_block_count) in incfs_get_filled_blocks()
989 if (fd->fd_get_block_pos == df->df_total_block_count + 1) { in incfs_get_filled_blocks()
991 atomic_read(&df->df_data_blocks_written)) in incfs_get_filled_blocks()
992 atomic_set(&df->df_data_blocks_written, in incfs_get_filled_blocks()
996 atomic_read(&df->df_hash_blocks_written)) in incfs_get_filled_blocks()
997 atomic_set(&df->df_hash_blocks_written, in incfs_get_filled_blocks()
1019 static struct pending_read *add_pending_read(struct data_file *df, in add_pending_read() argument
1026 segment = get_file_segment(df, block_index); in add_pending_read()
1027 mi = df->df_mount_info; in add_pending_read()
1033 result->file_id = df->df_id; in add_pending_read()
1062 static void remove_pending_read(struct data_file *df, struct pending_read *read) in remove_pending_read() argument
1066 if (!df || !read) { in remove_pending_read()
1067 WARN_ON(!df); in remove_pending_read()
1072 mi = df->df_mount_info; in remove_pending_read()
1123 static int wait_for_data_block(struct data_file *df, int block_index, in wait_for_data_block() argument
1136 if (!df || !res_block) in wait_for_data_block()
1139 if (block_index < 0 || block_index >= df->df_data_block_count) in wait_for_data_block()
1142 if (df->df_blockmap_off <= 0 || !df->df_mount_info) in wait_for_data_block()
1145 mi = df->df_mount_info; in wait_for_data_block()
1146 segment = get_file_segment(df, block_index); in wait_for_data_block()
1153 error = get_data_file_block(df, block_index, &block); in wait_for_data_block()
1172 read = add_pending_read(df, block_index); in wait_for_data_block()
1176 log_block_read(mi, &df->df_id, block_index); in wait_for_data_block()
1194 remove_pending_read(df, read); in wait_for_data_block()
1198 log_block_read(mi, &df->df_id, block_index); in wait_for_data_block()
1228 error = get_data_file_block(df, block_index, &block); in wait_for_data_block()
1262 struct mount_info *mi, struct data_file *df) in incfs_update_sysfs_error() argument
1273 mi->mi_le_file_id = df->df_id; in incfs_update_sysfs_error()
1293 struct data_file *df = get_incfs_data_file(f); in incfs_read_data_file_block() local
1295 if (!dst.data || !df || !tmp.data) in incfs_read_data_file_block()
1301 mi = df->df_mount_info; in incfs_read_data_file_block()
1302 bfc = df->df_backing_file_context; in incfs_read_data_file_block()
1304 result = wait_for_data_block(df, index, &block, timeouts); in incfs_read_data_file_block()
1344 log_block_read(mi, &df->df_id, index); in incfs_read_data_file_block()
1354 incfs_update_sysfs_error(f, index, result, mi, df); in incfs_read_data_file_block()
1360 struct data_file *df, size_t offset) in incfs_read_merkle_tree_blocks() argument
1366 if (!dst.data || !df) in incfs_read_merkle_tree_blocks()
1369 sig = df->df_signature; in incfs_read_merkle_tree_blocks()
1370 bfc = df->df_backing_file_context; in incfs_read_merkle_tree_blocks()
1381 int incfs_process_new_data_block(struct data_file *df, in incfs_process_new_data_block() argument
1391 if (!df || !block) in incfs_process_new_data_block()
1394 bfc = df->df_backing_file_context; in incfs_process_new_data_block()
1395 mi = df->df_mount_info; in incfs_process_new_data_block()
1397 if (block->block_index >= df->df_data_block_count) in incfs_process_new_data_block()
1400 segment = get_file_segment(df, block->block_index); in incfs_process_new_data_block()
1415 error = get_data_file_block(df, block->block_index, &existing_block); in incfs_process_new_data_block()
1434 df->df_blockmap_off, flags); in incfs_process_new_data_block()
1439 atomic_inc(&df->df_data_blocks_written); in incfs_process_new_data_block()
1449 int incfs_read_file_signature(struct data_file *df, struct mem_range dst) in incfs_read_file_signature() argument
1451 struct backing_file_context *bfc = df->df_backing_file_context; in incfs_read_file_signature()
1458 sig = df->df_signature; in incfs_read_file_signature()
1476 int incfs_process_new_hash_block(struct data_file *df, in incfs_process_new_hash_block() argument
1487 if (!df || !block) in incfs_process_new_hash_block()
1493 bfc = df->df_backing_file_context; in incfs_process_new_hash_block()
1494 mi = df->df_mount_info; in incfs_process_new_hash_block()
1496 if (!df) in incfs_process_new_hash_block()
1499 hash_tree = df->df_hash_tree; in incfs_process_new_hash_block()
1500 sig = df->df_signature; in incfs_process_new_hash_block()
1516 hash_area_base, df->df_blockmap_off, df->df_size); in incfs_process_new_hash_block()
1520 atomic_inc(&df->df_hash_blocks_written); in incfs_process_new_hash_block()
1528 struct data_file *df = handler->context; in process_blockmap_md() local
1533 if (!df) in process_blockmap_md()
1536 if (df->df_data_block_count > block_count) in process_blockmap_md()
1539 df->df_total_block_count = block_count; in process_blockmap_md()
1540 df->df_blockmap_off = base_off; in process_blockmap_md()
1547 struct data_file *df = handler->context; in process_file_signature_md() local
1558 if (!df || !df->df_backing_file_context || in process_file_signature_md()
1559 !df->df_backing_file_context->bc_file) { in process_file_signature_md()
1575 read = incfs_kread(df->df_backing_file_context, buf, in process_file_signature_md()
1588 df->df_data_block_count); in process_file_signature_md()
1607 df->df_hash_tree = hash_tree; in process_file_signature_md()
1609 df->df_signature = signature; in process_file_signature_md()
1622 struct data_file *df = handler->context; in process_status_md() local
1624 df->df_initial_data_blocks_written = in process_status_md()
1626 atomic_set(&df->df_data_blocks_written, in process_status_md()
1627 df->df_initial_data_blocks_written); in process_status_md()
1629 df->df_initial_hash_blocks_written = in process_status_md()
1631 atomic_set(&df->df_hash_blocks_written, in process_status_md()
1632 df->df_initial_hash_blocks_written); in process_status_md()
1634 df->df_status_offset = handler->md_record_offset; in process_status_md()
1642 struct data_file *df = handler->context; in process_file_verity_signature_md() local
1645 if (!df) in process_file_verity_signature_md()
1659 df->df_verity_signature = verity_signature; in process_file_verity_signature_md()
1663 static int incfs_scan_metadata_chain(struct data_file *df) in incfs_scan_metadata_chain() argument
1672 if (!df || !df->df_backing_file_context) in incfs_scan_metadata_chain()
1675 bfc = df->df_backing_file_context; in incfs_scan_metadata_chain()
1681 handler->md_record_offset = df->df_metadata_off; in incfs_scan_metadata_chain()
1682 handler->context = df; in incfs_scan_metadata_chain()
1705 nondata_block_count = df->df_total_block_count - in incfs_scan_metadata_chain()
1706 df->df_data_block_count; in incfs_scan_metadata_chain()
1707 if (df->df_hash_tree) { in incfs_scan_metadata_chain()
1709 df->df_hash_tree->hash_tree_area_size); in incfs_scan_metadata_chain()