SOURCES (LINUX_2_6_27): linux-2.6-suspend2.patch, kernel-suspend2-headers.p...

lmasko lmasko at pld-linux.org
Sat Jan 17 10:10:11 CET 2009


Author: lmasko                       Date: Sat Jan 17 09:10:11 2009 GMT
Module: SOURCES                       Tag: LINUX_2_6_27
---- Log message:
- TuxOnIce up to 3.0-rc8.

---- Files affected:
SOURCES:
   linux-2.6-suspend2.patch (1.1.2.2.2.10 -> 1.1.2.2.2.10.2.1) , kernel-suspend2-headers.patch (1.1.2.7 -> 1.1.2.7.4.1) 

---- Diffs:

================================================================
Index: SOURCES/linux-2.6-suspend2.patch
diff -u SOURCES/linux-2.6-suspend2.patch:1.1.2.2.2.10 SOURCES/linux-2.6-suspend2.patch:1.1.2.2.2.10.2.1
--- SOURCES/linux-2.6-suspend2.patch:1.1.2.2.2.10	Thu Oct 23 20:01:56 2008
+++ SOURCES/linux-2.6-suspend2.patch	Sat Jan 17 10:10:05 2009
@@ -1235,10 +1235,10 @@
 +   testing. His efforts have contributed as much to TuxOnIce as any of the
 +   names above.
 diff --git a/MAINTAINERS b/MAINTAINERS
-index 3596d17..3e7e5ce 100644
+index ff24d01..251eb14 100644
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -4100,6 +4100,13 @@ P:	Maciej W. Rozycki
+@@ -4099,6 +4099,13 @@ P:	Maciej W. Rozycki
  M:	macro at linux-mips.org
  S:	Maintained
  
@@ -1252,13 +1252,123 @@
  U14-34F SCSI DRIVER
  P:	Dario Ballabio
  M:	ballabio_dario at emc.com
+diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c
+index 2001abd..78c6a4c 100644
+--- a/arch/powerpc/mm/pgtable_32.c
++++ b/arch/powerpc/mm/pgtable_32.c
+@@ -397,6 +397,7 @@ void kernel_map_pages(struct page *page, int numpages, int enable)
+ 
+ 	change_page_attr(page, numpages, enable ? PAGE_KERNEL : __pgprot(0));
+ }
++EXPORT_SYMBOL_GPL(kernel_map_pages);
+ #endif /* CONFIG_DEBUG_PAGEALLOC */
+ 
+ static int fixmaps;
+diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
+index 724adfc..a270c9e 100644
+--- a/arch/x86/kernel/reboot.c
++++ b/arch/x86/kernel/reboot.c
+@@ -502,6 +502,7 @@ void machine_restart(char *cmd)
+ {
+ 	machine_ops.restart(cmd);
+ }
++EXPORT_SYMBOL_GPL(machine_restart);
+ 
+ void machine_halt(void)
+ {
+diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
+index 43e2f84..5783f37 100644
+--- a/arch/x86/mm/pageattr.c
++++ b/arch/x86/mm/pageattr.c
+@@ -1031,6 +1031,7 @@ void kernel_map_pages(struct page *page, int numpages, int enable)
+ 	 */
+ 	cpa_fill_pool(NULL);
+ }
++EXPORT_SYMBOL_GPL(kernel_map_pages);
+ 
+ #ifdef CONFIG_DEBUG_FS
+ static int dpa_show(struct seq_file *m, void *v)
+@@ -1084,7 +1085,7 @@ bool kernel_page_present(struct page *page)
+ 	pte = lookup_address((unsigned long)page_address(page), &level);
+ 	return (pte_val(*pte) & _PAGE_PRESENT);
+ }
+-
++EXPORT_SYMBOL_GPL(kernel_page_present);
+ #endif /* CONFIG_HIBERNATION */
+ 
+ #endif /* CONFIG_DEBUG_PAGEALLOC */
+diff --git a/arch/x86/power/cpu_64.c b/arch/x86/power/cpu_64.c
+index 66bdfb5..77aae90 100644
+--- a/arch/x86/power/cpu_64.c
++++ b/arch/x86/power/cpu_64.c
+@@ -10,6 +10,7 @@
+ 
+ #include <linux/smp.h>
+ #include <linux/suspend.h>
++#include <linux/module.h>
+ #include <asm/proto.h>
+ #include <asm/page.h>
+ #include <asm/pgtable.h>
+@@ -75,6 +76,7 @@ void save_processor_state(void)
+ {
+ 	__save_processor_state(&saved_context);
+ }
++EXPORT_SYMBOL_GPL(save_processor_state);
+ 
+ static void do_fpu_end(void)
+ {
+diff --git a/arch/x86/power/hibernate_32.c b/arch/x86/power/hibernate_32.c
+index 81197c6..ff7e534 100644
+--- a/arch/x86/power/hibernate_32.c
++++ b/arch/x86/power/hibernate_32.c
+@@ -8,6 +8,7 @@
+ 
+ #include <linux/suspend.h>
+ #include <linux/bootmem.h>
++#include <linux/module.h>
+ 
+ #include <asm/system.h>
+ #include <asm/page.h>
+@@ -163,6 +164,7 @@ int swsusp_arch_resume(void)
+ 	restore_image();
+ 	return 0;
+ }
++EXPORT_SYMBOL_GPL(swsusp_arch_resume);
+ 
+ /*
+  *	pfn_is_nosave - check if given pfn is in the 'nosave' section
+diff --git a/arch/x86/power/hibernate_64.c b/arch/x86/power/hibernate_64.c
+index 6dd000d..b42e72a 100644
+--- a/arch/x86/power/hibernate_64.c
++++ b/arch/x86/power/hibernate_64.c
+@@ -10,6 +10,7 @@
+ 
+ #include <linux/smp.h>
+ #include <linux/suspend.h>
++#include <linux/module.h>
+ #include <asm/proto.h>
+ #include <asm/page.h>
+ #include <asm/pgtable.h>
+@@ -117,6 +118,7 @@ int swsusp_arch_resume(void)
+ 	restore_image();
+ 	return 0;
+ }
++EXPORT_SYMBOL_GPL(swsusp_arch_resume);
+ 
+ /*
+  *	pfn_is_nosave - check if given pfn is in the 'nosave' section
+@@ -167,3 +169,4 @@ int arch_hibernation_header_restore(void *addr)
+ 	restore_cr3 = rdr->cr3;
+ 	return (rdr->magic == RESTORE_MAGIC) ? 0 : -EINVAL;
+ }
++EXPORT_SYMBOL_GPL(arch_hibernation_header_restore);
 diff --git a/crypto/Kconfig b/crypto/Kconfig
-index d831859..59dbd07 100644
+index d831859..f71cb00 100644
 --- a/crypto/Kconfig
 +++ b/crypto/Kconfig
-@@ -666,6 +666,14 @@ config CRYPTO_LZO
+@@ -233,6 +233,14 @@ config CRYPTO_MD5
  	help
- 	  This is the LZO algorithm.
+ 	  MD5 message digest algorithm (RFC1321).
  
 +config CRYPTO_LZF
 +	tristate "LZF compression algorithm"
@@ -1268,9 +1378,9 @@
 +	  This is the LZF algorithm. It is especially useful for TuxOnIce,
 +	  because it achieves good compression quickly.
 +
- source "drivers/crypto/Kconfig"
- 
- endif	# if CRYPTO
+ config CRYPTO_MICHAEL_MIC
+ 	tristate "Michael MIC keyed digest algorithm"
+ 	select CRYPTO_ALGAPI
 diff --git a/crypto/Makefile b/crypto/Makefile
 index d4f3ed8..fe05a9e 100644
 --- a/crypto/Makefile
@@ -1285,14 +1395,14 @@
  
 diff --git a/crypto/lzf.c b/crypto/lzf.c
 new file mode 100644
-index 0000000..3e0aa8c
+index 0000000..ccaf83a
 --- /dev/null
 +++ b/crypto/lzf.c
 @@ -0,0 +1,326 @@
 +/*
 + * Cryptoapi LZF compression module.
 + *
-+ * Copyright (c) 2004-2005 Nigel Cunningham <nigel at tuxonice net>
++ * Copyright (c) 2004-2008 Nigel Cunningham <nigel at tuxonice net>
 + *
 + * based on the deflate.c file:
 + *
@@ -1349,7 +1459,7 @@
 +#include <linux/crypto.h>
 +#include <linux/err.h>
 +#include <linux/vmalloc.h>
-+#include <asm/string.h>
++#include <linux/string.h>
 +
 +struct lzf_ctx {
 +	void *hbuf;
@@ -1467,9 +1577,9 @@
 +				unsigned int maxlen = in_end - ip - len;
 +				maxlen = maxlen > max_ref ? max_ref : maxlen;
 +
-+				do
++				do {
 +					len++;
-+				while (len < maxlen && ref[len] == ip[len]);
++				} while (len < maxlen && ref[len] == ip[len]);
 +
 +				if (op + lit + 1 + 3 >= out_end) {
 +					*out_len = PAGE_SIZE;
@@ -1616,14 +1726,14 @@
 +MODULE_DESCRIPTION("LZF Compression Algorithm");
 +MODULE_AUTHOR("Marc Alexander Lehmann & Nigel Cunningham");
 diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
-index 273a944..37c1e9f 100644
+index 273a944..aee84df 100644
 --- a/drivers/base/power/main.c
 +++ b/drivers/base/power/main.c
 @@ -54,6 +54,7 @@ void device_pm_lock(void)
  {
  	mutex_lock(&dpm_list_mtx);
  }
-+EXPORT_SYMBOL(device_pm_lock);
++EXPORT_SYMBOL_GPL(device_pm_lock);
  
  /**
   *	device_pm_unlock - unlock the list of active devices used by the PM core
@@ -1631,44 +1741,93 @@
  {
  	mutex_unlock(&dpm_list_mtx);
  }
-+EXPORT_SYMBOL(device_pm_unlock);
++EXPORT_SYMBOL_GPL(device_pm_unlock);
  
  /**
   *	device_pm_add - add a device to the list of active devices
-diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c
-index d524dc2..681972e 100644
---- a/drivers/macintosh/via-pmu.c
-+++ b/drivers/macintosh/via-pmu.c
-@@ -40,7 +40,6 @@
- #include <linux/interrupt.h>
- #include <linux/device.h>
- #include <linux/sysdev.h>
--#include <linux/freezer.h>
- #include <linux/syscalls.h>
- #include <linux/suspend.h>
- #include <linux/cpu.h>
+diff --git a/drivers/char/vt.c b/drivers/char/vt.c
+index d429499..9603d96 100644
+--- a/drivers/char/vt.c
++++ b/drivers/char/vt.c
+@@ -187,6 +187,7 @@ int fg_console;
+ int last_console;
+ int want_console = -1;
+ int kmsg_redirect;
++EXPORT_SYMBOL_GPL(kmsg_redirect);
+ 
+ /*
+  * 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 deeac4b..cbf1e49 100644
+index fe6eccd..3918848 100644
 --- a/drivers/md/md.c
 +++ b/drivers/md/md.c
-@@ -5899,6 +5899,8 @@ void md_do_sync(mddev_t *mddev)
+@@ -5593,7 +5593,6 @@ void md_done_sync(mddev_t *mddev, int blocks, int ok)
+ 	}
+ }
+ 
+-
+ /* 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
+@@ -5738,6 +5737,9 @@ void md_do_sync(mddev_t *mddev)
+ 		mddev->curr_resync = 2;
+ 
+ 	try_again:
++		while (freezer_is_on())
++			yield();
++
+ 		if (kthread_should_stop()) {
+ 			set_bit(MD_RECOVERY_INTR, &mddev->recovery);
+ 			goto skip;
+@@ -5759,6 +5761,10 @@ void md_do_sync(mddev_t *mddev)
+ 					 * time 'round when curr_resync == 2
+ 					 */
+ 					continue;
++
++				while (freezer_is_on())
++					yield();
++
+ 				/* We need to wait 'interruptible' so as not to
+ 				 * contribute to the load average, and not to
+ 				 * be caught by 'softlockup'
+@@ -5771,6 +5777,7 @@ void md_do_sync(mddev_t *mddev)
+ 					       " share one or more physical units)\n",
+ 					       desc, mdname(mddev), mdname(mddev2));
+ 					mddev_put(mddev2);
++					try_to_freeze();
+ 					if (signal_pending(current))
+ 						flush_signals(current);
+ 					schedule();
+@@ -5854,6 +5861,10 @@ void md_do_sync(mddev_t *mddev)
+ 				   mddev->resync_max > j
+ 				   || kthread_should_stop());
+ 		}
++
++		while (freezer_is_on())
++			yield();
++
+ 		if (kthread_should_stop())
+ 			goto interrupted;
+ 		sectors = mddev->pers->sync_request(mddev, j, &skipped,
+@@ -5897,6 +5908,9 @@ void md_do_sync(mddev_t *mddev)
  			last_mark = next;
  		}
  
 +		while (freezer_is_on())
 +			yield();
++
  
  		if (kthread_should_stop())
  			goto interrupted;
 diff --git a/fs/buffer.c b/fs/buffer.c
-index ac78d4c..3a927e2 100644
+index ac78d4c..7ae191b 100644
 --- a/fs/buffer.c
 +++ b/fs/buffer.c
-@@ -247,6 +247,91 @@ void thaw_bdev(struct block_device *bdev, struct super_block *sb)
+@@ -247,6 +247,93 @@ void thaw_bdev(struct block_device *bdev, struct super_block *sb)
  }
  EXPORT_SYMBOL(thaw_bdev);
  
-+#if 0
++#ifdef CONFIG_FS_FREEZER_DEBUG
 +#define FS_PRINTK(fmt, args...) printk(fmt, ## args)
 +#else
 +#define FS_PRINTK(fmt, args...)
@@ -1679,6 +1838,7 @@
 +/**
 + * freeze_filesystems - lock all filesystems and force them into a consistent
 + * state
++ * @which:	What combination of fuse & non-fuse to freeze.
 + */
 +void freeze_filesystems(int which)
 +{
@@ -1701,7 +1861,7 @@
 +		    which & FS_FREEZER_FUSE) {
 +			sb->s_frozen = SB_FREEZE_TRANS;
 +			sb->s_flags |= MS_FROZEN;
-+			printk("Fuse filesystem done.\n");
++			FS_PRINTK("Fuse filesystem done.\n");
 +			continue;
 +		}
 +
@@ -1725,6 +1885,7 @@
 +
 +/**
 + * thaw_filesystems - unlock all filesystems
++ * @which:	What combination of fuse & non-fuse to thaw.
 + */
 +void thaw_filesystems(int which)
 +{
@@ -1757,10 +1918,18 @@
   * Various filesystems appear to want __find_get_block to be non-blocking.
   * But it's the page lock which protects the buffers.  To get around this,
 diff --git a/fs/drop_caches.c b/fs/drop_caches.c
-index 3e5637f..0d4c88e 100644
+index 3e5637f..f3c5cd6 100644
 --- a/fs/drop_caches.c
 +++ b/fs/drop_caches.c
-@@ -33,7 +33,7 @@ static void drop_pagecache_sb(struct super_block *sb)
+@@ -8,6 +8,7 @@
+ #include <linux/writeback.h>
+ #include <linux/sysctl.h>
+ #include <linux/gfp.h>
++#include <linux/module.h>
+ 
+ /* A global variable is a bit ugly, but it keeps the code simple */
+ int sysctl_drop_caches;
+@@ -33,7 +34,7 @@ static void drop_pagecache_sb(struct super_block *sb)
  	iput(toput_inode);
  }
  
@@ -1769,6 +1938,14 @@
  {
  	struct super_block *sb;
  
+@@ -61,6 +62,7 @@ static void drop_slab(void)
+ 		nr_objects = shrink_slab(1000, GFP_KERNEL, 1000);
+ 	} while (nr_objects > 10);
+ }
++EXPORT_SYMBOL_GPL(drop_pagecache);
+ 
+ int drop_caches_sysctl_handler(ctl_table *table, int write,
+ 	struct file *file, void __user *buffer, size_t *length, loff_t *ppos)
 diff --git a/fs/fuse/control.c b/fs/fuse/control.c
 index 4f3cab3..f15b0c5 100644
 --- a/fs/fuse/control.c
@@ -1821,7 +1998,7 @@
  	if (nbytes < sizeof(struct fuse_out_header))
  		return -EINVAL;
 diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
-index fd03330..347e054 100644
+index fd03330..85fec3a 100644
 --- a/fs/fuse/dir.c
 +++ b/fs/fuse/dir.c
 @@ -7,12 +7,14 @@
@@ -1849,16 +2026,25 @@
  		req = fuse_get_req(fc);
  		if (IS_ERR(req))
  			return 0;
-@@ -273,6 +278,8 @@ int fuse_lookup_name(struct super_block *sb, u64 nodeid, struct qstr *name,
- 	if (IS_ERR(req))
+@@ -268,6 +273,8 @@ int fuse_lookup_name(struct super_block *sb, u64 nodeid, struct qstr *name,
+ 	if (name->len > FUSE_NAME_MAX)
  		goto out;
  
-+	FUSE_MIGHT_FREEZE(sb, "fuse_lookup");
++	FUSE_MIGHT_FREEZE(sb, "fuse_lookup_name");
 +
- 	forget_req = fuse_get_req(fc);
- 	err = PTR_ERR(forget_req);
- 	if (IS_ERR(forget_req)) {
-@@ -402,6 +409,8 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry, int mode,
+ 	req = fuse_get_req(fc);
+ 	err = PTR_ERR(req);
+ 	if (IS_ERR(req))
+@@ -331,6 +338,8 @@ static struct dentry *fuse_lookup(struct inode *dir, struct dentry *entry,
+ 	if (err)
+ 		goto out_err;
+ 
++	FUSE_MIGHT_FREEZE(dir->i_sb, "fuse_lookup");
++
+ 	err = -EIO;
+ 	if (inode && get_node_id(inode) == FUSE_ROOT_ID)
+ 		goto out_iput;
+@@ -402,6 +411,8 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry, int mode,
  	if (IS_ERR(forget_req))
  		return PTR_ERR(forget_req);
  
@@ -1867,7 +2053,7 @@
  	req = fuse_get_req(fc);
  	err = PTR_ERR(req);
  	if (IS_ERR(req))
-@@ -488,6 +497,8 @@ static int create_new_entry(struct fuse_conn *fc, struct fuse_req *req,
+@@ -488,6 +499,8 @@ static int create_new_entry(struct fuse_conn *fc, struct fuse_req *req,
  	int err;
  	struct fuse_req *forget_req;
  
@@ -1876,7 +2062,7 @@
  	forget_req = fuse_get_req(fc);
  	if (IS_ERR(forget_req)) {
  		fuse_put_request(fc, req);
-@@ -585,7 +596,11 @@ static int fuse_mkdir(struct inode *dir, struct dentry *entry, int mode)
+@@ -585,7 +598,11 @@ static int fuse_mkdir(struct inode *dir, struct dentry *entry, int mode)
  {
  	struct fuse_mkdir_in inarg;
  	struct fuse_conn *fc = get_fuse_conn(dir);
@@ -1889,7 +2075,7 @@
  	if (IS_ERR(req))
  		return PTR_ERR(req);
  
-@@ -605,7 +620,11 @@ static int fuse_symlink(struct inode *dir, struct dentry *entry,
+@@ -605,7 +622,11 @@ static int fuse_symlink(struct inode *dir, struct dentry *entry,
  {
  	struct fuse_conn *fc = get_fuse_conn(dir);
  	unsigned len = strlen(link) + 1;
@@ -1902,7 +2088,7 @@
  	if (IS_ERR(req))
  		return PTR_ERR(req);
  
-@@ -622,7 +641,11 @@ static int fuse_unlink(struct inode *dir, struct dentry *entry)
+@@ -622,7 +643,11 @@ static int fuse_unlink(struct inode *dir, struct dentry *entry)
  {
  	int err;
  	struct fuse_conn *fc = get_fuse_conn(dir);
@@ -1915,7 +2101,7 @@
  	if (IS_ERR(req))
  		return PTR_ERR(req);
  
-@@ -653,7 +676,11 @@ static int fuse_rmdir(struct inode *dir, struct dentry *entry)
+@@ -653,7 +678,11 @@ static int fuse_rmdir(struct inode *dir, struct dentry *entry)
  {
  	int err;
  	struct fuse_conn *fc = get_fuse_conn(dir);
@@ -1929,7 +2115,7 @@
  		return PTR_ERR(req);
  
 diff --git a/fs/fuse/file.c b/fs/fuse/file.c
-index 2bada6b..2e4af49 100644
+index 2bada6b..a2081c4 100644
 --- a/fs/fuse/file.c
 +++ b/fs/fuse/file.c
 @@ -7,11 +7,13 @@
@@ -1955,16 +2141,71 @@
  	req = fuse_get_req(fc);
  	if (IS_ERR(req))
  		return PTR_ERR(req);
-@@ -674,6 +678,8 @@ static int fuse_buffered_write(struct file *file, struct inode *inode,
+@@ -268,6 +272,8 @@ static int fuse_flush(struct file *file, fl_owner_t id)
+ 	if (fc->no_flush)
+ 		return 0;
+ 
++	FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_flush");
++
+ 	req = fuse_get_req_nofail(fc, file);
+ 	memset(&inarg, 0, sizeof(inarg));
+ 	inarg.fh = ff->fh;
+@@ -319,6 +325,8 @@ int fuse_fsync_common(struct file *file, struct dentry *de, int datasync,
+ 	if ((!isdir && fc->no_fsync) || (isdir && fc->no_fsyncdir))
+ 		return 0;
+ 
++	FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_fsync_common");
++
+ 	/*
+ 	 * Start writeback against all dirty pages of the inode, then
+ 	 * wait for all outstanding writes, before sending the FSYNC
+@@ -427,6 +435,8 @@ static int fuse_readpage(struct file *file, struct page *page)
+ 	if (is_bad_inode(inode))
+ 		goto out;
+ 
++	FUSE_MIGHT_FREEZE(file->f_mapping->host->i_sb, "fuse_readpage");
++
+ 	/*
+ 	 * Page writeback can extend beyond the liftime of the
+ 	 * page-cache page, so make sure we read a properly synced
+@@ -527,6 +537,9 @@ static int fuse_readpages_fill(void *_data, struct page *page)
+ 	struct inode *inode = data->inode;
+ 	struct fuse_conn *fc = get_fuse_conn(inode);
+ 
++	FUSE_MIGHT_FREEZE(data->file->f_mapping->host->i_sb,
++			"fuse_readpages_fill");
++
+ 	fuse_wait_on_page_writeback(inode, page->index);
+ 
+ 	if (req->num_pages &&
+@@ -557,6 +570,8 @@ static int fuse_readpages(struct file *file, struct address_space *mapping,
+ 	if (is_bad_inode(inode))
+ 		goto out;
+ 
++	FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_readpages");
++
+ 	data.file = file;
+ 	data.inode = inode;
+ 	data.req = fuse_get_req(fc);
+@@ -674,6 +689,8 @@ static int fuse_buffered_write(struct file *file, struct inode *inode,
  	if (is_bad_inode(inode))
  		return -EIO;
  
-+	FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_commit_write");
++	FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_buffered_write");
 +
  	/*
  	 * Make sure writepages on the same page are not mixed up with
  	 * plain writes.
-@@ -962,6 +968,8 @@ static ssize_t fuse_direct_io(struct file *file, const char __user *buf,
+@@ -828,6 +845,8 @@ static ssize_t fuse_perform_write(struct file *file,
+ 		struct fuse_req *req;
+ 		ssize_t count;
+ 
++		FUSE_MIGHT_FREEZE(inode->i_sb, "fuse_perform_write");
++
+ 		req = fuse_get_req(fc);
+ 		if (IS_ERR(req)) {
+ 			err = PTR_ERR(req);
+@@ -962,6 +981,8 @@ static ssize_t fuse_direct_io(struct file *file, const char __user *buf,
  	if (is_bad_inode(inode))
  		return -EIO;
  
@@ -1973,7 +2214,7 @@
  	req = fuse_get_req(fc);
  	if (IS_ERR(req))
  		return PTR_ERR(req);
-@@ -1315,6 +1323,8 @@ static int fuse_getlk(struct file *file, struct file_lock *fl)
+@@ -1315,6 +1336,8 @@ static int fuse_getlk(struct file *file, struct file_lock *fl)
  	struct fuse_lk_out outarg;
  	int err;
  
@@ -1982,7 +2223,7 @@
  	req = fuse_get_req(fc);
  	if (IS_ERR(req))
  		return PTR_ERR(req);
-@@ -1350,6 +1360,8 @@ static int fuse_setlk(struct file *file, struct file_lock *fl, int flock)
+@@ -1350,6 +1373,8 @@ static int fuse_setlk(struct file *file, struct file_lock *fl, int flock)
  	if (fl->fl_flags & FL_CLOSE)
  		return 0;
  
@@ -1991,7 +2232,7 @@
  	req = fuse_get_req(fc);
  	if (IS_ERR(req))
  		return PTR_ERR(req);
-@@ -1416,6 +1428,8 @@ static sector_t fuse_bmap(struct address_space *mapping, sector_t block)
+@@ -1416,6 +1441,8 @@ static sector_t fuse_bmap(struct address_space *mapping, sector_t block)
  	if (!inode->i_sb->s_bdev || fc->no_bmap)
  		return 0;
  
@@ -2041,15 +2282,6 @@
  };
  
  static inline int register_fuseblk(void)
-diff --git a/fs/ioctl.c b/fs/ioctl.c
-index 7db32b3..be49ee9 100644
---- a/fs/ioctl.c
-+++ b/fs/ioctl.c
-@@ -211,3 +211,4 @@ asmlinkage long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
-  out:
- 	return error;
- }
-+EXPORT_SYMBOL(sys_ioctl);
<<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.10&r2=1.1.2.2.2.10.2.1&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/kernel-suspend2-headers.patch?r1=1.1.2.7&r2=1.1.2.7.4.1&f=u



More information about the pld-cvs-commit mailing list