kernel-packages team mailing list archive
-
kernel-packages team
-
Mailing list archive
-
Message #72305
[Bug 1341364] Re: cgroupfs rmdir race (regression)
Indeed my testcase now passes - thanks.
** Changed in: linux (Ubuntu)
Status: Triaged => Fix Released
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1341364
Title:
cgroupfs rmdir race (regression)
Status in “linux” package in Ubuntu:
Fix Released
Bug description:
In older utopic kernels (abi-3.15.0-6-generic), when I quickly rmdir
/a/b and then rmdir /a, it succeeds. With the kernel in utopic, the
rmdir of cgroup /a fails with EBUSY. This appears to be a race.
The following test program quite reliably shows the race:
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/mount.h>
#include <errno.h>
#include <string.h>
int main()
{
int ret;
int i;
char path[1024], f[30];
ret = mount("cgroup", "/mnt", "cgroup", 0, "memory");
if (ret) {
perror("mount");
exit(1);
}
sprintf(path, "/mnt");
printf("creating\n");
for (i = 0; i < 10; i++) {
sprintf(f, "/dir%d", i);
strcat(path, f);
ret = mkdir(path, 0755);
if (ret && errno != EEXIST) {
perror("mkdir");
printf("Failed on %d\n", i);
umount("/mnt");
exit(1);
}
}
printf("Now removing\n");
for (i = 9; i >= 0; i--) {
ret = rmdir(path);
if (ret) {
perror("rmdir");
printf("Failed removing %s\n", path);
umount("/mnt");
exit(1);
}
char *p = strrchr(path, '/');
*p = '\0';
}
umount("/mnt");
printf("Done - success\n");
}
This is also blocking promotion of the cgmanager package to utopic due
to jenkins failure:
https://jenkins.qa.ubuntu.com/job/utopic-adt-cgmanager/30/ARCH=amd64,label=adt/console
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1341364/+subscriptions
References