Lines Matching refs:file_set

169 static int luo_alloc_files_mem(struct luo_file_set *file_set)  in luo_alloc_files_mem()  argument
174 if (file_set->files) in luo_alloc_files_mem()
177 WARN_ON_ONCE(file_set->count); in luo_alloc_files_mem()
184 file_set->files = mem; in luo_alloc_files_mem()
189 static void luo_free_files_mem(struct luo_file_set *file_set) in luo_free_files_mem() argument
192 if (file_set->count) in luo_free_files_mem()
195 if (!file_set->files) in luo_free_files_mem()
198 kho_unpreserve_free(file_set->files); in luo_free_files_mem()
199 file_set->files = NULL; in luo_free_files_mem()
202 static bool luo_token_is_used(struct luo_file_set *file_set, u64 token) in luo_token_is_used() argument
206 list_for_each_entry(iter, &file_set->files_list, list) { in luo_token_is_used()
253 int luo_preserve_file(struct luo_file_set *file_set, u64 token, int fd) in luo_preserve_file() argument
261 if (luo_token_is_used(file_set, token)) in luo_preserve_file()
264 if (file_set->count == LUO_FILE_MAX) in luo_preserve_file()
271 err = luo_alloc_files_mem(file_set); in luo_preserve_file()
307 list_add_tail(&luo_file->list, &file_set->files_list); in luo_preserve_file()
308 file_set->count++; in luo_preserve_file()
315 luo_free_files_mem(file_set); in luo_preserve_file()
340 void luo_file_unpreserve_files(struct luo_file_set *file_set) in luo_file_unpreserve_files() argument
344 while (!list_empty(&file_set->files_list)) { in luo_file_unpreserve_files()
347 luo_file = list_last_entry(&file_set->files_list, in luo_file_unpreserve_files()
357 file_set->count--; in luo_file_unpreserve_files()
364 luo_free_files_mem(file_set); in luo_file_unpreserve_files()
367 static int luo_file_freeze_one(struct luo_file_set *file_set, in luo_file_freeze_one() argument
390 static void luo_file_unfreeze_one(struct luo_file_set *file_set, in luo_file_unfreeze_one() argument
409 static void __luo_file_unfreeze(struct luo_file_set *file_set, in __luo_file_unfreeze() argument
412 struct list_head *files_list = &file_set->files_list; in __luo_file_unfreeze()
419 luo_file_unfreeze_one(file_set, luo_file); in __luo_file_unfreeze()
422 memset(file_set->files, 0, LUO_FILE_PGCNT << PAGE_SHIFT); in __luo_file_unfreeze()
458 int luo_file_freeze(struct luo_file_set *file_set, in luo_file_freeze() argument
461 struct luo_file_ser *file_ser = file_set->files; in luo_file_freeze()
466 if (!file_set->count) in luo_file_freeze()
473 list_for_each_entry(luo_file, &file_set->files_list, list) { in luo_file_freeze()
474 err = luo_file_freeze_one(file_set, luo_file); in luo_file_freeze()
489 file_set_ser->count = file_set->count; in luo_file_freeze()
490 if (file_set->files) in luo_file_freeze()
491 file_set_ser->files = virt_to_phys(file_set->files); in luo_file_freeze()
496 __luo_file_unfreeze(file_set, luo_file); in luo_file_freeze()
517 void luo_file_unfreeze(struct luo_file_set *file_set, in luo_file_unfreeze() argument
520 if (!file_set->count) in luo_file_unfreeze()
523 __luo_file_unfreeze(file_set, NULL); in luo_file_unfreeze()
552 int luo_retrieve_file(struct luo_file_set *file_set, u64 token, in luo_retrieve_file() argument
560 if (list_empty(&file_set->files_list)) in luo_retrieve_file()
563 list_for_each_entry(luo_file, &file_set->files_list, list) { in luo_retrieve_file()
599 static int luo_file_can_finish_one(struct luo_file_set *file_set, in luo_file_can_finish_one() argument
619 static void luo_file_finish_one(struct luo_file_set *file_set, in luo_file_finish_one() argument
666 int luo_file_finish(struct luo_file_set *file_set) in luo_file_finish() argument
668 struct list_head *files_list = &file_set->files_list; in luo_file_finish()
672 if (!file_set->count) in luo_file_finish()
676 err = luo_file_can_finish_one(file_set, luo_file); in luo_file_finish()
681 while (!list_empty(&file_set->files_list)) { in luo_file_finish()
682 luo_file = list_last_entry(&file_set->files_list, in luo_file_finish()
685 luo_file_finish_one(file_set, luo_file); in luo_file_finish()
690 file_set->count--; in luo_file_finish()
695 if (file_set->files) { in luo_file_finish()
696 kho_restore_free(file_set->files); in luo_file_finish()
697 file_set->files = NULL; in luo_file_finish()
728 int luo_file_deserialize(struct luo_file_set *file_set, in luo_file_deserialize() argument
739 file_set->count = file_set_ser->count; in luo_file_deserialize()
740 file_set->files = phys_to_virt(file_set_ser->files); in luo_file_deserialize()
757 file_ser = file_set->files; in luo_file_deserialize()
758 for (i = 0; i < file_set->count; i++) { in luo_file_deserialize()
786 list_add_tail(&luo_file->list, &file_set->files_list); in luo_file_deserialize()
792 void luo_file_set_init(struct luo_file_set *file_set) in luo_file_set_init() argument
794 INIT_LIST_HEAD(&file_set->files_list); in luo_file_set_init()
797 void luo_file_set_destroy(struct luo_file_set *file_set) in luo_file_set_destroy() argument
799 WARN_ON(file_set->count); in luo_file_set_destroy()
800 WARN_ON(!list_empty(&file_set->files_list)); in luo_file_set_destroy()