Suspend2 changelog.

2.2.1 - 17 March 2006

- Remove debug_pagealloc support
- Documentation update
- Move device_suspend at resume time prior to setting
  up temporary page tables (Lamarque Souza).

2.2.0.8 - 15 March 2006

- Convert pageset sizes to longs.
- Convert [read|write]_header_chunk to
  rw_header_chunk([READ|WRITE]...) and do similar
  cleanups with other i/o routines.
- Remove some unused module structure members.
- Flatten the module ops.
- Fix a couple of harmless compile warnings.

2.2.0.7 - 15 March 2006

- Further fixes from 2.2.0.6. Now tested with modifying
  resume2= in an initrd and checking image_exists prior
  to do the echo > do_resume.

2.2.0.6 - 13 March 2006

- Split logic for determining whether we can suspend from
  that for figuring out whether we can resume. This is
  useful for the filewriter, where resume2= can be valid
  (allowing us to resume) while filewriter_target isn't
  set (prohibiting suspending).
- Update file headers.

2.2.0.5 - 13 March 2006

- Oh dear. I somehow reversed the 2.2.0.3 fix in 2.2.0.4.
  Let's try and get them both in the same patch, shall we?

2.2.0.4 - 13 March 2006

- Fix missing incrementation of # extents freed in new
  swap storage code.

2.2.0.3 - 11 March 2006

- Add x86 compilation error fix I missed.

2.2.0.2 - 11 March 2006

- Fix minimum free ram at 2000 pages rather than nr pages >> 7.
- Remove command line suspend_act, suspend_lvl and suspend_dbg
  options.
- Fix issues with swap allocation that made suspend not work
  properly with multiple swap storage at the same priority or
  highly fragmented storage.
- Add Randy Dunlap's libata patches (sata).
- Removed time patches.
- Documentation updates
- Remove un-needed x86_64 fix processor context patch.
- Remove x86_64 mcheck_init invocation.
- Separate workqueue freezer, dynamic pageflags and
  lzf patches.
- Remove obsolete configuration flags from the enums in suspend2.h.
- Correct various typos in headers.
- Various cleanups.
- Remove command line parameters suspend_act, suspend_dbg and
  suspend_lvl.
- Remove HALT_ON debugging macro from pagedir.c.
- Add tags for my new patch splitting utility.

2.2.0.1 - 15 February 2006

- Update to 2.6.16-rc3.
- Further cleanups, removing fragments that are no longer needed
  and applying suggestions from code review.
- Remove Christoph's todo list code. Not because I don't like it,
  but because it was originally designed to help SMP cleanness,
  and cpu hotplug has taken over that need.

2.2 - 24 January 2006 (Happy Birthday, Dad!)

- Fix amd64 page_is_ram typo.
- Fix unintentional dependence on swsusp (amd64).
- Make swapwriter select swap support instead of depending
  on it already being selected.
- Make a new common function for writing the last (partial)
  page of a header.
- Remove temporary enabling of block dump when reading pageset1.
- Extend have_image to also display some of the details from
  the header.
- Cleanup count_data_pages changes.
- Save and restore the block_dump setting when starting/finishing
  a cycle.
- Add support for debugging the image header reading & writing.
- A few fixes to the filewriter.
- Cleanups in swapwriter and arch specific code.

2.2-rc16 - 8 January 2006

- Small updates to documentation.
- Fix amd64 support.
- Remove no-unneeded modifications to fs/super.c & mtrr code.
- Cleanup dyn pageflags include files.
- Clean freezer header.
- Move swsusp to bottom of Makefile to make interoperability work better.
- Move pm_ops prepare/finish calls back -moving the calls to pre/post
  hotplugging doesn't seem to be the right thing to do at the moment.
- Save zone info that's used during atomic restore in memory that can
  be safely accessed during that period.
- Modify swsusp so it can be used with the new freezer without causing
  a deadlock.
- Reinstate the ability to cancel a suspend part way through writing a
  pageset.
- Fix some duplicated allowance for extra pd1 pages.
- Further work on new PageNoSave code.
- Increase max outstanding I/O to 2048.
- Remove some unnecessary forced inlining.

2.2-rc15 - 26 December 2005

- Call the correct writer init routine (read/write were transposed!)
- Freeze filesystems in reverse order so loopback doesn't result in
  a hang.
- Select HOTPLUG_CPU instead of depending on it (SMP).
- Further switchovers from assuming pfns start at 0 to using per zone
  ranges.
- Lots of architecture specific fixes for PPC, x86_64 and ARM.
- Work on removing PageNosave dependency and changes outside kernel/power.
- Support new read-only section patches.
- Remove b44 patch.
- Cleanups (as always!). This time, we remove driver_model.[ch], and
  remove some now unused MTRR modifications and lowlevel x86 code.
- Small modifications to lowlevel code routine.
- Reintroduce /proc/suspend2/no_pageset2 for testing.
- Compile fix for !SUSPEND2.
- Fixups to powerdown code (yes, again!).
- Bug fix to rw_init_plugins.
- Small rework of sanity checking.
- Make num_pcp_pages() numa compatible.
- Cleanup filesystem freezing code.
- More consolidation of swapwriter and filewriter code into bio.c.
- Attempt to parse resume device when checking if can suspend and
  suspend is currently disabled.
- Rename noresume_setup to noresume2_setup so it works with swsusp
  compiled in.
- Fix filewriter so it again tries to stat the file if name_to_dev_t
  fails.

2.2-rc14 - 2 December 2005

- Correct header_locations in documentation to headerlocations.
- Remove BUG_ON() in ll_rw_blk.c.
- Correction to nvidia agp suspend/resume support.
- Complete removal of syncthread code.
- Consolidate all of the page i/o code from swapwriter and
  filewriter into one version, moved to block_io.c.
- Combine the io.c read & write pageset routines and make
  separate routines of plugin setup/cleanup and the main loop.
- Fix for AMD64 reading wrong block for header at resume time
  (and thus reporting 0.0.0 kernel version in the image).

2.2-rc13 - 25 November 2005

- Add ARM support, thanks to Hiroki Kaminaga at Sony.
- Replace remounting with freezing and thawing filesystems.
- Remove now unneeded syncthread code (more to be done).
- Don't sys_sync after freezing filesystems. That way lies deadlocks.
- Beginnings of cleanups for writers.
- Make number of extra pagedir 1 pages allowed for tunable via a
  new proc entry. Set it to 0 for autotuning.
- Fix an oops in the filewriter.
- Fix for typo in power off code (thanks, _damjan_).

2.2-rc12 - 22 November 2005

- New test_bio proc debugging entry; don't actually write anything,
  just say where the data would be put.
- Further filewriter fixes. It should be perfectly usable now,
  but I would still recommend care and backups!
- Don't use smp_processor_id in lowlevel code. With cpuhotplug, we
  know we're on processor zero.
- Fix some indentation in the lowlevel code.
- Touch softlockup watchdog when resuming. Shouldn't be needed and
  doesn't seem to make any difference, but I'll seek consistency
  with Pavel at this point.
- Show what processes enter and leave the fridge and when iff
  PM Debug is enabled (wRAR).
- Modify remounting logic introduced in rc11 so that syslog etc
  continue to work postresume.
- Remove some extra debugging code in the freezer.
- Prune the number of calls to attempt_to_parse so that we can
  properly figure out whether suspending should be enabled.
- Don't unblank the console from the kernel code. Doesn't play
  nicely with vesafb-tng. 

2.2-rc11 - 15 November 2005

- Remount filesystems readonly while suspending so as to ensure
  xfs flushes all pending writes. This also means things should
  be nice and clean if you fail to resume (for whatever reason).
- Fix highmem support that I broke with rc10.
- Fix typo in 2nd+ attempt at resuming message.

2.2-rc10 - 14 November 2005

- Increased allowance for extra pagedir1 pages. This is primarily
  for the new flgrx driver. If you don't use it, you'll see a
  bigger drop in the total image size after the atomic copy. This
  is nothing to be concerned about.
- Some debugging code has been temporarily modified to always
  print, to help address some particular users' issues.
- More helpful debugging for AMD64 preemption problems.
- Rework of powerdown code. Powerdown method can now also be 0,
  meaning Suspend won't try to use ACPI to powerdown. 1 & 2 are
  also accepted values. You might find Standby (1) useful, but 2
  will probably only make the computer resume again immediately.
- Big rework of blocksize handling. Suspend2 is now tested with the
  swap files and ordinary files on ext3, xfs and reiser with each
  blocksize allowed by the filesystem type. Other filesystems should
  work without a problem because the algorithm is basically the same
  as that used for swapfiles.
- Initial version of discontiguous memory support.
- Replace /proc/software_suspend with /proc/suspend2.
- Make Suspend2 explicitly depend upon cpu hotplug for SMP.
- Leave interrupts enabled when powering down.
- Make storage manager testing proc entry depend on PM_DEBUG.
- Remove unnecessary check at the start of save image.
- Small cleanups in the swapwriter (swapfile management).

2.2-rc9 - 5 November 2005

- Filewriter cleanups and bug fixes.
- Display stats when unable to allocate enough storage, to help diagnosing
  this issue.
- Some cleanups to e820 table support.
- Various small fixes to PPC support.
- Modifed BIO submission check to be smarter (use new Suspend2 flag in BIO
  flags).
- Add userspace storage manager (usm) support. Requires userspace program.
  None are available yet. This change included a separation of the netlink
  code from the userui code into a new file.
- Replace type * name with type *name everywhere.
- Made debugging code for driver suspend/resume calls more gentle
  (delay/print instead of BUG_ON().
- Don't mark image as resumed before when in KEEP_IMAGE made.
- Seek to address BUG_ONs being hit in marking a task as pageset1.
- Address some arch/config specific compilation warnings.
- Use kernel_power_off_prepare instead of device_shutdown when not entering
  suspend to ram.
- Thaw kernel processes before beginning to eat memory.
- Make freezer quiet by default.
- Export freezer state for when ext3 (eg) built as a module.
- Add news_storage_manager to proc entry info so that entries that needs
  access to storage for reading and/or writing can enable it as required.
  There is also a new activate_storage entry that can be used in a script to
  avoid having it repetitively enabled and disabled by a number of instructions.
	echo 1 >  /proc/suspend2/activate_storage
  at the start of the sequence and
	echo 0 > /proc/suspend2/activate_storage
  and the end.
- Correct bits in result code so hibernate script gives the correct
  interpretation again.
- Cleanup and simplify file management in the file writer. (Debugging printks
  left in for this release).
- Poke blanked console when resuming.
 
2.2-rc8 - October 3, 2005.

REQUIRES hibernate script 1.12 or newer. 

- Changed name of proc directory to suspend2.
- Removed suspend_drivers_init/cleanup
- Cleaned up debug_info entry
- Remove atomic_restore conflict check
- Stop tracking max extents used.
- put_extent. Just BUG_ON(!extent). Or don't handle.
- put_extent_chain remove if (!this) return
- Removed references to chain optimisation info
- Remove error messages in <load|serialise>_extent_chain (should
  come from real cause of err)
- attempt_to_parse_resume_device should return whether successful
- Merge plugin read/write inits/cleanups into one loop.
- Merge read & write routines into one generic I/O loop?
- Sanity check kernel version - macros for digits?
- Rename free_pagedir_data to free_extra_pagedir_memory. Don't reset pageset
  sizes there.
- Removed SetPageConflicting
- release_conflicting_pages: Delete. Not used.
- remove version info in proc.c
- Remove #ifdef CONFIG_SUSPEND2_DEFAULT_RESUME2 in suspend2
- compress <allocate|free>_bitmaps functions
- Remove #ifdef DEBUG_PAGE_ALLOC in suspend2.c
- can_suspend: if(DISABLED && !attempt_to_parse())
- Remove keep_metadata proc entry
- Use (DISABLED && !attempt_to_parse() in suspend2_resume, too.
- Removed unused fields used in io_info struct
- flush_dcache_page needed?
- Use put_page to free pages.
- Some extraneous comments removed.
- Removed header_data comment
- /*^N *^N *^N* ^N* ^N */
- Remove PRINTK in swapwriter
- Remove swapwriter file management?
- Cleaned up get_blocks_per_page in swapwriter
- Integrated get_path_for_swapfile to caller
- Parse signature - remove old pmdisk version support
- Removed unneeded extern int signature_check? (swapwriter:478)
- Cleaned up swapwriter_storage_allocated
- Remove space_requests = ((long) space_really_requested) << PAGE_SHIFT
- Remove allocate_header_space comment "was going to be in bytes"
- Simplified header space allocated calculation.
- Remove extra escape action in request_abort_suspend (not used and would
  be a problem anyway).
- Fix compile error for AMD64 SMP.
- Fix error in the filewriter.

2.2-rc7 - September 16 2005

- Further fixing of powerdown code. If !pm_ops, just use
  kernel_power_off.
- Use return code when freezing failure occurs.
- Make userui disabling effective.

2.2-rc6 - September 6 2005 (The Hamilton Release)

- Fix for corruption caused when failing to power down.
- Fix for failing to power down.
- Separated refrigerator changes from Suspend2 for separate
  merge.
- Misc other cleanups.

2.2-rc5 - September 2 2005
- Add more detailed debugging information regarding which
  driver re-enables interrupts and recover.
- Handle wrong userui interface version by resetting userui
  and continuing without it.
- Fix for powerdown issues.
- Ensure resumed before flag isn't unintentionally set when
  writing header.
- Seek to address trace given in refrigerator code.
- Complain if can't find the userui process number given
  for setting nofreeze.
- Fixed a bug in the swap allocation routine that would
  result in swap being allocated but not freed.

2.2-rc4 - August 30 2005

- Fixed bounding error in swapwriter device closing. This
  had 'interesting' side effects.
- Moved storing the console log level used to before asking
  the userui to cleanup, so that after suspending.
  default_console_loglevel contains the last one used, and
  not the original value.
- Fixed a mistake in include/asm-i386/suspend2.h that broke
  compilation for gcc 4 users.
- Made the refrigerator ignore Stopped processes again. Mea
  culpa. As always :|

2.2-rc3 - August 29 2005

- Modified error message for setting the blocksize to give
  some useful information.
- Fixed typo in todo_list_active calls in jfs_txnmgr.c
- Fixed size of blocksize storage in header. Thanks Ola!
- Merged in initramfs changes to filewriter. Added new state
  flag for resuming from initramfs and call from do_mounts_rd.c.
  Yet to test.
- Implemented communication of the netlink socket number to use
  to the userui program when invoking it. (Changes to commit to
  userui tree)
- Give more information and invalidate the image when we fail to
  initialise a filter at resume.
- Clean up console when failing to resume.
- Make escape and toggling pause and single step take effect
  immediately.
- Fixed log everything so that it does again.
- Expand userui message buffer from 80 to 255 characters.
- Fixed a silly bug when the header is not stored on the resume
  block device.
- Modify freezer implementation to signal all processes once,
  separate to waiting for them to enter the refrigerator. This
  will be more robust and quicker if/when the todo list gets used
  for other things.
- Modify userui version to 6.
- Move freeing of freezer notifier entry to post spinlock release.
- Fix compilation error when !SUSPEND2 & CRYPTO
- Fix missing ; in macro for !SUSPEND2

2.2-rc2 - August 24 2005
- Apply LZF 64 bit from Anders Fugmann.
- Complete transition to todo list and fix up jffs2.
- Temporary fix for gcc 4, telling it lies that we're
  not clobbering ebp. Something similar needed for other
  archs?

2.2-rc1 - August 23 2005
- Fixed problem with swapwriter buffer offset not being reset
  when beginning to write the image header.
- PPC fixes from Johannes Berg.
- Give a better message when can't initialise a compressor.
- Remove an unused variable from the pageset_sizes_result struct.
- Make Suspend still compile ok when networking is disabled.
  Userui won't work (it uses netlink), but suspending will.
  This will also be handy for embedded support.
- Say why we can't do userui when we can't open /dev/console
  (entirely possible when resuming from an initrd).

2.1.9.14 - August 22 2005
- Fixes for previous patch - base tree was slightly corrupted.
- Also fixed agp driver cleanups - humble apologies to ATI and
  Nvidia users.
- Small fixes for new bdev management code in swapwriter.

2.1.9.13 - August 20 2005
- Added support for Christoph Lameter's todo list changes.
- Reworked device setup at resume time.
- Began splitting up patches into many more changesets for
  the (to be made) git tree. I'll now ship the patch as one
  big patch.
- Miscellaneous other bug fixes and cleanups.

2.1.9.12 - August 4 2005
- Bug fixes for the refrigerator code
- Fixed bug in dyn_pageflags code that would cause an oops if
  allocating pageflags ever failed.
- Changed block io code to use kblockd_flush.
- Reworking of semantics for workqueue calls (merge work).

2.1.9.11 - July 30 2005
- More cleanups.

2.1.9.10 - July 23 2005
- Lots more cleanups and little fixes.
- Changed workqueue freezer implementation from using an extra parameter
  to using new routines with nofreeze in the name. Greatly reduces the
  number of files we touch.
- Remove SYNCTHREAD flag from kernel threads. It really means nothing.
  (They are frozen anyway, after real syncthreads).
- In the process of re-adding checksumming as a standalone patch. Not
  to be submitted.
- Cleaned up LZF. Removed macros and ifdefs.
- Started pushing patches.
- Renamed arch specific functions to include _arch_.
- Removed all_settings after asking how many people use it.
- Fixed up copyback thread spawning so as to ensure that the stack used
  is not in a conflicting page. We spwan new threads until one is ok.
  Each thread spawned will keep spawning other threads (with a delay)
  until one has a non conflicting page. This means you can end up with
  a large number of threads quickly. We guarantee that only one will
  continue on to the copyback. All others enter the freezer.

2.1.9.9 - July 8 2005
- Move suspend2_core directory contents up to kernel/power.
- Further work on x86_64 (more to be done before it can be tested).
- Lots of cleanups in response to premerge (I hope) comments. As part
  of this, converted a number of lists of #defined bit indices to
  enums. This will break saved all_settings files, so I bumped the
  version.
- Added debugging info to swapwriter to try and diagnose set block size
  oops some people are seeing.
