From: Li Zefan <lizf@cn.fujitsu.com>
To: sudhir kumar <imsudhirkumar@gmail.com>
Cc: linux-kernel@vger.kernel.org, vatsa@linux.vnet.ibm.com,
bharata@linux.vnet.ibm.com, dhaval@linux.vnet.ibm.com,
balbir@linux.vnet.ibm.com, skumar@linux.vnet.ibm.com,
Peter <a.p.zijlstra@chello.nl>, Paul Menage <menage@google.com>,
mingo@elte.hu
Subject: Re: BUG: CGROUPS [2.6.28-rc6] Task migration does not clean reference to group
Date: Tue, 02 Dec 2008 21:07:46 +0800 [thread overview]
Message-ID: <49353322.6090802@cn.fujitsu.com> (raw)
In-Reply-To: <3da2c0120812020100u66a94f9bk3c0e8a705bb6347e@mail.gmail.com>
sudhir kumar wrote:
> Hi,
> I see an interesting bug in the cgroups. I found that cat /proc/cgroups
> does not decrease the num_cgroups field when a group is deleted. It looks
> to me that somewhere we miss to delete the reference, which leads to a failure
> to unmount the cgroups filesystem.
Ah, it's not a bug. :)
> The steps to produce the bug are:
>
> mkdir /cpu
> mount -t cgroup -ocpu cgroup /cpu
> cd cpu
> mkdir group1;
> cd group1;
> /./while & # an infinite loop
Seems whenever we create a background job, we'll have a pin to the directory where
the job is created. So though rmdir() removed the directory, the dentry's refcnt
is still >0, so cgroup_diput() in which number_of_cgroups is decreased is not called.
This explains why 'num_cgroups' showed in /proc/cgroups is not 1, and why umount failed.
You can try:
# mount -t ext3 /dev/sda6 /mnt
# cd /mnt
# sleep 10000 &
# cd ..
# umount /mnt
umount: /mnt: device is busy
And umount is OK for the below example:
# mount -t ext3 /dev/sda6 /mnt
# sleep 10000 &
# umount /mnt
> echo pid > tasks # pid is of infinite task
> cd .. # we are now in root group
> echo pid > /tasks # move the task to root group
> rmdir group1; # Succeeds even when I was inside this group
> in another shell
> cd ..
> umount /cpu; # this fails for me as below
> [root@malik-laptop /]# umount cpu/
> umount: cpu/: device is busy
>
> And I see that cat /proc/cgroups shows me still num_cgroups as 2;
>
> I checked it on two kernels.
> [root@malik-laptop cpu]# uname -a
> Linux malik-laptop.in.ibm.com 2.6.26 #1 SMP Tue Aug 12 16:39:18 IST
> 2008 i686 i686 i386 GNU/Linux
>
> [root@e325b sudhir]# uname -a
> Linux e325b.in.ibm.com 2.6.28-rc6 #1 SMP Mon Dec 1 15:53:09 IST 2008
> i686 athlon i386 GNU/Linux
>
> A look on /proc/cgroups
> root@e325b sudhir]# cat /proc/cgroups
> #subsys_name hierarchy num_cgroups enabled
> #cpuset 0 1 1
> #debug 0 1 1
> #ns 0 1 1
> #cpu 8 2 1
> #cpuacct 0 1 1
> #freezer 0 1 1
> #
>
> Please let me know if further information is required or I am doing
> something wrong ?
>
> Thanks
> Sudhir
next prev parent reply other threads:[~2008-12-02 13:07 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-02 9:00 BUG: CGROUPS [2.6.28-rc6] Task migration does not clean reference to group sudhir kumar
2008-12-02 13:07 ` Li Zefan [this message]
2008-12-02 13:36 ` sudhir kumar
2008-12-03 0:48 ` Li Zefan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49353322.6090802@cn.fujitsu.com \
--to=lizf@cn.fujitsu.com \
--cc=a.p.zijlstra@chello.nl \
--cc=balbir@linux.vnet.ibm.com \
--cc=bharata@linux.vnet.ibm.com \
--cc=dhaval@linux.vnet.ibm.com \
--cc=imsudhirkumar@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=menage@google.com \
--cc=mingo@elte.hu \
--cc=skumar@linux.vnet.ibm.com \
--cc=vatsa@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox