SOURCES (LINUX_2_6): linux-2.6-suspend2.patch - Updated to current-tuxonice...

lmasko lmasko at pld-linux.org
Wed Feb 18 14:40:22 CET 2009


Author: lmasko                       Date: Wed Feb 18 13:40:22 2009 GMT
Module: SOURCES                       Tag: LINUX_2_6
---- Log message:
- Updated to current-tuxonice-for-2.6.28.patch-20090214-v1, which is
  recomended over the previous version.

---- Files affected:
SOURCES:
   linux-2.6-suspend2.patch (1.1.2.2.2.14 -> 1.1.2.2.2.15) 

---- Diffs:

================================================================
Index: SOURCES/linux-2.6-suspend2.patch
diff -u SOURCES/linux-2.6-suspend2.patch:1.1.2.2.2.14 SOURCES/linux-2.6-suspend2.patch:1.1.2.2.2.15
--- SOURCES/linux-2.6-suspend2.patch:1.1.2.2.2.14	Thu Jan 15 13:52:29 2009
+++ SOURCES/linux-2.6-suspend2.patch	Wed Feb 18 14:40:16 2009
@@ -1,6 +1,6 @@
 diff --git a/Documentation/power/tuxonice-internals.txt b/Documentation/power/tuxonice-internals.txt
 new file mode 100644
-index 0000000..68c0454
+index 0000000..cca629a
 --- /dev/null
 +++ b/Documentation/power/tuxonice-internals.txt
 @@ -0,0 +1,474 @@
@@ -109,7 +109,7 @@
 +    Second, we have constraints on the amount of storage available. In these
 +    calculations, we may also consider any compression that will be done. The
 +    cryptoapi module allows the user to configure an expected compression ratio.
-+   
++
 +    Third, the user can specify an arbitrary limit on the image size, in
 +    megabytes. This limit is treated as a soft limit, so that we don't fail the
 +    attempt to suspend if we cannot meet this constraint.
@@ -122,7 +122,7 @@
 +    seek to free the amount of memory that we calculate is needed and try again.
 +    We allow up to four iterations of this loop before aborting the cycle. If we
 +    do fail, it should only be because of a bug in TuxOnIce's calculations.
-+    
++
 +    These steps are merged together in the prepare_image function, found in
 +    prepare_image.c. The functions are merged because of the cyclical nature
 +    of the problem of calculating how much memory and storage is needed. Since
@@ -480,7 +480,7 @@
 +
 diff --git a/Documentation/power/tuxonice.txt b/Documentation/power/tuxonice.txt
 new file mode 100644
-index 0000000..d13ce85
+index 0000000..49199ff
 --- /dev/null
 +++ b/Documentation/power/tuxonice.txt
 @@ -0,0 +1,750 @@
@@ -529,7 +529,7 @@
 +2. Why would you want it?
 +
 +   Why wouldn't you want it?
-+   
++
 +   Being able to save the state of your system and quickly restore it improves
 +   your productivity - you get a useful system in far less time than through
 +   the normal boot process. You also get to be completely 'green', using zero
@@ -537,13 +537,13 @@
 +   minimal power to some devices, so they can initiate a power on, but that
 +   will be the same amount of power as would be used if you told the computer
 +   to shutdown.
-+   
++
 +3. What do you need to use it?
 +
 +   a. Kernel Support.
 +
 +   i) The TuxOnIce patch.
-+   
++
 +   TuxOnIce is part of the Linux Kernel. This version is not part of Linus's
 +   2.6 tree at the moment, so you will need to download the kernel source and
 +   apply the latest patch. Having done that, enable the appropriate options in
@@ -586,7 +586,7 @@
 +   add the amount of memory you have. This swapspace can be arranged in any way
 +   you'd like. It can be in one partition or file, or spread over a number. The
 +   only requirement is that they be active when you start a hibernation cycle.
-+   
++
 +   There is one exception to this requirement. TuxOnIce has the ability to turn
 +   on one swap file or partition at the start of hibernating and turn it back off
 +   at the end. If you want to ensure you have enough memory to store a image
@@ -628,13 +628,13 @@
 +   ---EXAMPLE-ONLY-DON'T-COPY-AND-PASTE---
 +   # cat /sys/power/tuxonice/resume
 +   file:/dev/hda2:0x1e001
-+   
++
 +   In this example, we would edit the append= line of our lilo.conf|menu.lst
 +   so that it included:
 +
 +   resume=file:/dev/hda2:0x1e001
 +   ---EXAMPLE-ONLY-DON'T-COPY-AND-PASTE---
-+ 
++
 +   For those who are thinking 'Could I make the file sparse?', the answer is
 +   'No!'. At the moment, there is no way for TuxOnIce to fill in the holes in
 +   a sparse file while hibernating. In the longer term (post merge!), I'd like
@@ -643,13 +643,13 @@
 +   priority.
 +
 +   c. Bootloader configuration.
-+   
-+   Using TuxOnIce also requires that you add an extra parameter to 
++
++   Using TuxOnIce also requires that you add an extra parameter to
 +   your lilo.conf or equivalent. Here's an example for a swap partition:
 +
 +   append="resume=swap:/dev/hda1"
 +
-+   This would tell TuxOnIce that /dev/hda1 is a swap partition you 
++   This would tell TuxOnIce that /dev/hda1 is a swap partition you
 +   have. TuxOnIce will use the swap signature of this partition as a
 +   pointer to your data when you hibernate. This means that (in this example)
 +   /dev/hda1 doesn't need to be _the_ swap partition where all of your data
@@ -658,7 +658,7 @@
 +
 +   You don't need to have a swap partition for this purpose. TuxOnIce
 +   can also use a swap file, but usage is a little more complex. Having made
-+   your swap file, turn it on and do 
++   your swap file, turn it on and do
 +
 +   cat /sys/power/tuxonice/swap/headerlocations
 +
@@ -700,8 +700,8 @@
 +   - Switching to a text console and back if X doesn't like the video card
 +     status on resume.
 +   - Un/reloading drivers that don't play well with hibernation.
-+  
-+   Note that you might not be able to unload some drivers if there are 
++
++   Note that you might not be able to unload some drivers if there are
 +   processes using them. You might have to kill off processes that hold
 +   devices open. Hint: if your X server accesses an USB mouse, doing a
 +   'chvt' to a text console releases the device and you can unload the
@@ -790,7 +790,7 @@
 +   You can change the settings for powering down while the image is being
 +   written by pressing 'R' to toggle rebooting and 'O' to toggle between
 +   suspending to ram and powering down completely).
-+   
++
 +   If you run into problems with resuming, adding the "noresume" option to
 +   the kernel command line will let you skip the resume step and recover your
 +   system. This option shouldn't normally be needed, because TuxOnIce modifies
@@ -818,7 +818,7 @@
 +   writeable ones are accessible only to the root user. You may want to
 +   configure sudo to allow you to invoke your hibernate script as an ordinary
 +   user.
-+ 
++
 +   - checksum/enabled
 +
 +   Use cryptoapi hashing routines to verify that Pageset2 pages don't change
@@ -828,7 +828,7 @@
 +   being able to resume, enable this option, hibernate and cancel the cycle
 +   after the atomic copy is done. If the debugging info shows a non-zero
 +   number of pages resaved, please report this to Nigel.
-+ 
++
 +   - compression/algorithm
 +
 +   Set the cryptoapi algorithm used for compressing the image.
@@ -842,7 +842,7 @@
 +   ratio is achieved in the logs after hibernating.
 +
 +   - debug_info:
-+  
++
 +   This file returns information about your configuration that may be helpful
 +   in diagnosing problems with hibernating.
 +
@@ -945,7 +945,7 @@
 +      you want to protect your machine with the bios password, this is probably
 +      not the right choice. Mode 4 may be necessary on some machines where ACPI
 +      wake up methods need to be run to properly reinitialise hardware after a
-+      hibernation cycle.  
++      hibernation cycle.
 +   0: Switch the machine completely off. The only possible wakeup is the power
 +      button. For the bios, resume is then the same as a cold boot, in
 +      particular you would  have to provide your bios boot password if your
@@ -979,7 +979,7 @@
 +   TuxOnIce will attempt to swapon/swapoff automatically. Thus, if
 +   I normally use /dev/hda1 for swap, and want to use /dev/hda2 for specifically
 +   for my hibernation image, I would
-+  
++
 +   echo /dev/hda2 > /sys/power/tuxonice/swap/swapfile
 +
 +   /dev/hda2 would then be automatically swapon'd and swapoff'd. Note that the
@@ -1040,7 +1040,7 @@
 +   on its ability to save the image are not met).
 +
 +   - version:
-+  
++
 +   The version of TuxOnIce you have compiled into the currently running kernel.
 +
 +7. How do you get support?
@@ -1277,10 +1277,10 @@
  void machine_halt(void)
  {
 diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
-index e89d248..7fb630d 100644
+index 84ba748..5078db0 100644
 --- a/arch/x86/mm/pageattr.c
 +++ b/arch/x86/mm/pageattr.c
-@@ -1116,6 +1116,7 @@ void kernel_map_pages(struct page *page, int numpages, int enable)
+@@ -1135,6 +1135,7 @@ void kernel_map_pages(struct page *page, int numpages, int enable)
  	 */
  	__flush_tlb_all();
  }
@@ -1288,7 +1288,7 @@
  
  #ifdef CONFIG_HIBERNATION
  
-@@ -1130,7 +1131,7 @@ bool kernel_page_present(struct page *page)
+@@ -1149,7 +1150,7 @@ bool kernel_page_present(struct page *page)
  	pte = lookup_address((unsigned long)page_address(page), &level);
  	return (pte_val(*pte) & _PAGE_PRESENT);
  }
@@ -1758,10 +1758,10 @@
  /*
   * For each existing display, we have a pointer to console currently visible
 diff --git a/drivers/md/md.c b/drivers/md/md.c
-index 1b1d326..84b843a 100644
+index fb15676..d6142dc 100644
 --- a/drivers/md/md.c
 +++ b/drivers/md/md.c
-@@ -5591,7 +5591,6 @@ void md_done_sync(mddev_t *mddev, int blocks, int ok)
+@@ -5595,7 +5595,6 @@ void md_done_sync(mddev_t *mddev, int blocks, int ok)
  	}
  }
  
@@ -1769,7 +1769,7 @@
  /* md_write_start(mddev, bi)
   * If we need to update some array metadata (e.g. 'active' flag
   * in superblock) before writing, schedule a superblock update
-@@ -5736,6 +5735,9 @@ void md_do_sync(mddev_t *mddev)
+@@ -5740,6 +5739,9 @@ void md_do_sync(mddev_t *mddev)
  		mddev->curr_resync = 2;
  
  	try_again:
@@ -1779,7 +1779,7 @@
  		if (kthread_should_stop()) {
  			set_bit(MD_RECOVERY_INTR, &mddev->recovery);
  			goto skip;
-@@ -5757,6 +5759,10 @@ void md_do_sync(mddev_t *mddev)
+@@ -5761,6 +5763,10 @@ void md_do_sync(mddev_t *mddev)
  					 * time 'round when curr_resync == 2
  					 */
  					continue;
@@ -1790,7 +1790,7 @@
  				/* We need to wait 'interruptible' so as not to
  				 * contribute to the load average, and not to
  				 * be caught by 'softlockup'
-@@ -5769,6 +5775,7 @@ void md_do_sync(mddev_t *mddev)
+@@ -5773,6 +5779,7 @@ void md_do_sync(mddev_t *mddev)
  					       " share one or more physical units)\n",
  					       desc, mdname(mddev), mdname(mddev2));
  					mddev_put(mddev2);
@@ -1798,7 +1798,7 @@
  					if (signal_pending(current))
  						flush_signals(current);
  					schedule();
-@@ -5852,6 +5859,10 @@ void md_do_sync(mddev_t *mddev)
+@@ -5856,6 +5863,10 @@ void md_do_sync(mddev_t *mddev)
  				   mddev->resync_max > j
  				   || kthread_should_stop());
  		}
@@ -1809,7 +1809,7 @@
  		if (kthread_should_stop())
  			goto interrupted;
  		sectors = mddev->pers->sync_request(mddev, j, &skipped,
-@@ -5895,6 +5906,9 @@ void md_do_sync(mddev_t *mddev)
+@@ -5899,6 +5910,9 @@ void md_do_sync(mddev_t *mddev)
  			last_mark = next;
  		}
  
@@ -1820,7 +1820,7 @@
  		if (kthread_should_stop())
  			goto interrupted;
 diff --git a/fs/buffer.c b/fs/buffer.c
-index 10179cf..e892125 100644
+index 5e62011..ce937fa 100644
 --- a/fs/buffer.c
 +++ b/fs/buffer.c
 @@ -246,6 +246,93 @@ void thaw_bdev(struct block_device *bdev, struct super_block *sb)
@@ -1959,7 +1959,7 @@
  	.kill_sb	= fuse_ctl_kill_sb,
  };
 diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
-index b723614..ef5d259 100644
+index 2e37f14..e5f1188 100644
 --- a/fs/fuse/dev.c
 +++ b/fs/fuse/dev.c
 @@ -7,6 +7,7 @@
@@ -1978,7 +1978,7 @@
  
  MODULE_ALIAS_MISCDEV(FUSE_MINOR);
  
-@@ -743,6 +745,8 @@ static ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov,
+@@ -744,6 +746,8 @@ static ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov,
  	if (!fc)
  		return -EPERM;
  
@@ -1987,7 +1987,7 @@
   restart:
  	spin_lock(&fc->lock);
  	err = -EAGAIN;
-@@ -869,6 +873,9 @@ static ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov,
+@@ -870,6 +874,9 @@ static ssize_t fuse_dev_write(struct kiocb *iocb, const struct iovec *iov,
  	if (!fc)
  		return -EPERM;
  
@@ -2115,7 +2115,7 @@
  		return PTR_ERR(req);
  
 diff --git a/fs/fuse/file.c b/fs/fuse/file.c
-index 34930a9..57414f5 100644
+index d8029d8..66905e4 100644
 --- a/fs/fuse/file.c
 +++ b/fs/fuse/file.c
 @@ -7,11 +7,13 @@
@@ -2261,10 +2261,10 @@
 +	} \
 +} while (0)
 diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
-index 2e99f34..ad8d103 100644
+index 755fe24..6159be4 100644
 --- a/fs/fuse/inode.c
 +++ b/fs/fuse/inode.c
-@@ -908,7 +908,7 @@ static int fuse_get_sb(struct file_system_type *fs_type,
+@@ -912,7 +912,7 @@ static int fuse_get_sb(struct file_system_type *fs_type,
  static struct file_system_type fuse_fs_type = {
  	.owner		= THIS_MODULE,
  	.name		= "fuse",
@@ -2273,7 +2273,7 @@
  	.get_sb		= fuse_get_sb,
  	.kill_sb	= kill_anon_super,
  };
-@@ -927,7 +927,7 @@ static struct file_system_type fuseblk_fs_type = {
+@@ -931,7 +931,7 @@ static struct file_system_type fuseblk_fs_type = {
  	.name		= "fuseblk",
  	.get_sb		= fuse_get_sb_blk,
  	.kill_sb	= kill_block_super,
@@ -2283,7 +2283,7 @@
  
  static inline int register_fuseblk(void)
 diff --git a/fs/namei.c b/fs/namei.c
-index d34e0f9..3768232 100644
+index 3ca2574..b781965 100644
 --- a/fs/namei.c
 +++ b/fs/namei.c
 @@ -2205,6 +2205,8 @@ int vfs_unlink(struct inode *dir, struct dentry *dentry)
@@ -2296,7 +2296,7 @@
  
  	mutex_lock(&dentry->d_inode->i_mutex);
 diff --git a/fs/super.c b/fs/super.c
-index 400a760..c3eea82 100644
+index f7d4bd6..00d5263 100644
 --- a/fs/super.c
 +++ b/fs/super.c
 @@ -43,6 +43,8 @@
@@ -2309,10 +2309,10 @@
  
  /**
 diff --git a/include/linux/Kbuild b/include/linux/Kbuild
-index e531783..4431e99 100644
+index 3a025d9..190873f 100644
 --- a/include/linux/Kbuild
 +++ b/include/linux/Kbuild
-@@ -212,6 +212,7 @@ unifdef-y += filter.h
+@@ -213,6 +213,7 @@ unifdef-y += filter.h
  unifdef-y += flat.h
  unifdef-y += futex.h
  unifdef-y += fs.h
@@ -2374,7 +2374,7 @@
  static inline void freezer_do_not_count(void) {}
  static inline void freezer_count(void) {}
 diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 4a853ef..4704292 100644
+index 4b91924..773d48c 100644
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
 @@ -8,6 +8,7 @@
@@ -2401,7 +2401,7 @@
  #define MS_ACTIVE	(1<<30)
  #define MS_NOUSER	(1<<31)
  
-@@ -1186,8 +1189,11 @@ enum {
+@@ -1188,8 +1191,11 @@ enum {
  	SB_FREEZE_TRANS = 2,
  };
  
@@ -2416,10 +2416,10 @@
  #define get_fs_excl() atomic_inc(&current->fs_excl)
  #define put_fs_excl() atomic_dec(&current->fs_excl)
 diff --git a/include/linux/mm.h b/include/linux/mm.h
-index ffee2f7..17532e2 100644
+index 86b836d..f7a05fb 100644
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
-@@ -1264,6 +1264,7 @@ int drop_caches_sysctl_handler(struct ctl_table *, int, struct file *,
+@@ -1263,6 +1263,7 @@ int drop_caches_sysctl_handler(struct ctl_table *, int, struct file *,
  					void __user *, size_t *, loff_t *);
  unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask,
  			unsigned long lru_pages);
@@ -2441,10 +2441,30 @@
  #define MAX_LINKS 32		
  
 diff --git a/include/linux/suspend.h b/include/linux/suspend.h
-index 2ce8207..f469faf 100644
+index 2ce8207..c8680be 100644
 --- a/include/linux/suspend.h
 +++ b/include/linux/suspend.h
-@@ -280,4 +280,70 @@ static inline void register_nosave_region_late(unsigned long b, unsigned long e)
+@@ -13,6 +13,7 @@
+ 
+ #if defined(CONFIG_PM_SLEEP) && defined(CONFIG_VT) && defined(CONFIG_VT_CONSOLE)
+ extern void pm_set_vt_switch(int);
++extern int pm_get_vt_switch(void);
+ extern int pm_prepare_console(void);
+ extern void pm_restore_console(void);
+ #else
+@@ -20,6 +21,11 @@ static inline void pm_set_vt_switch(int do_switch)
+ {
+ }
+ 
++static inline int pm_get_vt_switch(void)
++{
++	return 0;
++}
++
+ static inline int pm_prepare_console(void)
+ {
+ 	return 0;
+@@ -280,4 +286,70 @@ static inline void register_nosave_region_late(unsigned long b, unsigned long e)
  
  extern struct mutex pm_mutex;
  
@@ -2605,7 +2625,7 @@
  
  /**
 diff --git a/kernel/fork.c b/kernel/fork.c
-index 495da2e..f7103e0 100644
+index f2c9c60..f98f44c 100644
 --- a/kernel/fork.c
 +++ b/kernel/fork.c
 @@ -79,6 +79,7 @@ int max_threads;		/* tunable limit on nr_threads */
@@ -2637,7 +2657,7 @@
  static void helper_lock(void)
  {
 diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig
-index 23bd4da..3e39c7c 100644
+index 23bd4da..f53e64d 100644
 --- a/kernel/power/Kconfig
 +++ b/kernel/power/Kconfig
 @@ -38,6 +38,13 @@ config CAN_PM_TRACE
@@ -2664,13 +2684,13 @@
 +	default y
 +	---help---
 +	  TuxOnIce is the 'new and improved' suspend support.
-+	  
++
 +	  See the TuxOnIce home page (tuxonice.net)
 +	  for FAQs, HOWTOs and other documentation.
 +
 +	comment "Image Storage (you need at least one allocator)"
 +		depends on TOI_CORE
-+	
++
 +	config TOI_FILE
 +		tristate "File Allocator"
 +		depends on TOI_CORE
@@ -2779,7 +2799,7 @@
 +		  When booting, TuxOnIce can check for an image and start to resume prior
 +		  to any initrd/ramfs running (via a late initcall).
 +
-+		  If you don't have an initrd/ramfs, this is what you want to happen - 
++		  If you don't have an initrd/ramfs, this is what you want to happen -
 +		  otherwise you won't be able to safely resume. You should set this option
 +		  to 'No'.
 +
@@ -2806,7 +2826,7 @@
 +		---help---
 +		  The default interface on which to communicate with other nodes in
 +		  the cluster.
-+		  
++
 +		  If no value is set here, cluster support will be disabled by default.
 +
 +	config TOI_DEFAULT_CLUSTER_KEY
@@ -2952,10 +2972,23 @@
  obj-$(CONFIG_HIBERNATION)	+= swsusp.o disk.o snapshot.o swap.o user.o
  
 diff --git a/kernel/power/console.c b/kernel/power/console.c
-index b8628be..0d11c15 100644
+index b8628be..5bc87cf 100644
 --- a/kernel/power/console.c
 +++ b/kernel/power/console.c
-@@ -68,6 +68,7 @@ int pm_prepare_console(void)
+@@ -31,6 +31,12 @@ void pm_set_vt_switch(int do_switch)
+ }
+ EXPORT_SYMBOL(pm_set_vt_switch);
+ 
++int pm_get_vt_switch(void)
++{
++	return disable_vt_switch;
++}
++EXPORT_SYMBOL(pm_get_vt_switch);
++
+ int pm_prepare_console(void)
+ {
+ 	acquire_console_sem();
+@@ -68,6 +74,7 @@ int pm_prepare_console(void)
  	kmsg_redirect = SUSPEND_CONSOLE;
  	return 0;
  }
@@ -2963,7 +2996,7 @@
  
  void pm_restore_console(void)
  {
-@@ -80,4 +81,5 @@ void pm_restore_console(void)
+@@ -80,4 +87,5 @@ void pm_restore_console(void)
  	release_console_sem();
  	kmsg_redirect = orig_kmsg;
  }
@@ -3189,7 +3222,7 @@
  /**
   *	state - control system power state.
 diff --git a/kernel/power/power.h b/kernel/power/power.h
-index 46b5ec7..4cfac49 100644
+index 46b5ec7..b9622b8 100644
 --- a/kernel/power/power.h
 +++ b/kernel/power/power.h
 @@ -1,3 +1,10 @@
@@ -3245,16 +3278,20 @@
  /* Preferred image size in bytes (default 500 MB) */
  extern unsigned long image_size;
  extern int in_suspend;
-@@ -223,3 +237,90 @@ static inline void suspend_thaw_processes(void)
+@@ -223,3 +237,88 @@ static inline void suspend_thaw_processes(void)
  {
  }
  #endif
 +
-+extern struct page *saveable_page(unsigned long pfn);
++extern struct page *saveable_page(struct zone *z, unsigned long p);
 +#ifdef CONFIG_HIGHMEM
-+extern struct page *saveable_highmem_page(unsigned long pfn);
++extern struct page *saveable_highmem_page(struct zone *z, unsigned long p);
 +#else
-+static inline void *saveable_highmem_page(unsigned long pfn) { return NULL; }
++static
++inline struct page *saveable_highmem_page(struct zone *z, unsigned long p)
++{
++	return NULL;
++}
 +#endif
 +
 +#define PBES_PER_PAGE (PAGE_SIZE / sizeof(struct pbe))
@@ -3282,35 +3319,29 @@
 +#define BM_BITS_PER_BLOCK	(PAGE_SIZE << 3)
 +
 +struct bm_block {
-+	struct bm_block *next;		/* next element of the list */
++	struct list_head hook;		/* hook into a list of bitmap blocks */
 +	unsigned long start_pfn;	/* pfn represented by the first bit */
 +	unsigned long end_pfn;	/* pfn represented by the last bit plus 1 */
 +	unsigned long *data;	/* bitmap representing pages */
 +};
 +
-+struct zone_bitmap {
-+	struct zone_bitmap *next;	/* next element of the list */
-+	unsigned long start_pfn;	/* minimal pfn in this zone */
-+	unsigned long end_pfn;		/* maximal pfn in this zone plus 1 */
-+	struct bm_block *bm_blocks;	/* list of bitmap blocks */
-+	struct bm_block *cur_block;	/* recently used bitmap block */
-+};
-+
-+/* strcut bm_position is used for browsing memory bitmaps */
++/* struct bm_position is used for browsing memory bitmaps */
 +
 +struct bm_position {
-+	struct zone_bitmap *zone_bm;
 +	struct bm_block *block;
 +	int bit;
 +};
 +
 +struct memory_bitmap {
-+	struct zone_bitmap *zone_bm_list;	/* list of zone bitmaps */
++	struct list_head blocks;	/* list of bitmap blocks */
 +	struct linked_page *p_list;	/* list of pages used to store zone
 +					 * bitmap objects and bitmap block
 +					 * objects
 +					 */
-+	struct bm_position cur;	/* most recently used bit position */
++	struct bm_position cur;		/* most recently used bit position */
++	struct bm_position iter;	/* most recently used bit position
++					 * when iterating over a bitmap.
++					 */
 +};
 +
 +extern int memory_bm_create(struct memory_bitmap *bm, gfp_t gfp_mask,
@@ -3440,10 +3471,18 @@
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/linux-2.6-suspend2.patch?r1=1.1.2.2.2.14&r2=1.1.2.2.2.15&f=u



More information about the pld-cvs-commit mailing list