swap.c (c465a76af658b443075d6efee1c3131257643020) swap.c (9a1c3542768b5a58e45a9216921cd10a3bae1205)
1/*
2 * linux/kernel/power/swap.c
3 *
4 * This file provides functions for reading the suspend image from
5 * and writing it to a swap partition.
6 *
7 * Copyright (C) 1998,2001-2005 Pavel Machek <pavel@suse.cz>
8 * Copyright (C) 2006 Rafael J. Wysocki <rjw@sisk.pl>

--- 164 unchanged lines hidden (view full) ---

173
174 root_swap = res;
175 res = blkdev_get(resume_bdev, FMODE_WRITE, O_RDWR);
176 if (res)
177 return res;
178
179 res = set_blocksize(resume_bdev, PAGE_SIZE);
180 if (res < 0)
1/*
2 * linux/kernel/power/swap.c
3 *
4 * This file provides functions for reading the suspend image from
5 * and writing it to a swap partition.
6 *
7 * Copyright (C) 1998,2001-2005 Pavel Machek <pavel@suse.cz>
8 * Copyright (C) 2006 Rafael J. Wysocki <rjw@sisk.pl>

--- 164 unchanged lines hidden (view full) ---

173
174 root_swap = res;
175 res = blkdev_get(resume_bdev, FMODE_WRITE, O_RDWR);
176 if (res)
177 return res;
178
179 res = set_blocksize(resume_bdev, PAGE_SIZE);
180 if (res < 0)
181 blkdev_put(resume_bdev);
181 blkdev_put(resume_bdev, FMODE_WRITE);
182
183 return res;
184}
185
186/**
187 * write_page - Write one page to given swap location.
188 * @buf: Address we're writing.
189 * @offset: Offset of the swap page we're writing to.

--- 379 unchanged lines hidden (view full) ---

569 header = (struct swsusp_info *)data_of(snapshot);
570 error = get_swap_reader(&handle, swsusp_header->image);
571 if (!error)
572 error = swap_read_page(&handle, header, NULL);
573 if (!error)
574 error = load_image(&handle, &snapshot, header->pages - 1);
575 release_swap_reader(&handle);
576
182
183 return res;
184}
185
186/**
187 * write_page - Write one page to given swap location.
188 * @buf: Address we're writing.
189 * @offset: Offset of the swap page we're writing to.

--- 379 unchanged lines hidden (view full) ---

569 header = (struct swsusp_info *)data_of(snapshot);
570 error = get_swap_reader(&handle, swsusp_header->image);
571 if (!error)
572 error = swap_read_page(&handle, header, NULL);
573 if (!error)
574 error = load_image(&handle, &snapshot, header->pages - 1);
575 release_swap_reader(&handle);
576
577 blkdev_put(resume_bdev);
577 blkdev_put(resume_bdev, FMODE_READ);
578
579 if (!error)
580 pr_debug("PM: Image successfully loaded\n");
581 else
582 pr_debug("PM: Error %d resuming\n", error);
583 return error;
584}
585

--- 18 unchanged lines hidden (view full) ---

604 memcpy(swsusp_header->sig, swsusp_header->orig_sig, 10);
605 /* Reset swap signature now */
606 error = bio_write_page(swsusp_resume_block,
607 swsusp_header, NULL);
608 } else {
609 return -EINVAL;
610 }
611 if (error)
578
579 if (!error)
580 pr_debug("PM: Image successfully loaded\n");
581 else
582 pr_debug("PM: Error %d resuming\n", error);
583 return error;
584}
585

--- 18 unchanged lines hidden (view full) ---

604 memcpy(swsusp_header->sig, swsusp_header->orig_sig, 10);
605 /* Reset swap signature now */
606 error = bio_write_page(swsusp_resume_block,
607 swsusp_header, NULL);
608 } else {
609 return -EINVAL;
610 }
611 if (error)
612 blkdev_put(resume_bdev);
612 blkdev_put(resume_bdev, FMODE_READ);
613 else
614 pr_debug("PM: Signature found, resuming\n");
615 } else {
616 error = PTR_ERR(resume_bdev);
617 }
618
619 if (error)
620 pr_debug("PM: Error %d checking image file\n", error);

--- 7 unchanged lines hidden (view full) ---

628
629void swsusp_close(void)
630{
631 if (IS_ERR(resume_bdev)) {
632 pr_debug("PM: Image device not initialised\n");
633 return;
634 }
635
613 else
614 pr_debug("PM: Signature found, resuming\n");
615 } else {
616 error = PTR_ERR(resume_bdev);
617 }
618
619 if (error)
620 pr_debug("PM: Error %d checking image file\n", error);

--- 7 unchanged lines hidden (view full) ---

628
629void swsusp_close(void)
630{
631 if (IS_ERR(resume_bdev)) {
632 pr_debug("PM: Image device not initialised\n");
633 return;
634 }
635
636 blkdev_put(resume_bdev);
636 blkdev_put(resume_bdev, 0); /* move up */
637}
638
639static int swsusp_header_init(void)
640{
641 swsusp_header = (struct swsusp_header*) __get_free_page(GFP_KERNEL);
642 if (!swsusp_header)
643 panic("Could not allocate memory for swsusp_header\n");
644 return 0;
645}
646
647core_initcall(swsusp_header_init);
637}
638
639static int swsusp_header_init(void)
640{
641 swsusp_header = (struct swsusp_header*) __get_free_page(GFP_KERNEL);
642 if (!swsusp_header)
643 panic("Could not allocate memory for swsusp_header\n");
644 return 0;
645}
646
647core_initcall(swsusp_header_init);