Linux Container Development
 help / color / mirror / Atom feed
  • [parent not found: <20090121131739.GB4997@ioremap.net>]
  • [parent not found: <20090122122843.7e94878e.kamezawa.hiroyu@jp.fujitsu.com>]
  • [parent not found: <20090126195431.GC504@balbir.in.ibm.com>]
  • * [RFC] [PATCH] Cgroup based OOM killer controller
    @ 2009-01-21 11:08 Nikanth Karthikesan
      0 siblings, 0 replies; 63+ messages in thread
    From: Nikanth Karthikesan @ 2009-01-21 11:08 UTC (permalink / raw)
      To: linux-kernel-u79uwXL29TY76Z2rM5mHXA
      Cc: containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
    	Arve Hjønnevåg, Evgeniy Polyakov, Andrew Morton,
    	Chris Snook, Linus Torvalds, Paul Menage, Alan Cox
    
    As Alan Cox suggested/wondered in this thread, 
    http://lkml.org/lkml/2009/1/12/235 , this is a container group based approach 
    to override the oom killer selection without losing all the benefits of the 
    current oom killer heuristics and oom_adj interface.
    
    It adds a tunable oom.victim to the oom cgroup. The oom killer will kill the 
    process using the usual badness value but only within the cgroup with the 
    maximum value for oom.victim before killing any process from a cgroup with a 
    lesser oom.victim number. Oom killing could be disabled by setting 
    oom.victim=0.
    
    Signed-off-by: Nikanth Karthikesan <knikanth-l3A5Bk7waGM@public.gmane.org>
    
    ---
    
    diff --git a/Documentation/cgroups/oom.txt b/Documentation/cgroups/oom.txt
    new file mode 100644
    index 0000000..9102830
    --- /dev/null
    +++ b/Documentation/cgroups/oom.txt
    @@ -0,0 +1,29 @@
    +OOM Killer controller
    +--- ------ ----------
    +
    +The OOM killer kills the process based on a set of heuristics such that only
    +minimum amount of work done will be lost, a large amount of memory would be
    +recovered and minimum no of processes are killed.
    +
    +The user can adjust the score used to select the processes to be killed using
    +/proc/<pid>/oom_adj. Giving it a high score will increase the likelihood of 
    +this process being killed by the oom-killer.  Valid values are in the range 
    +-16 to +15, plus the special value -17, which disables oom-killing altogether
    +for that process.
    +
    +But it is very difficult to suggest an order among tasks to be killed during
    +Out Of Memory situation. The OOM Killer controller aids in doing that.
    +
    +USAGE
    +-----
    +
    +Mount the oom controller by passing 'oom' when mounting cgroups. Echo
    +a value in oom.victim file to change the order. The oom killer would kill
    +all the processes in a cgroup with a higher oom.victim value before killing a
    +process in a cgroup with lower oom.victim value. Among those tasks with same
    +oom.victim value, the usual badness heuristics would be applied. The 
    +/proc/<pid>/oom_adj still helps adjusting the oom killer score. Also having
    +oom.victim = 0 would disable oom killing for the tasks in that cgroup.
    +
    +Note: If this is used without proper consideration, innocent processes may
    +get killed unnecesarily.
    diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h
    index 9c8d31b..6944f99 100644
    --- a/include/linux/cgroup_subsys.h
    +++ b/include/linux/cgroup_subsys.h
    @@ -59,4 +59,8 @@ SUBSYS(freezer)
     SUBSYS(net_cls)
     #endif
     
    +#ifdef CONFIG_CGROUP_OOM
    +SUBSYS(oom)
    +#endif
    +
     /* */
    diff --git a/include/linux/oomcontrol.h b/include/linux/oomcontrol.h
    new file mode 100644
    index 0000000..18146ab
    --- /dev/null
    +++ b/include/linux/oomcontrol.h
    @@ -0,0 +1,14 @@
    +#ifndef _LINUX_OOMCONTROL_H
    +#define _LINUX_OOMCONTROL_H
    +
    +#ifdef CONFIG_CGROUP_OOM
    +struct oom_cgroup { 
    +	struct cgroup_subsys_state css;
    +	/*
    +	 * the order to be victimized for this group
    +	 */  
    +	u64 victim;
    +};
    +
    +#endif
    +#endif
    diff --git a/init/Kconfig b/init/Kconfig
    index 2af8382..99ed0de 100644
    --- a/init/Kconfig
    +++ b/init/Kconfig
    @@ -354,6 +354,15 @@ config CGROUP_DEBUG
     
     	  Say N if unsure.
     
    +config CGROUP_OOM
    +	bool "Oom cgroup subsystem"
    +	depends on CGROUPS
    +	help
    +	  This provides a cgroup subsystem which aids controlling
    +	  the order in which tasks whould be killed during
    +	  out of memory situations.
    +	
    +
     config CGROUP_NS
     	bool "Namespace cgroup subsystem"
     	depends on CGROUPS
    diff --git a/mm/Makefile b/mm/Makefile
    index 72255be..a5d7222 100644
    --- a/mm/Makefile
    +++ b/mm/Makefile
    @@ -33,3 +33,4 @@ obj-$(CONFIG_MIGRATION) += migrate.o
     obj-$(CONFIG_SMP) += allocpercpu.o
     obj-$(CONFIG_QUICKLIST) += quicklist.o
     obj-$(CONFIG_CGROUP_MEM_RES_CTLR) += memcontrol.o page_cgroup.o
    +obj-$(CONFIG_CGROUP_OOM) += oomcontrol.o 
    diff --git a/mm/oom_kill.c b/mm/oom_kill.c
    index 40ba050..f697d50 100644
    --- a/mm/oom_kill.c
    +++ b/mm/oom_kill.c
    @@ -26,6 +26,7 @@
     #include <linux/module.h>
     #include <linux/notifier.h>
     #include <linux/memcontrol.h>
    +#include <linux/oomcontrol.h>
     #include <linux/security.h>
     
     int sysctl_panic_on_oom;
    @@ -205,6 +206,9 @@ static struct task_struct *select_bad_process(unsigned 
    long *ppoints,
     	struct task_struct *g, *p;
     	struct task_struct *chosen = NULL;
     	struct timespec uptime;
    +#ifdef CONFIG_CGROUP_OOM
    +	u64 chosenvictim = 1, taskvictim;
    +#endif
     	*ppoints = 0;
     
     	do_posix_clock_monotonic_gettime(&uptime);
    @@ -257,10 +261,26 @@ static struct task_struct *select_bad_process(unsigned 
    long *ppoints,
     			continue;
     
     		points = badness(p, uptime.tv_sec);
    +#ifdef CONFIG_CGROUP_OOM
    +		taskvictim = (container_of(p->cgroups->subsys[oom_subsys_id],
    +						struct oom_cgroup, css))->victim;
    +
    +		if (taskvictim > chosenvictim ||
    +			(taskvictim == chosenvictim && points > *ppoints) ||
    +			!chosen) {
    +
    +			chosen = p;
    +			*ppoints = points;
    +			chosenvictim = taskvictim;
    +
    +		}
    +		
    +#else
     		if (points > *ppoints || !chosen) {
     			chosen = p;
     			*ppoints = points;
     		}
    +#endif
     	} while_each_thread(g, p);
     
     	return chosen;
    diff --git a/mm/oomcontrol.c b/mm/oomcontrol.c
    new file mode 100644
    index 0000000..2bfa325
    --- /dev/null
    +++ b/mm/oomcontrol.c
    @@ -0,0 +1,95 @@
    +/*
    + * kernel/cgroup_oom.c - oom handler cgroup.
    + */
    +
    +#include <linux/cgroup.h>
    +#include <linux/fs.h>
    +#include <linux/slab.h>
    +#include <linux/oomcontrol.h>
    +
    +/*
    + * Helper to retrieve oom controller data from cgroup
    + */
    +static struct oom_cgroup *oom_css_from_cgroup(struct cgroup *cgrp)
    +{
    +        return container_of(cgroup_subsys_state(cgrp,
    +                                oom_subsys_id), struct oom_cgroup,
    +                                css);
    +}
    +
    +
    +static struct cgroup_subsys_state *oom_create(struct cgroup_subsys *ss,
    +						   struct cgroup *cont)
    +{
    +	struct oom_cgroup *oom_css = kzalloc(sizeof(*oom_css), GFP_KERNEL);
    +	struct oom_cgroup *parent;
    +
    +	if (!oom_css)
    +		return ERR_PTR(-ENOMEM);
    +
    +	/*
    +	 * if root last/only group to be victimized
    +	 * else inherit parents value
    +	 */
    +	if (cont->parent == NULL)
    +		oom_css->victim = 1;
    +	else {
    +		parent = oom_css_from_cgroup(cont->parent);
    +		oom_css->victim = parent->victim;
    +	}
    +
    +	return &oom_css->css;
    +}
    +
    +static void oom_destroy(struct cgroup_subsys *ss, struct cgroup *cont)
    +{
    +	kfree(cont->subsys[oom_subsys_id]);
    +}
    +
    +static int oom_victim_write(struct cgroup *cgrp, struct cftype *cft,
    +                                       u64 val)
    +{
    +
    +        cgroup_lock();
    +
    +	(oom_css_from_cgroup(cgrp))->victim = val;
    +
    +        cgroup_unlock();
    +
    +        return 0;
    +}
    +
    +static u64 oom_victim_read(struct cgroup *cgrp, struct cftype *cft)
    +{
    +        u64 victim = (oom_css_from_cgroup(cgrp))->victim;
    +
    +        return victim;
    +}
    +
    +
    +static struct cftype oom_cgroup_files[] = {
    +	{
    +		.name = "victim",
    +		.read_u64 = oom_victim_read,
    +		.write_u64 = oom_victim_write,
    +	},
    +};
    +
    +static int oom_populate(struct cgroup_subsys *ss,
    +                                struct cgroup *cont)
    +{
    +        int ret;
    +
    +        ret = cgroup_add_files(cont, ss, oom_cgroup_files,
    +                                ARRAY_SIZE(oom_cgroup_files));
    +
    +        return ret;
    +}
    +
    +struct cgroup_subsys oom_subsys = {
    +	.name = "oom",
    +	.subsys_id = oom_subsys_id,
    +	.create = oom_create,
    +	.destroy = oom_destroy,
    +	.populate = oom_populate,
    +};
    
    ^ permalink raw reply related	[flat|nested] 63+ messages in thread

    end of thread, other threads:[~2009-01-29 15:48 UTC | newest]
    
    Thread overview: 63+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <200901211638.23101.knikanth@suse.de>
         [not found] ` <200901211638.23101.knikanth-l3A5Bk7waGM@public.gmane.org>
    2009-01-21 13:17   ` [RFC] [PATCH] Cgroup based OOM killer controller Evgeniy Polyakov
    2009-01-22  3:28   ` KAMEZAWA Hiroyuki
    2009-01-26 19:54   ` Balbir Singh
         [not found] ` <20090121131739.GB4997@ioremap.net>
         [not found]   ` <20090121131739.GB4997-i6C2adt8DTjR7s880joybQ@public.gmane.org>
    2009-01-21 15:24     ` Nikanth Karthikesan
         [not found]   ` <200901212054.34929.knikanth@suse.de>
         [not found]     ` <200901212054.34929.knikanth-l3A5Bk7waGM@public.gmane.org>
    2009-01-21 20:49       ` David Rientjes
         [not found]         ` <alpine.DEB.2.00.0901211241040.21080-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-22  2:53           ` KAMEZAWA Hiroyuki
    2009-01-22  5:12           ` Nikanth Karthikesan
         [not found]         ` <20090122115324.b954c6a1.kamezawa.hiroyu@jp.fujitsu.com>
         [not found]           ` <20090122115324.b954c6a1.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
    2009-01-22  5:12             ` Nikanth Karthikesan
         [not found]         ` <200901221042.30957.knikanth@suse.de>
         [not found]           ` <200901221042.30957.knikanth-l3A5Bk7waGM@public.gmane.org>
    2009-01-22  8:43             ` David Rientjes
         [not found]           ` <alpine.DEB.2.00.0901220036440.28850@chino.kir.corp.google.com>
         [not found]             ` <alpine.DEB.2.00.0901220036440.28850-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-22  9:23               ` Nikanth Karthikesan
    2009-01-22  9:50               ` Evgeniy Polyakov
         [not found]             ` <200901221453.14860.knikanth@suse.de>
         [not found]               ` <200901221453.14860.knikanth-l3A5Bk7waGM@public.gmane.org>
    2009-01-22  9:39                 ` David Rientjes
         [not found]               ` <alpine.DEB.2.00.0901220134200.32502@chino.kir.corp.google.com>
         [not found]                 ` <alpine.DEB.2.00.0901220134200.32502-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-22 10:10                   ` Nikanth Karthikesan
         [not found]                 ` <200901221540.08108.knikanth@suse.de>
         [not found]                   ` <200901221540.08108.knikanth-l3A5Bk7waGM@public.gmane.org>
    2009-01-22 10:18                     ` David Rientjes
         [not found]             ` <20090122095026.GA10579@ioremap.net>
         [not found]               ` <20090122095026.GA10579-i6C2adt8DTjR7s880joybQ@public.gmane.org>
    2009-01-22 10:00                 ` David Rientjes
         [not found]                   ` <alpine.DEB.2.00.0901220156310.1738-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-22 10:14                     ` Evgeniy Polyakov
         [not found]                   ` <20090122101424.GA12317@ioremap.net>
         [not found]                     ` <20090122101424.GA12317-i6C2adt8DTjR7s880joybQ@public.gmane.org>
    2009-01-22 10:27                       ` David Rientjes
         [not found]                         ` <20090122132133.GA17524@ioremap.net>
         [not found]                           ` <20090122132133.GA17524-i6C2adt8DTjR7s880joybQ@public.gmane.org>
    2009-01-22 20:28                             ` David Rientjes
    2009-01-27 23:55                             ` Paul Menage
         [not found]                           ` <alpine.DEB.2.00.0901221216330.2085@chino.kir.corp.google.com>
         [not found]                             ` <alpine.DEB.2.00.0901221216330.2085-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-22 21:06                               ` Evgeniy Polyakov
         [not found]                             ` <20090122210613.GA10158@ioremap.net>
         [not found]                               ` <20090122210613.GA10158-i6C2adt8DTjR7s880joybQ@public.gmane.org>
    2009-01-22 21:35                                 ` David Rientjes
         [not found]                                   ` <alpine.DEB.2.00.0901221314010.6145-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-22 22:04                                     ` Evgeniy Polyakov
         [not found]                                   ` <20090122220446.GA1651@ioremap.net>
         [not found]                                     ` <20090122220446.GA1651-i6C2adt8DTjR7s880joybQ@public.gmane.org>
    2009-01-22 22:28                                       ` David Rientjes
         [not found]                                     ` <alpine.DEB.2.00.0901221415050.10427@chino.kir.corp.google.com>
         [not found]                                       ` <alpine.DEB.2.00.0901221415050.10427-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-22 22:53                                         ` Evgeniy Polyakov
         [not found]                                       ` <20090122225304.GA3551@ioremap.net>
         [not found]                                         ` <20090122225304.GA3551-i6C2adt8DTjR7s880joybQ@public.gmane.org>
    2009-01-22 23:25                                           ` Evgeniy Polyakov
         [not found]                         ` <alpine.DEB.2.00.0901220218120.2851-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-22 13:21                           ` Evgeniy Polyakov
    2009-01-23  9:45                           ` Nikanth Karthikesan
         [not found]                         ` <200901231515.37442.knikanth@suse.de>
         [not found]                           ` <200901231515.37442.knikanth-l3A5Bk7waGM@public.gmane.org>
    2009-01-23 10:33                             ` David Rientjes
         [not found]                               ` <alpine.DEB.2.00.0901230223500.15719-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-23 14:56                                 ` Nikanth Karthikesan
         [not found]                               ` <200901232026.16778.knikanth@suse.de>
         [not found]                                 ` <alpine.DEB.2.00.0901231230370.14231@chino.kir.corp.google.com>
         [not found]                                   ` <alpine.DEB.2.00.0901231230370.14231-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-27 10:20                                     ` Nikanth Karthikesan
         [not found]                                   ` <200901271550.16902.knikanth@suse.de>
         [not found]                                     ` <200901271550.16902.knikanth-l3A5Bk7waGM@public.gmane.org>
    2009-01-27 10:53                                       ` David Rientjes
         [not found]                                         ` <alpine.DEB.2.00.0901270244380.23757-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-27 11:08                                           ` Nikanth Karthikesan
         [not found]                                         ` <200901271638.21720.knikanth@suse.de>
         [not found]                                           ` <200901271638.21720.knikanth-l3A5Bk7waGM@public.gmane.org>
    2009-01-27 11:21                                             ` David Rientjes
         [not found]                                               ` <alpine.DEB.2.00.0901270316040.25608-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-27 11:37                                                 ` Nikanth Karthikesan
         [not found]                                               ` <200901271707.48770.knikanth@suse.de>
         [not found]                                                 ` <200901271707.48770.knikanth-l3A5Bk7waGM@public.gmane.org>
    2009-01-27 20:29                                                   ` David Rientjes
         [not found]                                 ` <200901232026.16778.knikanth-l3A5Bk7waGM@public.gmane.org>
    2009-01-23 20:44                                   ` David Rientjes
    2009-01-28  1:00                                   ` Paul Menage
         [not found]                                 ` <6599ad830901271700u43e472dk742992334e456a13@mail.gmail.com>
         [not found]                                   ` <6599ad830901271700u43e472dk742992334e456a13-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
    2009-01-29 15:48                                     ` Nikanth Karthikesan
         [not found] ` <20090122122843.7e94878e.kamezawa.hiroyu@jp.fujitsu.com>
         [not found]   ` <20090122122843.7e94878e.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
    2009-01-22  5:13     ` Nikanth Karthikesan
         [not found]   ` <200901221043.13684.knikanth@suse.de>
         [not found]     ` <200901221043.13684.knikanth-l3A5Bk7waGM@public.gmane.org>
    2009-01-22  5:27       ` KAMEZAWA Hiroyuki
    2009-01-22  5:39       ` Arve Hjønnevåg
         [not found]     ` <20090122142721.34068fdf.kamezawa.hiroyu@jp.fujitsu.com>
         [not found]       ` <20090122142721.34068fdf.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
    2009-01-22  6:11         ` Nikanth Karthikesan
         [not found]     ` <d6200be20901212139u3683c829x4db1840a28986a6f@mail.gmail.com>
         [not found]       ` <d6200be20901212139u3683c829x4db1840a28986a6f-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
    2009-01-22  6:12         ` Nikanth Karthikesan
         [not found]       ` <200901221142.00803.knikanth@suse.de>
         [not found]         ` <200901221142.00803.knikanth-l3A5Bk7waGM@public.gmane.org>
    2009-01-22  6:29           ` Arve Hjønnevåg
         [not found]         ` <d6200be20901212229y47353d3ft72fbfed6ffaba999@mail.gmail.com>
         [not found]           ` <d6200be20901212229y47353d3ft72fbfed6ffaba999-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
    2009-01-22  6:42             ` Nikanth Karthikesan
         [not found] ` <20090126195431.GC504@balbir.in.ibm.com>
         [not found]   ` <20090126195431.GC504-SINUvgVNF2CyUtPGxGje5AC/G2K4zDHf@public.gmane.org>
    2009-01-26 19:56     ` Alan Cox
         [not found]   ` <20090126195622.1d5bf488@lxorguk.ukuu.org.uk>
         [not found]     ` <20090126195622.1d5bf488-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org>
    2009-01-27  7:02       ` KOSAKI Motohiro
         [not found]     ` <20090127155825.D476.KOSAKI.MOTOHIRO@jp.fujitsu.com>
         [not found]       ` <20090127155825.D476.KOSAKI.MOTOHIRO-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
    2009-01-27  7:26         ` Balbir Singh
    2009-01-27  7:39         ` David Rientjes
         [not found]       ` <alpine.DEB.2.00.0901262325320.13157@chino.kir.corp.google.com>
         [not found]         ` <alpine.DEB.2.00.0901262325320.13157-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-27  7:44           ` KOSAKI Motohiro
         [not found]         ` <20090127164238.D479.KOSAKI.MOTOHIRO@jp.fujitsu.com>
         [not found]           ` <20090127164238.D479.KOSAKI.MOTOHIRO-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
    2009-01-27  7:51             ` David Rientjes
         [not found]               ` <alpine.DEB.2.00.0901262350110.14525-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-27  9:31                 ` Evgeniy Polyakov
         [not found]                   ` <20090127093105.GB2646-i6C2adt8DTjR7s880joybQ@public.gmane.org>
    2009-01-27  9:37                     ` David Rientjes
         [not found]                       ` <alpine.DEB.2.00.0901270134360.20070-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-27 13:40                         ` Evgeniy Polyakov
         [not found]                       ` <20090127134038.GA18119@ioremap.net>
         [not found]                         ` <20090127134038.GA18119-i6C2adt8DTjR7s880joybQ@public.gmane.org>
    2009-01-27 20:37                           ` David Rientjes
         [not found]                         ` <alpine.DEB.2.00.0901271230140.21124@chino.kir.corp.google.com>
         [not found]                           ` <alpine.DEB.2.00.0901271230140.21124-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-27 21:51                             ` Evgeniy Polyakov
    2009-01-27 10:40                     ` KOSAKI Motohiro
         [not found]                   ` <20090127193058.D48B.KOSAKI.MOTOHIRO@jp.fujitsu.com>
         [not found]                     ` <20090127193058.D48B.KOSAKI.MOTOHIRO-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
    2009-01-27 13:45                       ` Evgeniy Polyakov
         [not found]                     ` <20090127134559.GB18119@ioremap.net>
         [not found]                       ` <20090127134559.GB18119-i6C2adt8DTjR7s880joybQ@public.gmane.org>
    2009-01-27 15:40                         ` Balbir Singh
    2009-01-27 20:41                         ` David Rientjes
         [not found]                       ` <20090127154053.GQ504@balbir.in.ibm.com>
         [not found]                         ` <20090127154053.GQ504-SINUvgVNF2CyUtPGxGje5AC/G2K4zDHf@public.gmane.org>
    2009-01-27 21:54                           ` Evgeniy Polyakov
         [not found]                       ` <alpine.DEB.2.00.0901271238090.21124@chino.kir.corp.google.com>
         [not found]                         ` <alpine.DEB.2.00.0901271238090.21124-X6Q0R45D7oAcqpCFd4KODRPsWskHk0ljAL8bYrjMMd8@public.gmane.org>
    2009-01-27 21:55                           ` Evgeniy Polyakov
    2009-01-21 11:08 Nikanth Karthikesan
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox