Open main menu

OpenVZ Virtuozzo Containers Wiki β

Changes

Download/kernel/2.6.16/026test009.1/changes

17,960 bytes added, 10:26, 21 March 2008
wrap CONFIG* in <code>
== Changes ==
* VPS checkpointing/restore (live migration)
* UBC fixes
* Mainstream updates (2.6.16.8)
* Netfilter fixes
* Security fixes
* Compilation tunes
* Quota improvements
* Debugging facilities

=== Config changes ===
Changed:
* <code>CONFIG_MICROCODE=m</code> (was y)
* <code>CONFIG_FUSION_SPI=m</code> (was y)
* <code>CONFIG_FUSION_FC=m</code> (was y)
* <code>CONFIG_FUSION_SAS=m</code> (was y)
* <code>CONFIG_FUSION_CTL=m</code> (was y)
* <code>CONFIG_FUSION_LAN=m</code> (was y)
Added:
* +<code>CONFIG_VZ_CHECKPOINT=m</code>
* +<code>CONFIG_DCDBAS=m</code>
* +<code>CONFIG_MD_RAID10=y</code>
* +<code>CONFIG_MD_MULTIPATH=y</code>
* +<code>CONFIG_DM_CRYPT=y</code>
* +<code>CONFIG_DM_MIRROR=y</code>
* +<code>CONFIG_DM_ZERO=y</code>
* +<code>CONFIG_DM_MULTIPATH=y</code>
* +<code>CONFIG_DM_MULTIPATH_EMC=y</code>
* +<code>CONFIG_SKY2=m</code>
* +<code>CONFIG_OPROFILE=m</code>

=== Compatibility notes ===
* fusion driver is module now (was built-in)
* microcode is module now (was built-in)

{{Kernel git log|2.6.16|026test009.1}}
<includeonly>[[{{PAGENAME}}/changes#Patches|{{Long changelog message}}]]</includeonly><noinclude>
=== Patches ===

==== diff-cpt-aio ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT KERNEL] Comb AIO for CPT

</div>
==== diff-cpt-copy-page-range ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT KERNEL] add __copy_page_range to clone arbitrary pages
</div>

==== diff-cpt-core-misc ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT KERNEL] Misc core modifications required for CPT

# pn_state tracking
# disable_net
# TIF_FREEZE
# jiffies_fixup<
# remove bogus try_to_freeze() from sigtimedwait()
# VE_LOCK
# Export some symbols from VZ core

</div>
==== diff-cpt-cwd-error ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT] error was not reported when CWD cannot be saved

NOTE. Until recently I honestly did not know that paths with
length &gt; PATH_MAX are not prohibited. At the moment checkpointing
fails, when some file/cwd/... has such a path. We could save it
correctly, it is not a problem, but I have no code for restore of
such paths, it is going to be real tricky.
</div>

==== diff-cpt-direct-aio ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT] AIO for O_DIRECT

It was supposed to work, but happened to be a little buggy.
We waited for AIO completion _after_ dumping VM, so that the ring
went out of sync.

Also, we cannot read/write on O_DIRECT files with kernel buffer
Kernel tries get_user_pages() and fails.

</div>
==== diff-cpt-emt64-hrtimer ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[X86_64] Upgrade compat.c to use hrtimer

Must be pushed to mainstream
</div>

==== diff-cpt-emt64-segments ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT X86_64] Renumber segment register on x86_64 to match i386

It is necessary to allow migration from ia32/x86_64 to/from i386
</div>

==== diff-cpt-emt64-sigmask ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[X86_64] TIF_RESTORE_SIGMASK for x86_64<br/>

We need this right now. It is going to be replaced with a version suggested
by x86_64 maintainers
</div>

==== diff-cpt-emt64-strace ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[X86_64] An ugly fixup for previous patch to cure x86_64 strace

It is crazy, strace distinguishes ia32 emulated programs by numeric
value of segment reg. :-)
</div>

==== diff-cpt-eventpoll ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT KERNEL] Comb eventpoll for CPT

</div>
==== diff-cpt-exports ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT KERNEL] Export miscellaneous symbols required for CPT
</div>

==== diff-cpt-ipc ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT KERNEL] Comb SYSV IPC for CPT
</div>

==== diff-cpt-ipc-addid ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT] check for succesful reallocation in ipc_addid

Found occasionally while searching for another bug in SYSV IPC.
</div>

==== diff-cpt-ip-conntrack ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT KERNEL] Comb IP conntrack for CPT
</div>

==== diff-cpt-kconfig-fix ====
<div class="change">
Patch from Pavel Emelianov &lt;xemul@openvz.org&gt;:

Fix kernel/power/Kconfig to remove SOFTWARE_SUSPEND dependency on
SMP. Needed by CPT.
</div>

==== diff-cpt-makefile-kconfig ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[VZ] Hook cpt/ to build system
</div>

==== diff-cpt-modules ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT] CPT modules
</div>

==== diff-cpt-networking ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT KERNEL] Comb networking for CPT
</div>

==== diff-cpt-ngroups ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT] &gt; 32 supplementary groups are not checkpointed<br/>
Bug is not fixed, too hairy on pre-release time. We just fail.
Comment is added.
</div>

==== diff-cpt-restore-tty-attrs ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT] tty attributes were restored incorrectly

setattr mask was uninitialized and i_size on tty inodes was
restored at a random value. At the first sight it is difficult
to notice, i_size on tty inodes is never used. But glibc uses
stat64 and translates the result. When i_size is weird enough,
stat() returns EOVERFLOW. In this case ps skips correct path and
find the next appropriate variant, which is /dev/pts/N.

BTW this opens another (minor) problem. If a process inside VE
has controlling terminal, but it is not open by this process
(f.e. do sleep 3600 &lt; /dev/null &gt;&amp; /dev/null &amp;), ps will show
wrong pts path too.
</div>

==== diff-cpt-swap-err ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[KERNEL] Do not map random pages while swapoff errors

If read failed we cannot map not-uptodate page to
user space. It is an obvious security issue, plus it is not sane.
Actually, we are in serious troubles, we do not even know what process
to kill. So, the only variant remains: to stop swapoff() and allow someone
to kill processes to zap invalid pages.
</div>

==== diff-cpt-task-size ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT X86_64] Fix task size for ia32/x86_64.<br/>

Otherwise we cannot migrate from ia32/x86_64 to i386

</div>
==== diff-cpt-vsyscall-disable ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT KERNEL] Add sysctls to disable exporting vsyscall. Disable it by
default.<br/>

Note, the page still exists and mapped. We just do not tell to dynamic
loader about this.

</div>
==== diff-cpt-x8664-mm ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[CPT] forgotten chunk in cpt_mm.c<br/>

Ugly, but necessary.

</div>
==== diff-cpt-zombie-count ====
<div class="change">
Patch from Pavel Emelianov &lt;xemul@openvz.org&gt;:<br/>
Increment zombie count on restoring if creating a zombie process.

</div>
==== diff-getppid-fix-20060307 ====
<div class="change">
Patch from Pavel Emelianov &lt;xemul@openvz.org&gt;:<br/>
Move old code in sys_getppid back when debugging is off.
Taking tasklist_lock each time decreases performance and
nothing more in non-debugging case.

Noticed by Kirill Korotaev &lt;dev@openvz.org&gt;

</div>
==== diff-ipc-memcpy-bug-20060413 ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
SYSV IPC writes beyond allocated memory

</div>
==== diff-list-firt-entry ====
<div class="change">
Patch from Pavel Emelianov &lt;xemul@openvz.org&gt;:<br/>
Add list_firt_entry() macro

</div>
==== diff-merge-2.6.16.5-20060413 ====
<div class="change">
Patch from OpenVZ team &lt;devel@openvz.org&gt;:<br/>
Merge /linux/kernel/git/stable/linux-2.6.16.y

</div>
==== diff-ms-ia64-unaligned-ratelimit ====
<div class="change">
Patch from Pavel Emelianov &lt;xemul@openvz.org&gt;:<br/>
Rate limit unaligned access warnings from kernel

</div>
==== diff-ms-ia64-unalign-skrunfilter ====
<div class="change">
Patch from Dmitry Mishin &lt;dim@openvz.org&gt;:<br/>
Fixed unaligned access in sk_run_filter.
Data offset comes from userspace, so use of get_unaligned() is the best way.

</div>
==== diff-oops-decode ====
<div class="change">
Patch from Kirill Korotaev &lt;dev@openvz.org&gt;:<br/>
Added sysctl variable to disable automatic call traces decoding.
Required for machines not connected to any kind of console.

</div>
==== diff-security-ipid-20060324 ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
[TCP]: Do not use inet-&gt;id of global tcp_socket when sending RST.<br/>

The problem is in ip_push_pending_frames(), which uses:<br/>

<pre>
if (!df) {
__ip_select_ident(iph, &amp;rt-&gt;u.dst, 0);
} else {
iph-&gt;id = htons(inet-&gt;id++);
}
</pre>
instead of ip_select_ident().<br/>

Right now I think the code is a nonsense. Most likely, I copied it from
old ip_build_xmit(), where it was really special, we had to decide
whether to generate unique ID when generating the first (well, the last)
fragment.<br/>

In ip_push_pending_frames() it does not make sense, it should use plain
ip_select_ident() instead.<br/>

<br/>[http://www.securityfocus.com/archive/1/427622/100/0/threaded http://www.securityfocus.com/archive/1/427622/100/0/threaded]

<br/>Signed-off-by: Alexey Kuznetsov &lt;kuznet@ms2.inr.ac.ru&gt;<br/>
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;

</div>
==== diff-smp-nmi-show-regs ====
<div class="change">
Patch from OpenVZ team &lt;devel@openvz.org&gt;:<br/>
This patch adds dumping of calltraces on _all_ CPUs on AltSysRq-P and NMI
LOCKUP. It does this via sending NMI IPI interrupts to the cpus.
Taken back from -mm tree.<br/>

Signed-off-by: Kirill Korotaev &lt;dev@sw.ru&gt;<br/>
Signed-off-by: Pavel Emelianov &lt;xemul@sw.ru&gt;<br/>
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;

</div>
==== diff-smp-nmi-show-regs-emt64 ====
<div class="change">
Patch from Pavel Emelianov &lt;xemul@openvz.org&gt;:<br/>
Print calltraces on all CPUs on x86_64 arch.
This patch supplements the one made for i386.

</div>
==== diff-smp-nmi-show-regs-fixes ====
<div class="change">
Patch from OpenVZ team &lt;devel@openvz.org&gt;:<br/>
Fix of previous patch for voyager.<br/>

Cc: Adrian Bunk &lt;bunk@stusta.de&gt;<br/>
Signed-off-by: Kirill Korotaev &lt;dev@sw.ru&gt;<br/>
Signed-off-by: Pavel Emelianov &lt;xemul@sw.ru&gt;<br/>
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;

</div>
==== diff-sw-lic-20060404 ====
<div class="change">
Patch from OpenVZ team &lt;devel@openvz.org&gt;:<br/>
Licensing

</div>
==== diff-ubc-copy-page-range-fix-20060406 ====
<div class="change">
Patch from Pavel Emelianov &lt;xemul@openvz.org&gt;:<br/>
Some fixes of page beancounters accounting.
<ul>
* moved pb_alloc_all closer to pb_alloc and co;
<li>removed pb_add_list_ref - now pb_add_ref acts similar
in both cases;</li>
<li>changed logic on copying pages - if a page isn't
accounted in pbc for parent it will not be in child.
pb_dup_ref was introduced for it.</li>
</ul>

</div>
==== diff-ubc-mlock-deadlock-20060412 ====
<div class="change">
Patch from Alexey Kuznetsov &lt;alexey@openvz.org&gt;:<br/>
Mlock was ported incorrectly<br/>
Two bugs actually:<br/>
1. In 2.6 mlock_fixup _MUST_ return correct prev VMA, otherwise
mlockall deadlocks.<br/>
2. Inaccurate port: in error path memory is not uncharged.

</div>
==== diff-ubc-page-uncharge-race-20060414 ====
<div class="change">
Patch from Pavel Emelianov &lt;xemul@openvz.org&gt;:<br/>
Fix of race between ub_page_charge/_uncharge.<br/>

Pages were first put into global list of free pages and ther - uncharged.
During this gap page_alloc could charge not uncharged yet page thus
causing a BUG().<br/>

Moved ub_page_uncharge above freeing and out of local_irq_save to reduce
time spent with irqs off.

<br/>[http://forum.openvz.org/index.php?t=msg&amp;th=465&amp;start=0 http://forum.openvz.org/index.php?t=msg&amp;th=465&amp;start=0]

</div>
==== diff-ubc-pbfree-oops-20060417 ====
<div class="change">
Patch from Pavel Emelianov &lt;xemul@openvz.org&gt;:<br/>
Wrong error path in copy_pte_range.<br/>

pb_free_list must be called since pbc may be<br/>
1. set to PB_COPE_SAME, but pb_free is unaware of it (OOPs);<br/>
2. allocated with pb_alloc_list and pb_free will leak all but one.<br/>

pb_alloc_list may be called more than once (goto again;) so
pb_free_list must be called even on pb_alloc_list failure to
cleanup first call allocations.

</div>
==== diff-ubc-zero-page-fix-20060417 ====
<div class="change">
Patch from Pavel Emelianov &lt;xemul@openvz.org&gt;:<br/>
Don't pb_add_ref to ZERO_PAGE in do_anonymous_page
since ZERO_PAGE must not have refs at all.
Also remove __pb_alloc as noone need it anymore.

</div>
==== diff-ve-exec-set-links-20060403 ====
<div class="change">
Patch from Pavel Emelianov &lt;xemul@openvz.org&gt;:<br/>
Add task to VPS task list on exec.<br/>
If a non-leader thread calls exec it becomes a thread group leader and thus
SET_VE_LINKS/REMOVE_VE_LINKS will manipulate list on this task.
Meanwhile such task after exec will not be in list because it was not added
there on fork. This may lead to creation of invisible by ps task, unstopable
VPS, since do_initproc_exit will not find this task to kill it, and even ve task
list corruption.

{{Bug|129}}.

</div>
==== diff-ve-inkernel-compilation ====
<div class="change">
Patch from OpenVZ team &lt;devel@openvz.org&gt;:<br/>
This patch fixes comilation with CONFIG_MODULES=n

</div>
==== diff-ve-ipc-freeids-20060405 ====
<div class="change">
Patch from Pavel Emelianov &lt;xemul@openvz.org&gt;:<br/>
Fix of VPS IPC ids cleanup.
Do not try to free ipc_ids-&gt;entries in case their allocation
failed before, i.e. they are set to &amp;ids-&gt;nullentry.

</div>
==== diff-ve-net-netfilter-xt-lock-20060414 ====
<div class="change">
Patch from Dmitry Mishin &lt;dim@openvz.org&gt;:<br/>
Fixed lockup due to uninitialized lock

</div>
==== diff-ve-net-netfilter-xt-tcpudp-20060412 ====
<div class="change">
Patch from Dmitry Mishin &lt;dim@openvz.org&gt;:<br/>
Virtualized xt_tcpudp module, managed by VE_IP_TABLES mask.
<br/>[http://forum.openvz.org/index.php?t=tree&amp;th=466&amp;start=0 http://forum.openvz.org/index.php?t=tree&amp;th=466&amp;start=0]

</div>
==== diff-ve-net-nf-event-fix-20060403 ====
<div class="change">
Patch from Dmitry Mishin &lt;dim@openvz.org&gt;:<br/>
Fixed endless loop on VPS stop with CONFIG_IP_NF_CONNTRACK_EVENTS enabled.
Loop was due to last put under wrong context.

</div>
==== diff-ve-net-nf-getorigdst-20060405 ====
<div class="change">
Patch from Dmitry Mishin &lt;dim@openvz.org&gt;:<br/>
Fixed oops introduced by previous patch

</div>
==== diff-ve-net-nf-icmp-errpath-20060406 ====
<div class="change">
Patch from Dmitry Mishin &lt;dim@openvz.org&gt;:<br/>
Fixed init_iptables error path

</div>
==== diff-ve-net-nf-ipt-proc-20060405 ====
<div class="change">
Patch from Dmitry Mishin &lt;dim@openvz.org&gt;:<br/>
Iptables related entries are visible under /proc/net/ now.

</div>
==== diff-ve-setxattr-20060403 ====
<div class="change">
Patch from Vasily Tarasov &lt;vtaras@openvz.org&gt;:<br/>
Setxattr and getxattr have to check CAP_VE_ADMIN
in order to return proper errors inside VE, similar to host.

</div>
==== diff-ve-sysfs-root-20060405 ====
<div class="change">
Patch from Vasily Tarasov &lt;vtaras@openvz.org&gt;:<br/>
Fix of sysfs tree visibility in VPS.
sysfs_root variable must be virtualized, so that VPS see
only class subsystem and class net.

</div>
==== diff-ve-userhdrs-types ====
<div class="change">
Patch from Kirill Korotaev &lt;dev@openvz.org&gt;:<br/>
This patch fixes usage of kernel type cycles_t in user interface header.

Related to {{Bug|123}}.
</div>
==== diff-ve-userhdrs-types2 ====
<div class="change">
Patch from Kirill Korotaev &lt;dev@openvz.org&gt;:<br/>
Fix of user space headers for vzctl

</div>
==== diff-ve-vzwdog-modparm-20060405 ====
<div class="change">
Patch from Dmitry Mishin &lt;dim@openvz.org&gt;:<br/>
Remove obsoleted MODULE_PARM call, use module_parm instead
</div>

==== diff-vzdq-mnt-20060410 ====
<div class="change">
Patch from Vasily Tarasov &lt;vtaras@openvz.org&gt;:<br/>
All root dentries are unhashed. We have to check for it in vzquota_check_dtree().

[http://forum.openvz.org/index.php?t=tree&amp;goto=2552&amp;#msg_2552 http://forum.openvz.org/index.php?t=tree&amp;goto=2552&amp;#msg_2552]
{{Bug|133}}.

</div>
==== diff-vzdq-off-sync-20060407 ====
<div class="change">
Patch from Kirill Korotaev &lt;dev@openvz.org&gt;:<br/>
[VZDQ] Speed up vzquota-off process.<br/>

vzquota off syncs inodes, so that inodes are synced one by one and
waited for. This is slow. This patch changes the logic: all inodes
should be kicked for syncing first, and then only waited for.
This makes VPS creation to be faster.
</div>

==== diff-merge-2.6.16.8-20060419 ====
<div class="change">
Merged linux-2.6.16.8 fixes
</div>

==== diff-suspend-traced ====
<div class="change">
Roll back merged fix.
Original fix's sha is 6b2467e45179a336f1e5b70d2b2ae1fe89a00133
</div>

==== diff-ubc-tsoaccount-20060419 ====
<div class="change">
Patch from Vasily Tarasov &lt;vtaras@openvz.org&gt;<br/>
Add tcpsndbuff charging in tso_fragment()

{{Bug|135}}.
</div>

</noinclude>