[packages/kernel] - preparations for 3.9.4; updated some patches (imq, overlayfs, virtio-gl-accel, ...)

arekm arekm at pld-linux.org
Fri May 31 15:43:14 CEST 2013


commit 514e5daeee3608038b626c0e6ce96249c298c15e
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Fri May 31 15:43:09 2013 +0200

    - preparations for 3.9.4; updated some patches (imq, overlayfs, virtio-gl-accel, ...)

 kernel-imq.patch                     | 314 +++++++++++++++++------------------
 kernel-small_fixes.patch             |  15 +-
 kernel-virtio-gl-accel.patch         |   4 +-
 kernel.spec                          |  15 +-
 ovl01-vfs-add-i_op-dentry_open.patch |  22 +--
 ovl04-overlay-filesystem.patch       |  76 ++++-----
 6 files changed, 212 insertions(+), 234 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index f73c2c9..2204c41 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -67,8 +67,8 @@
 %endif
 
 %define		rel		0.1
-%define		basever		3.8
-%define		postver		.12
+%define		basever		3.9
+%define		postver		.4
 
 # __alt_kernel is list of features, empty string if none set
 # _alt kernel is defined as: %{nil}%{?alt_kernel:-%{?alt_kernel}} (defined in rpm.macros)
@@ -108,10 +108,10 @@ Epoch:		3
 License:	GPL v2
 Group:		Base/Kernel
 Source0:	http://www.kernel.org/pub/linux/kernel/v3.x/linux-%{basever}.tar.xz
-# Source0-md5:	1c738edfc54e7c65faeb90c436104e2f
+# Source0-md5:	4348c9b6b2eb3144d601e87c19d5d909
 %if "%{postver}" != ".0"
 Patch0:		http://www.kernel.org/pub/linux/kernel/v3.x/patch-%{version}.bz2
-# Patch0-md5:	77cb3a52d24a05171006757abe4fd3fd
+# Patch0-md5:	c0f20f2c33265b128610d735cb344e9a
 %endif
 Source1:	kernel.sysconfig
 
@@ -162,11 +162,12 @@ Patch40:	kernel-layer7.patch
 # http://zph.bratcheda.org/linux-2.6.26.3-zph.patch
 Patch49:	kernel-zph.patch
 
-# http://www.linuximq.net/patches/patch-imqmq-3.5.diff.xz
+# http://www.linuximq.net
+# http://tech.groups.yahoo.com/group/linuximq/message/3096
 Patch50:	kernel-imq.patch
 
-Patch51:	http://downloads.sourceforge.net/reiser4/reiser4-for-3.6.4.patch.gz
-# Patch51-md5:	4128aa3bd062d0289117dda6775a7f20
+Patch51:	http://downloads.sourceforge.net/project/reiser4/reiser4-for-linux-3.x/reiser4-for-3.9.2.patch.gz
+# Patch51-md5:	6f7e3f62e887c073844281be90716c28
 
 # http://fatooh.org/esfq-2.6/sfq-2.6.24.1.tar.bz2
 Patch53:	kernel-esfq.patch
diff --git a/kernel-imq.patch b/kernel-imq.patch
index ccc2014..857ba9a 100644
--- a/kernel-imq.patch
+++ b/kernel-imq.patch
@@ -1,7 +1,7 @@
-diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
---- linux-3.5/drivers/net/imq.c	1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.5-imq/drivers/net/imq.c	2012-07-25 12:31:59.709321554 +0300
-@@ -0,0 +1,857 @@
+diff -uNr linux-3.9.1/drivers/net/imq.c linux-3.9.1-imqmq/drivers/net/imq.c
+--- linux-3.9.1/drivers/net/imq.c	1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/drivers/net/imq.c	2013-05-08 17:30:41.715552053 +0300
+@@ -0,0 +1,861 @@
 +/*
 + *             Pseudo-driver for the intermediate queue device.
 + *
@@ -131,6 +131,10 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
 + *             2012/03/19 - Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
 + *              - Port to 3.3
 + *
++ *             2012/12/12 - Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
++ *              - Port to 3.7
++ *              - Fix checkpatch.pl warnings
++ *
 + *	       Also, many thanks to pablo Sebastian Greco for making the initial
 + *	       patch and to those who helped the testing.
 + *
@@ -300,7 +304,8 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
 +
 +		addr1 = iph->daddr.s6_addr32[3];
 +		addr2 = iph->saddr.s6_addr32[3];
-+		ihl = ipv6_skip_exthdr(skb, sizeof(struct ipv6hdr), &ip_proto, &fo);
++		ihl = ipv6_skip_exthdr(skb, sizeof(struct ipv6hdr), &ip_proto,
++				       &fo);
 +		if (unlikely(ihl < 0))
 +			goto other;
 +
@@ -525,9 +530,8 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
 +	index = entry->skb->imq_flags & IMQ_F_IFMASK;
 +	if (unlikely(index > numdevs - 1)) {
 +		if (net_ratelimit())
-+			printk(KERN_WARNING
-+			       "IMQ: invalid device specified, highest is %u\n",
-+			       numdevs - 1);
++			pr_warn("IMQ: invalid device specified, highest is %u\n",
++				numdevs - 1);
 +		retval = -EINVAL;
 +		goto out;
 +	}
@@ -597,8 +601,9 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
 +	users = atomic_read(&skb->users);
 +
 +	skb_shared = skb_get(skb); /* increase reference count by one */
-+	skb_save_cb(skb_shared); /* backup skb->cb, as qdisc layer will
-+					overwrite it */
++
++	/* backup skb->cb, as qdisc layer will overwrite it */
++	skb_save_cb(skb_shared);
 +	qdisc_enqueue_root(skb_shared, q); /* might kfree_skb */
 +
 +	if (likely(atomic_read(&skb_shared->users) == users + 1)) {
@@ -621,9 +626,11 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
 +	} else {
 +		skb_restore_cb(skb_shared); /* restore skb->cb */
 +		skb->nf_queue_entry = NULL;
-+		/* qdisc dropped packet and decreased skb reference count of
++		/*
++		 * qdisc dropped packet and decreased skb reference count of
 +		 * skb, so we don't really want to and try refree as that would
-+		 * actually destroy the skb. */
++		 * actually destroy the skb.
++		 */
 +		spin_unlock(root_lock);
 +		goto packet_not_eaten_by_imq_dev;
 +	}
@@ -699,7 +706,7 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
 +	}
 +	return 0;
 +end:
-+	printk(KERN_WARNING "IMQ: imq_validate failed (%d)\n", ret);
++	pr_warn("IMQ: imq_validate failed (%d)\n", ret);
 +	return ret;
 +}
 +
@@ -711,7 +718,6 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
 +};
 +
 +static const struct nf_queue_handler imq_nfqh = {
-+	.name  = "imq",
 +	.outfn = imq_nf_queue,
 +};
 +
@@ -757,13 +763,13 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
 +	int err, i;
 +
 +	if (numdevs < 1 || numdevs > IMQ_MAX_DEVS) {
-+		printk(KERN_ERR "IMQ: numdevs has to be betweed 1 and %u\n",
++		pr_err("IMQ: numdevs has to be betweed 1 and %u\n",
 +		       IMQ_MAX_DEVS);
 +		return -EINVAL;
 +	}
 +
 +	if (numqueues < 1 || numqueues > IMQ_MAX_QUEUES) {
-+		printk(KERN_ERR "IMQ: numqueues has to be betweed 1 and %u\n",
++		pr_err("IMQ: numqueues has to be betweed 1 and %u\n",
 +		       IMQ_MAX_QUEUES);
 +		return -EINVAL;
 +	}
@@ -797,30 +803,30 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
 +
 +	err = imq_init_devs();
 +	if (err) {
-+		printk(KERN_ERR "IMQ: Error trying imq_init_devs(net)\n");
++		pr_err("IMQ: Error trying imq_init_devs(net)\n");
 +		return err;
 +	}
 +
 +	err = imq_init_hooks();
 +	if (err) {
-+		printk(KERN_ERR "IMQ: Error trying imq_init_hooks()\n");
++		pr_err(KERN_ERR "IMQ: Error trying imq_init_hooks()\n");
 +		rtnl_link_unregister(&imq_link_ops);
 +		memset(imq_devs_cache, 0, sizeof(imq_devs_cache));
 +		return err;
 +	}
 +
-+	printk(KERN_INFO "IMQ driver loaded successfully. "
-+		"(numdevs = %d, numqueues = %d)\n", numdevs, numqueues);
++	pr_info("IMQ driver loaded successfully. (numdevs = %d, numqueues = %d)\n",
++		numdevs, numqueues);
 +
 +#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
-+	printk(KERN_INFO "\tHooking IMQ before NAT on PREROUTING.\n");
++	pr_info("\tHooking IMQ before NAT on PREROUTING.\n");
 +#else
-+	printk(KERN_INFO "\tHooking IMQ after NAT on PREROUTING.\n");
++	pr_info("\tHooking IMQ after NAT on PREROUTING.\n");
 +#endif
 +#if defined(CONFIG_IMQ_BEHAVIOR_AB) || defined(CONFIG_IMQ_BEHAVIOR_BB)
-+	printk(KERN_INFO "\tHooking IMQ before NAT on POSTROUTING.\n");
++	pr_info("\tHooking IMQ before NAT on POSTROUTING.\n");
 +#else
-+	printk(KERN_INFO "\tHooking IMQ after NAT on POSTROUTING.\n");
++	pr_info("\tHooking IMQ after NAT on POSTROUTING.\n");
 +#endif
 +
 +	return 0;
@@ -842,7 +848,7 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
 +{
 +	imq_unhook();
 +	imq_cleanup_devs();
-+	printk(KERN_INFO "IMQ driver unloaded successfully.\n");
++	pr_info("IMQ driver unloaded successfully.\n");
 +}
 +
 +module_init(imq_init_module);
@@ -850,19 +856,17 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
 +
 +module_param(numdevs, int, 0);
 +module_param(numqueues, int, 0);
-+MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will "
-+			"be created)");
++MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will be created)");
 +MODULE_PARM_DESC(numqueues, "number of queues per IMQ device");
 +MODULE_AUTHOR("http://www.linuximq.net");
-+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See "
-+			"http://www.linuximq.net/ for more information.");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
 +MODULE_LICENSE("GPL");
 +MODULE_ALIAS_RTNL_LINK("imq");
 +
-diff -uNr linux-3.5/drivers/net/Kconfig linux-3.5-imq/drivers/net/Kconfig
---- linux-3.5/drivers/net/Kconfig	2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/drivers/net/Kconfig	2012-07-25 12:31:59.709321554 +0300
-@@ -192,6 +192,125 @@
+diff -uNr linux-3.9.1/drivers/net/Kconfig linux-3.9.1-imqmq/drivers/net/Kconfig
+--- linux-3.9.1/drivers/net/Kconfig	2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/drivers/net/Kconfig	2013-05-08 17:30:29.011952562 +0300
+@@ -206,6 +206,125 @@
  	depends on RIONET
  	default "128"
  
@@ -988,9 +992,9 @@ diff -uNr linux-3.5/drivers/net/Kconfig linux-3.5-imq/drivers/net/Kconfig
  config TUN
  	tristate "Universal TUN/TAP device driver support"
  	select CRC32
-diff -uNr linux-3.5/drivers/net/Makefile linux-3.5-imq/drivers/net/Makefile
---- linux-3.5/drivers/net/Makefile	2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/drivers/net/Makefile	2012-07-25 12:31:59.709321554 +0300
+diff -uNr linux-3.9.1/drivers/net/Makefile linux-3.9.1-imqmq/drivers/net/Makefile
+--- linux-3.9.1/drivers/net/Makefile	2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/drivers/net/Makefile	2013-05-08 17:30:29.011952562 +0300
 @@ -9,6 +9,7 @@
  obj-$(CONFIG_DUMMY) += dummy.o
  obj-$(CONFIG_EQUALIZER) += eql.o
@@ -999,9 +1003,9 @@ diff -uNr linux-3.5/drivers/net/Makefile linux-3.5-imq/drivers/net/Makefile
  obj-$(CONFIG_MACVLAN) += macvlan.o
  obj-$(CONFIG_MACVTAP) += macvtap.o
  obj-$(CONFIG_MII) += mii.o
-diff -uNr linux-3.5/include/linux/imq.h linux-3.5-imq/include/linux/imq.h
---- linux-3.5/include/linux/imq.h	1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.5-imq/include/linux/imq.h	2012-07-25 12:31:59.709321554 +0300
+diff -uNr linux-3.9.1/include/linux/imq.h linux-3.9.1-imqmq/include/linux/imq.h
+--- linux-3.9.1/include/linux/imq.h	1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/include/linux/imq.h	2013-05-08 17:30:29.011952562 +0300
 @@ -0,0 +1,13 @@
 +#ifndef _IMQ_H
 +#define _IMQ_H
@@ -1016,9 +1020,9 @@ diff -uNr linux-3.5/include/linux/imq.h linux-3.5-imq/include/linux/imq.h
 +
 +#endif /* _IMQ_H */
 +
-diff -uNr linux-3.5/include/linux/netfilter/xt_IMQ.h linux-3.5-imq/include/linux/netfilter/xt_IMQ.h
---- linux-3.5/include/linux/netfilter/xt_IMQ.h	1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.5-imq/include/linux/netfilter/xt_IMQ.h	2012-07-25 12:31:59.709321554 +0300
+diff -uNr linux-3.9.1/include/linux/netfilter/xt_IMQ.h linux-3.9.1-imqmq/include/linux/netfilter/xt_IMQ.h
+--- linux-3.9.1/include/linux/netfilter/xt_IMQ.h	1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/include/linux/netfilter/xt_IMQ.h	2013-05-08 17:30:29.011952562 +0300
 @@ -0,0 +1,9 @@
 +#ifndef _XT_IMQ_H
 +#define _XT_IMQ_H
@@ -1029,22 +1033,9 @@ diff -uNr linux-3.5/include/linux/netfilter/xt_IMQ.h linux-3.5-imq/include/linux
 +
 +#endif /* _XT_IMQ_H */
 +
-diff -uNr linux-3.5/include/uapi/linux/netfilter.h linux-3.5-imq/include/uapi/linux/netfilter.h
---- linux-3.5/include/uapi/linux/netfilter.h	2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/include/uapi/linux/netfilter.h	2012-07-25 12:31:59.709321554 +0300
-@@ -22,7 +22,8 @@
- #define NF_QUEUE 3
- #define NF_REPEAT 4
- #define NF_STOP 5
--#define NF_MAX_VERDICT NF_STOP
-+#define NF_IMQ_QUEUE 6
-+#define NF_MAX_VERDICT NF_IMQ_QUEUE
- 
- /* we overload the higher bits for encoding auxiliary data such as the queue
-  * number or errno values. Not nice, but better than additional function
-diff -uNr linux-3.5/include/linux/netfilter_ipv4/ipt_IMQ.h linux-3.5-imq/include/linux/netfilter_ipv4/ipt_IMQ.h
---- linux-3.5/include/linux/netfilter_ipv4/ipt_IMQ.h	1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.5-imq/include/linux/netfilter_ipv4/ipt_IMQ.h	2012-07-25 12:31:59.709321554 +0300
+diff -uNr linux-3.9.1/include/linux/netfilter_ipv4/ipt_IMQ.h linux-3.9.1-imqmq/include/linux/netfilter_ipv4/ipt_IMQ.h
+--- linux-3.9.1/include/linux/netfilter_ipv4/ipt_IMQ.h	1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/include/linux/netfilter_ipv4/ipt_IMQ.h	2013-05-08 17:30:29.011952562 +0300
 @@ -0,0 +1,10 @@
 +#ifndef _IPT_IMQ_H
 +#define _IPT_IMQ_H
@@ -1056,9 +1047,9 @@ diff -uNr linux-3.5/include/linux/netfilter_ipv4/ipt_IMQ.h linux-3.5-imq/include
 +
 +#endif /* _IPT_IMQ_H */
 +
-diff -uNr linux-3.5/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-3.5-imq/include/linux/netfilter_ipv6/ip6t_IMQ.h
---- linux-3.5/include/linux/netfilter_ipv6/ip6t_IMQ.h	1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.5-imq/include/linux/netfilter_ipv6/ip6t_IMQ.h	2012-07-25 12:31:59.709321554 +0300
+diff -uNr linux-3.9.1/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-3.9.1-imqmq/include/linux/netfilter_ipv6/ip6t_IMQ.h
+--- linux-3.9.1/include/linux/netfilter_ipv6/ip6t_IMQ.h	1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/include/linux/netfilter_ipv6/ip6t_IMQ.h	2013-05-08 17:30:29.011952562 +0300
 @@ -0,0 +1,10 @@
 +#ifndef _IP6T_IMQ_H
 +#define _IP6T_IMQ_H
@@ -1070,9 +1061,9 @@ diff -uNr linux-3.5/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-3.5-imq/includ
 +
 +#endif /* _IP6T_IMQ_H */
 +
-diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
---- linux-3.5/include/linux/skbuff.h	2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/include/linux/skbuff.h	2012-07-25 12:31:59.712654956 +0300
+diff -uNr linux-3.9.1/include/linux/skbuff.h linux-3.9.1-imqmq/include/linux/skbuff.h
+--- linux-3.9.1/include/linux/skbuff.h	2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/include/linux/skbuff.h	2013-05-08 17:30:29.015285965 +0300
 @@ -32,6 +32,9 @@
  #include <linux/hrtimer.h>
  #include <linux/dma-mapping.h>
@@ -1083,7 +1074,7 @@ diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
  
  /* Don't change this without changing skb_csum_unnecessary! */
  #define CHECKSUM_NONE 0
-@@ -402,6 +405,9 @@
+@@ -415,6 +418,9 @@
  	 * first. This is owned by whoever has the skb queued ATM.
  	 */
  	char			cb[48] __aligned(8);
@@ -1093,7 +1084,7 @@ diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
  
  	unsigned long		_skb_refdst;
  #ifdef CONFIG_XFRM
-@@ -440,6 +446,9 @@
+@@ -453,6 +459,9 @@
  #ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
  	struct sk_buff		*nfct_reasm;
  #endif
@@ -1103,8 +1094,8 @@ diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
  #ifdef CONFIG_BRIDGE_NETFILTER
  	struct nf_bridge_info	*nf_bridge;
  #endif
-@@ -471,6 +480,10 @@
- 	/* 8/10 bit hole (depending on ndisc_nodetype presence) */
+@@ -491,6 +500,10 @@
+ 	/* 7/9 bit hole (depending on ndisc_nodetype presence) */
  	kmemcheck_bitfield_end(flags2);
  
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
@@ -1114,7 +1105,7 @@ diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
  #ifdef CONFIG_NET_DMA
  	dma_cookie_t		dma_cookie;
  #endif
-@@ -555,6 +568,12 @@
+@@ -586,6 +599,12 @@
  	return (struct rtable *)skb_dst(skb);
  }
  
@@ -1125,9 +1116,9 @@ diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
 +#endif
 +
  extern void kfree_skb(struct sk_buff *skb);
+ extern void skb_tx_error(struct sk_buff *skb);
  extern void consume_skb(struct sk_buff *skb);
- extern void	       __kfree_skb(struct sk_buff *skb);
-@@ -2416,6 +2435,10 @@
+@@ -2662,6 +2681,10 @@
  	dst->nfct_reasm = src->nfct_reasm;
  	nf_conntrack_get_reasm(src->nfct_reasm);
  #endif
@@ -1138,12 +1129,12 @@ diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
  #ifdef CONFIG_BRIDGE_NETFILTER
  	dst->nf_bridge  = src->nf_bridge;
  	nf_bridge_get(src->nf_bridge);
-diff -uNr linux-3.5/include/net/netfilter/nf_queue.h linux-3.5-imq/include/net/netfilter/nf_queue.h
---- linux-3.5/include/net/netfilter/nf_queue.h	2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/include/net/netfilter/nf_queue.h	2012-07-25 12:31:59.715988358 +0300
-@@ -30,5 +30,11 @@
- 				       const struct nf_queue_handler *qh);
- extern void nf_unregister_queue_handlers(const struct nf_queue_handler *qh);
+diff -uNr linux-3.9.1/include/net/netfilter/nf_queue.h linux-3.9.1-imqmq/include/net/netfilter/nf_queue.h
+--- linux-3.9.1/include/net/netfilter/nf_queue.h	2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/include/net/netfilter/nf_queue.h	2013-05-08 17:30:29.015285965 +0300
+@@ -26,5 +26,11 @@
+ void nf_register_queue_handler(const struct nf_queue_handler *qh);
+ void nf_unregister_queue_handler(void);
  extern void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict);
 +extern void nf_queue_entry_release_refs(struct nf_queue_entry *entry);
 +
@@ -1153,22 +1144,35 @@ diff -uNr linux-3.5/include/net/netfilter/nf_queue.h linux-3.5-imq/include/net/n
 +#endif
  
  #endif /* _NF_QUEUE_H */
-diff -uNr linux-3.5/net/core/dev.c linux-3.5-imq/net/core/dev.c
---- linux-3.5/net/core/dev.c	2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/core/dev.c	2012-07-25 12:31:59.719321759 +0300
-@@ -97,6 +97,9 @@
- #include <net/net_namespace.h>
- #include <net/sock.h>
- #include <linux/rtnetlink.h>
+diff -uNr linux-3.9.1/include/uapi/linux/netfilter.h linux-3.9.1-imqmq/include/uapi/linux/netfilter.h
+--- linux-3.9.1/include/uapi/linux/netfilter.h	2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/include/uapi/linux/netfilter.h	2013-05-08 17:30:29.015285965 +0300
+@@ -13,7 +13,8 @@
+ #define NF_QUEUE 3
+ #define NF_REPEAT 4
+ #define NF_STOP 5
+-#define NF_MAX_VERDICT NF_STOP
++#define NF_IMQ_QUEUE 6
++#define NF_MAX_VERDICT NF_IMQ_QUEUE
+ 
+ /* we overload the higher bits for encoding auxiliary data such as the queue
+  * number or errno values. Not nice, but better than additional function
+diff -uNr linux-3.9.1/net/core/dev.c linux-3.9.1-imqmq/net/core/dev.c
+--- linux-3.9.1/net/core/dev.c	2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/core/dev.c	2013-05-08 17:30:29.018619368 +0300
+@@ -129,6 +129,9 @@
+ #include <linux/inetdevice.h>
+ #include <linux/cpu_rmap.h>
+ #include <linux/static_key.h>
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
 +#include <linux/imq.h>
 +#endif
- #include <linux/proc_fs.h>
- #include <linux/seq_file.h>
- #include <linux/stat.h>
-@@ -2171,7 +2174,12 @@
- 		if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
- 			skb_dst_drop(skb);
+ 
+ #include "net-sysfs.h"
+ 
+@@ -2529,7 +2532,12 @@
+ 			}
+ 		}
  
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
 +		if (!list_empty(&ptype_all) &&
@@ -1178,10 +1182,10 @@ diff -uNr linux-3.5/net/core/dev.c linux-3.5-imq/net/core/dev.c
 +#endif
  			dev_queue_xmit_nit(skb, dev);
  
- 		features = netif_skb_features(skb);
-diff -uNr linux-3.5/net/core/skbuff.c linux-3.5-imq/net/core/skbuff.c
---- linux-3.5/net/core/skbuff.c	2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/core/skbuff.c	2012-07-25 12:31:59.722655161 +0300
+ 		skb_len = skb->len;
+diff -uNr linux-3.9.1/net/core/skbuff.c linux-3.9.1-imqmq/net/core/skbuff.c
+--- linux-3.9.1/net/core/skbuff.c	2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/core/skbuff.c	2013-05-08 17:30:29.021952772 +0300
 @@ -73,6 +73,9 @@
  
  struct kmem_cache *skbuff_head_cache __read_mostly;
@@ -1275,7 +1279,7 @@ diff -uNr linux-3.5/net/core/skbuff.c linux-3.5-imq/net/core/skbuff.c
  
  /* Pipe buffer operations for a socket. */
  static const struct pipe_buf_operations sock_pipe_buf_ops = {
-@@ -490,6 +569,29 @@
+@@ -562,6 +641,28 @@
  		WARN_ON(in_irq());
  		skb->destructor(skb);
  	}
@@ -1286,8 +1290,8 @@ diff -uNr linux-3.5/net/core/skbuff.c linux-3.5-imq/net/core/skbuff.c
 +	 */
 +	while (skb->cb_next != NULL) {
 +		if (net_ratelimit())
-+			printk(KERN_WARNING "IMQ: kfree_skb: skb->cb_next: "
-+				"%08x\n", (unsigned int)skb->cb_next);
++			pr_warn("IMQ: kfree_skb: skb->cb_next: %08x\n",
++				(unsigned int)skb->cb_next);
 +
 +		skb_restore_cb(skb);
 +	}
@@ -1299,13 +1303,12 @@ diff -uNr linux-3.5/net/core/skbuff.c linux-3.5-imq/net/core/skbuff.c
 +	 * If this happens we need to add refcounting, etc for nf_queue_entry.
 +	 */
 +	if (skb->nf_queue_entry && net_ratelimit())
-+		printk(KERN_WARNING
-+			"IMQ: kfree_skb: skb->nf_queue_entry != NULL");
++		pr_warn("%s\n", "IMQ: kfree_skb: skb->nf_queue_entry != NULL");
 +#endif
  #if IS_ENABLED(CONFIG_NF_CONNTRACK)
  	nf_conntrack_put(skb->nfct);
  #endif
-@@ -635,6 +737,9 @@
+@@ -683,6 +784,9 @@
  	new->sp			= secpath_get(old->sp);
  #endif
  	memcpy(new->cb, old->cb, sizeof(old->cb));
@@ -1315,7 +1318,7 @@ diff -uNr linux-3.5/net/core/skbuff.c linux-3.5-imq/net/core/skbuff.c
  	new->csum		= old->csum;
  	new->local_df		= old->local_df;
  	new->pkt_type		= old->pkt_type;
-@@ -3029,6 +3134,13 @@
+@@ -3053,6 +3157,13 @@
  						0,
  						SLAB_HWCACHE_ALIGN|SLAB_PANIC,
  						NULL);
@@ -1329,12 +1332,12 @@ diff -uNr linux-3.5/net/core/skbuff.c linux-3.5-imq/net/core/skbuff.c
  }
  
  /**
-diff -uNr linux-3.5/net/ipv6/ip6_output.c linux-3.5-imq/net/ipv6/ip6_output.c
---- linux-3.5/net/ipv6/ip6_output.c	2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/ipv6/ip6_output.c	2012-07-25 12:31:59.722655161 +0300
-@@ -102,9 +102,6 @@
- 	struct net_device *dev = dst->dev;
- 	struct neighbour *neigh;
+diff -uNr linux-3.9.1/net/ipv6/ip6_output.c linux-3.9.1-imqmq/net/ipv6/ip6_output.c
+--- linux-3.9.1/net/ipv6/ip6_output.c	2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/ipv6/ip6_output.c	2013-05-08 17:30:29.021952772 +0300
+@@ -89,9 +89,6 @@
+ 	struct in6_addr *nexthop;
+ 	int ret;
  
 -	skb->protocol = htons(ETH_P_IPV6);
 -	skb->dev = dev;
@@ -1342,22 +1345,24 @@ diff -uNr linux-3.5/net/ipv6/ip6_output.c linux-3.5-imq/net/ipv6/ip6_output.c
  	if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr)) {
  		struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
  
-@@ -170,6 +167,11 @@
+@@ -167,6 +164,13 @@
  		return 0;
  	}
  
-+	/* IMQ-patch: moved setting skb->dev and skb->protocol from
-+	 * ip6_finish_output2 to fix crashing at netif_skb_features(). */
++	/*
++	 * IMQ-patch: moved setting skb->dev and skb->protocol from
++	 * ip6_finish_output2 to fix crashing at netif_skb_features().
++	 */
 +	skb->protocol = htons(ETH_P_IPV6);
 +	skb->dev = dev;
 +
  	return NF_HOOK_COND(NFPROTO_IPV6, NF_INET_POST_ROUTING, skb, NULL, dev,
  			    ip6_finish_output,
  			    !(IP6CB(skb)->flags & IP6SKB_REROUTED));
-diff -uNr linux-3.5/net/netfilter/core.c linux-3.5-imq/net/netfilter/core.c
---- linux-3.5/net/netfilter/core.c	2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/netfilter/core.c	2012-07-25 12:31:59.722655161 +0300
-@@ -190,9 +190,11 @@
+diff -uNr linux-3.9.1/net/netfilter/core.c linux-3.9.1-imqmq/net/netfilter/core.c
+--- linux-3.9.1/net/netfilter/core.c	2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/core.c	2013-05-08 17:30:29.025286174 +0300
+@@ -188,9 +188,11 @@
  		ret = NF_DROP_GETERR(verdict);
  		if (ret == 0)
  			ret = -EPERM;
@@ -1371,10 +1376,10 @@ diff -uNr linux-3.5/net/netfilter/core.c linux-3.5-imq/net/netfilter/core.c
  		if (err < 0) {
  			if (err == -ECANCELED)
  				goto next_hook;
-diff -uNr linux-3.5/net/netfilter/Kconfig linux-3.5-imq/net/netfilter/Kconfig
---- linux-3.5/net/netfilter/Kconfig	2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/netfilter/Kconfig	2012-07-25 12:31:59.722655161 +0300
-@@ -569,6 +569,18 @@
+diff -uNr linux-3.9.1/net/netfilter/Kconfig linux-3.9.1-imqmq/net/netfilter/Kconfig
+--- linux-3.9.1/net/netfilter/Kconfig	2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/Kconfig	2013-05-08 17:30:29.025286174 +0300
+@@ -641,6 +641,18 @@
  
  	  To compile it as a module, choose M here.  If unsure, say N.
  
@@ -1393,20 +1398,20 @@ diff -uNr linux-3.5/net/netfilter/Kconfig linux-3.5-imq/net/netfilter/Kconfig
  config NETFILTER_XT_TARGET_MARK
  	tristate '"MARK" target support'
  	depends on NETFILTER_ADVANCED
-diff -uNr linux-3.5/net/netfilter/Makefile linux-3.5-imq/net/netfilter/Makefile
---- linux-3.5/net/netfilter/Makefile	2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/netfilter/Makefile	2012-07-25 12:32:28.966592115 +0300
-@@ -60,6 +60,7 @@
+diff -uNr linux-3.9.1/net/netfilter/Makefile linux-3.9.1-imqmq/net/netfilter/Makefile
+--- linux-3.9.1/net/netfilter/Makefile	2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/Makefile	2013-05-08 17:30:29.025286174 +0300
+@@ -82,6 +82,7 @@
  obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_HMARK) += xt_HMARK.o
 +obj-$(CONFIG_NETFILTER_XT_TARGET_IMQ) += xt_IMQ.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
  obj-$(CONFIG_NETFILTER_XT_TARGET_LOG) += xt_LOG.o
- obj-$(CONFIG_NETFILTER_XT_TARGET_NFLOG) += xt_NFLOG.o
-diff -uNr linux-3.5/net/netfilter/nf_internals.h linux-3.5-imq/net/netfilter/nf_internals.h
---- linux-3.5/net/netfilter/nf_internals.h	2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/netfilter/nf_internals.h	2012-07-25 12:31:59.725988564 +0300
+ obj-$(CONFIG_NETFILTER_XT_TARGET_NETMAP) += xt_NETMAP.o
+diff -uNr linux-3.9.1/net/netfilter/nf_internals.h linux-3.9.1-imqmq/net/netfilter/nf_internals.h
+--- linux-3.9.1/net/netfilter/nf_internals.h	2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/nf_internals.h	2013-05-08 17:30:29.025286174 +0300
 @@ -29,7 +29,7 @@
  		    struct net_device *indev,
  		    struct net_device *outdev,
@@ -1416,46 +1421,43 @@ diff -uNr linux-3.5/net/netfilter/nf_internals.h linux-3.5-imq/net/netfilter/nf_
  extern int __init netfilter_queue_init(void);
  
  /* nf_log.c */
-diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queue.c
---- linux-3.5/net/netfilter/nf_queue.c	2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/netfilter/nf_queue.c	2012-07-25 12:31:59.725988564 +0300
-@@ -22,6 +22,26 @@
- 
- static DEFINE_MUTEX(queue_handler_mutex);
+diff -uNr linux-3.9.1/net/netfilter/nf_queue.c linux-3.9.1-imqmq/net/netfilter/nf_queue.c
+--- linux-3.9.1/net/netfilter/nf_queue.c	2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/nf_queue.c	2013-05-08 17:30:29.025286174 +0300
+@@ -22,6 +22,23 @@
+  */
+ static const struct nf_queue_handler __rcu *queue_handler __read_mostly;
  
 +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+static const struct nf_queue_handler *queue_imq_handler;
++static const struct nf_queue_handler __rcu *queue_imq_handler __read_mostly;
 +
 +void nf_register_queue_imq_handler(const struct nf_queue_handler *qh)
 +{
-+	mutex_lock(&queue_handler_mutex);
 +	rcu_assign_pointer(queue_imq_handler, qh);
-+	mutex_unlock(&queue_handler_mutex);
 +}
 +EXPORT_SYMBOL_GPL(nf_register_queue_imq_handler);
 +
 +void nf_unregister_queue_imq_handler(void)
 +{
-+	mutex_lock(&queue_handler_mutex);
-+	rcu_assign_pointer(queue_imq_handler, NULL);
-+	mutex_unlock(&queue_handler_mutex);
++	RCU_INIT_POINTER(queue_imq_handler, NULL);
++	synchronize_rcu();
 +}
 +EXPORT_SYMBOL_GPL(nf_unregister_queue_imq_handler);
 +#endif
 +
  /* return EBUSY when somebody else is registered, return EEXIST if the
   * same handler is registered, return 0 in case of success. */
- int nf_register_queue_handler(u_int8_t pf, const struct nf_queue_handler *qh)
-@@ -92,7 +112,7 @@
+ void nf_register_queue_handler(const struct nf_queue_handler *qh)
+@@ -40,7 +57,7 @@
  }
- EXPORT_SYMBOL_GPL(nf_unregister_queue_handlers);
+ EXPORT_SYMBOL(nf_unregister_queue_handler);
  
 -static void nf_queue_entry_release_refs(struct nf_queue_entry *entry)
 +void nf_queue_entry_release_refs(struct nf_queue_entry *entry)
  {
  	/* Release those devices we held, or Alexey will kill me. */
  	if (entry->indev)
-@@ -112,6 +132,7 @@
+@@ -60,6 +77,7 @@
  	/* Drop reference to owner of hook which queued us. */
  	module_put(entry->elem->owner);
  }
@@ -1463,7 +1465,7 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
  
  /*
   * Any packet that leaves via this function must come back
-@@ -123,7 +144,8 @@
+@@ -71,7 +89,8 @@
  		      struct net_device *indev,
  		      struct net_device *outdev,
  		      int (*okfn)(struct sk_buff *),
@@ -1473,7 +1475,7 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
  {
  	int status = -ENOENT;
  	struct nf_queue_entry *entry = NULL;
-@@ -137,7 +159,17 @@
+@@ -85,7 +104,17 @@
  	/* QUEUE == DROP if no one is waiting, to be safe. */
  	rcu_read_lock();
  
@@ -1492,7 +1494,7 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
  	if (!qh) {
  		status = -ESRCH;
  		goto err_unlock;
-@@ -230,7 +262,8 @@
+@@ -178,7 +207,8 @@
  	     struct net_device *indev,
  	     struct net_device *outdev,
  	     int (*okfn)(struct sk_buff *),
@@ -1502,7 +1504,7 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
  {
  	struct sk_buff *segs;
  	int err = -EINVAL;
-@@ -238,7 +271,7 @@
+@@ -186,7 +216,7 @@
  
  	if (!skb_is_gso(skb))
  		return __nf_queue(skb, elem, pf, hook, indev, outdev, okfn,
@@ -1511,7 +1513,7 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
  
  	switch (pf) {
  	case NFPROTO_IPV4:
-@@ -266,7 +299,7 @@
+@@ -214,7 +244,7 @@
  		if (err == 0) {
  			nf_bridge_adjust_segmented_data(segs);
  			err = __nf_queue(segs, elem, pf, hook, indev,
@@ -1520,7 +1522,7 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
  		}
  		if (err == 0)
  			queued++;
-@@ -323,9 +356,11 @@
+@@ -271,9 +301,11 @@
  		local_bh_enable();
  		break;
  	case NF_QUEUE:
@@ -1533,10 +1535,10 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
  		if (err < 0) {
  			if (err == -ECANCELED)
  				goto next_hook;
-diff -uNr linux-3.5/net/netfilter/xt_IMQ.c linux-3.5-imq/net/netfilter/xt_IMQ.c
---- linux-3.5/net/netfilter/xt_IMQ.c	1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.5-imq/net/netfilter/xt_IMQ.c	2012-07-25 12:31:59.725988564 +0300
-@@ -0,0 +1,74 @@
+diff -uNr linux-3.9.1/net/netfilter/xt_IMQ.c linux-3.9.1-imqmq/net/netfilter/xt_IMQ.c
+--- linux-3.9.1/net/netfilter/xt_IMQ.c	1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/net/netfilter/xt_IMQ.c	2013-05-08 17:30:29.025286174 +0300
+@@ -0,0 +1,72 @@
 +/*
 + * This target marks packets to be enqueued to an imq device
 + */
@@ -1561,9 +1563,8 @@ diff -uNr linux-3.5/net/netfilter/xt_IMQ.c linux-3.5-imq/net/netfilter/xt_IMQ.c
 +	struct xt_imq_info *mr = par->targinfo;
 +
 +	if (mr->todev > IMQ_MAX_DEVS - 1) {
-+		printk(KERN_WARNING
-+		       "IMQ: invalid device specified, highest is %u\n",
-+		       IMQ_MAX_DEVS - 1);
++		pr_warn("IMQ: invalid device specified, highest is %u\n",
++			IMQ_MAX_DEVS - 1);
 +		return -EINVAL;
 +	}
 +
@@ -1605,8 +1606,7 @@ diff -uNr linux-3.5/net/netfilter/xt_IMQ.c linux-3.5-imq/net/netfilter/xt_IMQ.c
 +module_exit(imq_fini);
 +
 +MODULE_AUTHOR("http://www.linuximq.net");
-+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. "
-+		   "See http://www.linuximq.net/ for more information.");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
 +MODULE_LICENSE("GPL");
 +MODULE_ALIAS("ipt_IMQ");
 +MODULE_ALIAS("ip6t_IMQ");
diff --git a/kernel-small_fixes.patch b/kernel-small_fixes.patch
index ebdc93f..392d121 100644
--- a/kernel-small_fixes.patch
+++ b/kernel-small_fixes.patch
@@ -31,21 +31,18 @@ diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek
 index 7a0c800..ec5ebbb 100644
 --- a/drivers/net/ethernet/realtek/r8169.c
 +++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -4103,6 +4103,14 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
- 	/* Get MAC address */
+@@ -6927,6 +6927,14 @@ rtl_init_one(struct pci_dev *pdev, const
  	for (i = 0; i < ETH_ALEN; i++)
  		dev->dev_addr[i] = RTL_R8(MAC0 + i);
-+
+ 
 +	if (!is_valid_ether_addr(dev->dev_addr)) {
 +		/* Report it and use a random ethernet address instead */
 +		netdev_err(dev, "Invalid MAC address: %pM\n", dev->dev_addr);
 +		random_ether_addr(dev->dev_addr);
 +		netdev_info(dev, "Using random MAC address: %pM\n",
-+			    dev->dev_addr);
++				dev->dev_addr);
 +	}
- 	memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
- 
++
  	SET_ETHTOOL_OPS(dev, &rtl8169_ethtool_ops);
--- 
-1.7.7.3
-
+ 	dev->watchdog_timeo = RTL8169_TX_TIMEOUT;
+ 
diff --git a/kernel-virtio-gl-accel.patch b/kernel-virtio-gl-accel.patch
index fbd282a..4a87616 100644
--- a/kernel-virtio-gl-accel.patch
+++ b/kernel-virtio-gl-accel.patch
@@ -4,8 +4,8 @@ index 30879df..35699a0 100644
 --- a/drivers/gpu/Makefile
 +++ b/drivers/gpu/Makefile
 @@ -1 +1 @@
--obj-y			+= drm/ vga/ stub/
-+obj-y			+= drm/ vga/ stub/ misc/
+-obj-y			+= drm/ vga/
++obj-y			+= drm/ vga/ misc/
 diff --git a/drivers/gpu/misc/Kconfig b/drivers/gpu/misc/Kconfig
 new file mode 100644
 index 0000000..50043d3
diff --git a/ovl01-vfs-add-i_op-dentry_open.patch b/ovl01-vfs-add-i_op-dentry_open.patch
index b4fd81a..650822b 100644
--- a/ovl01-vfs-add-i_op-dentry_open.patch
+++ b/ovl01-vfs-add-i_op-dentry_open.patch
@@ -86,15 +86,15 @@ Index: linux-3.6-rc7-master/fs/open.c
 --- linux-3.6-rc7-master.orig/fs/open.c	2012-09-28 13:36:40.000000000 +0200
 +++ linux-3.6-rc7-master/fs/open.c	2012-09-28 13:36:47.000000000 +0200
 @@ -787,8 +787,7 @@ struct file *dentry_open(const struct pa
- 		return ERR_PTR(error);
- 
- 	f->f_flags = flags;
--	f->f_path = *path;
--	error = do_dentry_open(f, NULL, cred);
-+	error = vfs_open(path, f, cred);
- 	if (!error) {
- 		error = open_check_o_direct(f);
- 		if (error) {
+ 	f = get_empty_filp();
+ 	if (!IS_ERR(f)) {
+		f->f_flags = flags;
+-		f->f_path = *path;
+-		error = do_dentry_open(f, NULL, cred);
++		error = vfs_open(path, f, cred);
+ 		if (!error) {
+			/* from now on we need fput() to dispose of f */
+ 			error = open_check_o_direct(f);
 @@ -803,6 +802,26 @@ struct file *dentry_open(const struct pa
  }
  EXPORT_SYMBOL(dentry_open);
@@ -126,14 +126,14 @@ Index: linux-3.6-rc7-master/include/linux/fs.h
 ===================================================================
 --- linux-3.6-rc7-master.orig/include/linux/fs.h	2012-09-28 13:36:40.000000000 +0200
 +++ linux-3.6-rc7-master/include/linux/fs.h	2012-09-28 13:36:47.000000000 +0200
-@@ -1843,6 +1843,7 @@ struct inode_operations {
+@@ -1573,6 +1573,7 @@ struct inode_operations {
  	int (*atomic_open)(struct inode *, struct dentry *,
  			   struct file *, unsigned open_flag,
  			   umode_t create_mode, int *opened);
 +	int (*dentry_open)(struct dentry *, struct file *, const struct cred *);
  } ____cacheline_aligned;
  
- struct seq_file;
+ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
 @@ -2211,6 +2212,7 @@ extern long do_sys_open(int dfd, const c
  extern struct file *filp_open(const char *, int, umode_t);
  extern struct file *file_open_root(struct dentry *, struct vfsmount *,
diff --git a/ovl04-overlay-filesystem.patch b/ovl04-overlay-filesystem.patch
index 885d518..cde166b 100644
--- a/ovl04-overlay-filesystem.patch
+++ b/ovl04-overlay-filesystem.patch
@@ -95,23 +95,19 @@ Signed-off-by: Miklos Szeredi <mszeredi at suse.cz>
  create mode 100644 fs/overlayfs/readdir.c
  create mode 100644 fs/overlayfs/super.c
 
-Index: linux-3.6-rc7-master/fs/Kconfig
-===================================================================
---- linux-3.6-rc7-master.orig/fs/Kconfig	2012-09-28 13:34:44.000000000 +0200
-+++ linux-3.6-rc7-master/fs/Kconfig	2012-09-28 13:36:53.000000000 +0200
+--- a/fs/Kconfig
++++ b/fs/Kconfig
 @@ -70,6 +70,7 @@ source "fs/quota/Kconfig"
  
  source "fs/autofs4/Kconfig"
  source "fs/fuse/Kconfig"
 +source "fs/overlayfs/Kconfig"
  
- config CUSE
- 	tristate "Character device in Userspace support"
-Index: linux-3.6-rc7-master/fs/Makefile
-===================================================================
---- linux-3.6-rc7-master.orig/fs/Makefile	2012-09-28 13:34:44.000000000 +0200
-+++ linux-3.6-rc7-master/fs/Makefile	2012-09-28 13:36:53.000000000 +0200
-@@ -109,6 +109,7 @@ obj-$(CONFIG_QNX6FS_FS)		+= qnx6/
+ config GENERIC_ACL
+ 	bool
+--- a/fs/Makefile
++++ b/fs/Makefile
+@@ -110,6 +110,7 @@ obj-$(CONFIG_QNX6FS_FS)		+= qnx6/
  obj-$(CONFIG_AUTOFS4_FS)	+= autofs4/
  obj-$(CONFIG_ADFS_FS)		+= adfs/
  obj-$(CONFIG_FUSE_FS)		+= fuse/
@@ -119,19 +115,15 @@ Index: linux-3.6-rc7-master/fs/Makefile
  obj-$(CONFIG_UDF_FS)		+= udf/
  obj-$(CONFIG_SUN_OPENPROMFS)	+= openpromfs/
  obj-$(CONFIG_OMFS_FS)		+= omfs/
-Index: linux-3.6-rc7-master/fs/overlayfs/Kconfig
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/Kconfig	2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/Kconfig
 @@ -0,0 +1,4 @@
 +config OVERLAYFS_FS
 +	tristate "Overlay filesystem support"
 +	help
 +	  Add support for overlay filesystem.
-Index: linux-3.6-rc7-master/fs/overlayfs/Makefile
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/Makefile	2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/Makefile
 @@ -0,0 +1,7 @@
 +#
 +# Makefile for the overlay filesystem.
@@ -140,10 +132,8 @@ Index: linux-3.6-rc7-master/fs/overlayfs/Makefile
 +obj-$(CONFIG_OVERLAYFS_FS) += overlayfs.o
 +
 +overlayfs-objs := super.o inode.o dir.o readdir.o copy_up.o
-Index: linux-3.6-rc7-master/fs/overlayfs/copy_up.c
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/copy_up.c	2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/copy_up.c
 @@ -0,0 +1,385 @@
 +/*
 + *
@@ -409,7 +399,7 @@ Index: linux-3.6-rc7-master/fs/overlayfs/copy_up.c
 +	ovl_path_upper(parent, &parentpath);
 +	upperdir = parentpath.dentry;
 +
-+	err = vfs_getattr(parentpath.mnt, parentpath.dentry, &pstat);
++	err = vfs_getattr(&parentpath, &pstat);
 +	if (err)
 +		return err;
 +
@@ -493,7 +483,7 @@ Index: linux-3.6-rc7-master/fs/overlayfs/copy_up.c
 +		}
 +
 +		ovl_path_lower(next, &lowerpath);
-+		err = vfs_getattr(lowerpath.mnt, lowerpath.dentry, &stat);
++		err = vfs_getattr(&lowerpath, &stat);
 +		if (!err)
 +			err = ovl_copy_up_one(parent, next, &lowerpath, &stat);
 +
@@ -517,7 +507,7 @@ Index: linux-3.6-rc7-master/fs/overlayfs/copy_up.c
 +		goto out_dput_parent;
 +
 +	ovl_path_lower(dentry, &lowerpath);
-+	err = vfs_getattr(lowerpath.mnt, lowerpath.dentry, &stat);
++	err = vfs_getattr(&lowerpath, &stat);
 +	if (err)
 +		goto out_dput_parent;
 +
@@ -530,10 +520,8 @@ Index: linux-3.6-rc7-master/fs/overlayfs/copy_up.c
 +	dput(parent);
 +	return err;
 +}
-Index: linux-3.6-rc7-master/fs/overlayfs/dir.c
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/dir.c	2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/dir.c
 @@ -0,0 +1,597 @@
 +/*
 + *
@@ -784,7 +772,7 @@ Index: linux-3.6-rc7-master/fs/overlayfs/dir.c
 +	struct path realpath;
 +
 +	type = ovl_path_real(dentry, &realpath);
-+	err = vfs_getattr(realpath.mnt, realpath.dentry, stat);
++	err = vfs_getattr(&realpath, stat);
 +	if (err)
 +		return err;
 +
@@ -1132,10 +1120,8 @@ Index: linux-3.6-rc7-master/fs/overlayfs/dir.c
 +	.listxattr	= ovl_listxattr,
 +	.removexattr	= ovl_removexattr,
 +};
-Index: linux-3.6-rc7-master/fs/overlayfs/inode.c
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/inode.c	2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/inode.c
 @@ -0,0 +1,379 @@
 +/*
 + *
@@ -1181,7 +1167,7 @@ Index: linux-3.6-rc7-master/fs/overlayfs/inode.c
 +	struct path realpath;
 +
 +	ovl_path_real(dentry, &realpath);
-+	return vfs_getattr(realpath.mnt, realpath.dentry, stat);
++	return vfs_getattr(&realpath, stat);
 +}
 +
 +int ovl_permission(struct inode *inode, int mask)
@@ -1516,10 +1502,8 @@ Index: linux-3.6-rc7-master/fs/overlayfs/inode.c
 +	return inode;
 +
 +}
-Index: linux-3.6-rc7-master/fs/overlayfs/overlayfs.h
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/overlayfs.h	2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/overlayfs.h
 @@ -0,0 +1,64 @@
 +/*
 + *
@@ -1585,10 +1569,8 @@ Index: linux-3.6-rc7-master/fs/overlayfs/overlayfs.h
 +/* copy_up.c */
 +int ovl_copy_up(struct dentry *dentry);
 +int ovl_copy_up_truncate(struct dentry *dentry, loff_t size);
-Index: linux-3.6-rc7-master/fs/overlayfs/readdir.c
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/readdir.c	2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/readdir.c
 @@ -0,0 +1,566 @@
 +/*
 + *
@@ -2156,10 +2138,8 @@ Index: linux-3.6-rc7-master/fs/overlayfs/readdir.c
 +
 +	return err;
 +}
-Index: linux-3.6-rc7-master/fs/overlayfs/super.c
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/super.c	2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/super.c
 @@ -0,0 +1,611 @@
 +/*
 + *
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/514e5daeee3608038b626c0e6ce96249c298c15e




More information about the pld-cvs-commit mailing list