Lines Matching refs:handle
302 static int mark_swapfiles(struct swap_map_handle *handle, unsigned int flags) in mark_swapfiles() argument
311 swsusp_header->image = handle->first_sector; in mark_swapfiles()
318 swsusp_header->crc32 = handle->crc32; in mark_swapfiles()
387 static void release_swap_writer(struct swap_map_handle *handle) in release_swap_writer() argument
389 if (handle->cur) in release_swap_writer()
390 free_page((unsigned long)handle->cur); in release_swap_writer()
391 handle->cur = NULL; in release_swap_writer()
394 static int get_swap_writer(struct swap_map_handle *handle) in get_swap_writer() argument
404 handle->cur = (struct swap_map_page *)get_zeroed_page(GFP_KERNEL); in get_swap_writer()
405 if (!handle->cur) { in get_swap_writer()
409 handle->cur_swap = alloc_swapdev_block(root_swap); in get_swap_writer()
410 if (!handle->cur_swap) { in get_swap_writer()
414 handle->k = 0; in get_swap_writer()
415 handle->reqd_free_pages = reqd_free_pages(); in get_swap_writer()
416 handle->first_sector = handle->cur_swap; in get_swap_writer()
419 release_swap_writer(handle); in get_swap_writer()
425 static int swap_write_page(struct swap_map_handle *handle, void *buf, in swap_write_page() argument
431 if (!handle->cur) in swap_write_page()
437 handle->cur->entries[handle->k++] = offset; in swap_write_page()
438 if (handle->k >= MAP_PAGE_ENTRIES) { in swap_write_page()
442 handle->cur->next_swap = offset; in swap_write_page()
443 error = write_page(handle->cur, handle->cur_swap, hb); in swap_write_page()
446 clear_page(handle->cur); in swap_write_page()
447 handle->cur_swap = offset; in swap_write_page()
448 handle->k = 0; in swap_write_page()
450 if (hb && low_free_pages() <= handle->reqd_free_pages) { in swap_write_page()
458 handle->reqd_free_pages = reqd_free_pages(); in swap_write_page()
465 static int flush_swap_writer(struct swap_map_handle *handle) in flush_swap_writer() argument
467 if (handle->cur && handle->cur_swap) in flush_swap_writer()
468 return write_page(handle->cur, handle->cur_swap, NULL); in flush_swap_writer()
473 static int swap_writer_finish(struct swap_map_handle *handle, in swap_writer_finish() argument
478 error = mark_swapfiles(handle, flags); in swap_writer_finish()
480 flush_swap_writer(handle); in swap_writer_finish()
485 release_swap_writer(handle); in swap_writer_finish()
517 static int save_image(struct swap_map_handle *handle, in save_image() argument
542 ret = swap_write_page(handle, data_of(*snapshot), &hb); in save_image()
691 static int save_compressed_image(struct swap_map_handle *handle, in save_compressed_image() argument
778 handle->crc32 = 0; in save_compressed_image()
779 crc->crc32 = &handle->crc32; in save_compressed_image()
797 handle->reqd_free_pages = reqd_free_pages(); in save_compressed_image()
876 ret = swap_write_page(handle, page, &hb); in save_compressed_image()
945 struct swap_map_handle handle; in swsusp_write() local
952 error = get_swap_writer(&handle); in swsusp_write()
973 error = swap_write_page(&handle, header, NULL); in swsusp_write()
976 save_image(&handle, &snapshot, pages - 1) : in swsusp_write()
977 save_compressed_image(&handle, &snapshot, pages - 1); in swsusp_write()
980 error = swap_writer_finish(&handle, flags, error); in swsusp_write()
989 static void release_swap_reader(struct swap_map_handle *handle) in release_swap_reader() argument
993 while (handle->maps) { in release_swap_reader()
994 if (handle->maps->map) in release_swap_reader()
995 free_page((unsigned long)handle->maps->map); in release_swap_reader()
996 tmp = handle->maps; in release_swap_reader()
997 handle->maps = handle->maps->next; in release_swap_reader()
1000 handle->cur = NULL; in release_swap_reader()
1003 static int get_swap_reader(struct swap_map_handle *handle, in get_swap_reader() argument
1015 handle->cur = NULL; in get_swap_reader()
1016 last = handle->maps = NULL; in get_swap_reader()
1019 tmp = kzalloc_obj(*handle->maps); in get_swap_reader()
1021 release_swap_reader(handle); in get_swap_reader()
1024 if (!handle->maps) in get_swap_reader()
1025 handle->maps = tmp; in get_swap_reader()
1033 release_swap_reader(handle); in get_swap_reader()
1039 release_swap_reader(handle); in get_swap_reader()
1044 handle->k = 0; in get_swap_reader()
1045 handle->cur = handle->maps->map; in get_swap_reader()
1049 static int swap_read_page(struct swap_map_handle *handle, void *buf, in swap_read_page() argument
1056 if (!handle->cur) in swap_read_page()
1058 offset = handle->cur->entries[handle->k]; in swap_read_page()
1067 if (++handle->k >= MAP_PAGE_ENTRIES) { in swap_read_page()
1068 handle->k = 0; in swap_read_page()
1069 free_page((unsigned long)handle->maps->map); in swap_read_page()
1070 tmp = handle->maps; in swap_read_page()
1071 handle->maps = handle->maps->next; in swap_read_page()
1073 if (!handle->maps) in swap_read_page()
1074 release_swap_reader(handle); in swap_read_page()
1076 handle->cur = handle->maps->map; in swap_read_page()
1081 static int swap_reader_finish(struct swap_map_handle *handle) in swap_reader_finish() argument
1083 release_swap_reader(handle); in swap_reader_finish()
1088 static int load_image(struct swap_map_handle *handle, in load_image() argument
1113 ret = swap_read_page(handle, data_of(*snapshot), &hb); in load_image()
1192 static int load_compressed_image(struct swap_map_handle *handle, in load_compressed_image() argument
1282 handle->crc32 = 0; in load_compressed_image()
1283 crc->crc32 = &handle->crc32; in load_compressed_image()
1342 ret = swap_read_page(handle, page[ring], &hb); in load_compressed_image()
1348 if (handle->cur && in load_compressed_image()
1349 handle->cur->entries[handle->k]) { in load_compressed_image()
1490 if(handle->crc32 != swsusp_header->crc32) { in load_compressed_image()
1530 struct swap_map_handle handle; in swsusp_read() local
1539 error = get_swap_reader(&handle, flags_p); in swsusp_read()
1543 error = swap_read_page(&handle, header, NULL); in swsusp_read()
1546 load_image(&handle, &snapshot, header->pages - 1) : in swsusp_read()
1547 load_compressed_image(&handle, &snapshot, header->pages - 1); in swsusp_read()
1549 swap_reader_finish(&handle); in swsusp_read()