[lxc-devel] [PATCH] tests: try again when waitpid() sets errno as EINTR
S.Çağlar Onur
caglar at 10ur.org
Thu Dec 4 17:31:12 UTC 2014
On Thu, Dec 4, 2014 at 11:47 AM, Stéphane Graber <stgraber at ubuntu.com> wrote:
> On Thu, Dec 04, 2014 at 02:26:04PM +0530, Arjun Sreedharan wrote:
>> when waitpid() is interrupted, errno is not set to the negative
>> value -EINTR. It is set to EINTR. check against EINTR.
>>
>> Signed-off-by: Arjun Sreedharan <arjun024 at gmail.com>
>
> Acked-by: Stéphane Graber <stgraber at ubuntu.com>
hmm nice catch, I believe we need following too as rmdir and
lxc_unpriv returns non-negative error codes as well.
diff --git a/src/lxc/bdev.c b/src/lxc/bdev.c
index 9ccd666..9d0a735 100644
--- a/src/lxc/bdev.c
+++ b/src/lxc/bdev.c
@@ -1418,7 +1418,7 @@ static int btrfs_snapshot(const char *orig,
const char *new)
goto out;
}
// make sure the directory doesn't already exist
- if (rmdir(newfull) < 0 && errno != -ENOENT) {
+ if (rmdir(newfull) < 0 && errno != ENOENT) {
SYSERROR("Error removing empty new rootfs");
goto out;
}
@@ -1511,7 +1511,7 @@ static int btrfs_clonepaths(struct bdev *orig,
struct bdev *new, const char *old
return userns_exec_1(conf, btrfs_snapshot_wrapper, &sdata);
}
- if (rmdir(new->dest) < 0 && errno != -ENOENT) {
+ if (rmdir(new->dest) < 0 && errno != ENOENT) {
SYSERROR("removing %s", new->dest);
return -1;
}
diff --git a/src/lxc/log.c b/src/lxc/log.c
index cb48600..13bd0e8 100644
--- a/src/lxc/log.c
+++ b/src/lxc/log.c
@@ -159,7 +159,7 @@ static int build_dir(const char *name)
*p = '\0';
if (access(n, F_OK)) {
ret = lxc_unpriv(mkdir(n, 0755));
- if (ret && errno != -EEXIST) {
+ if (ret && errno != EEXIST) {
SYSERROR("failed to create directory '%s'.", n);
free(n);
return -1;
>> ---
>> src/tests/containertests.c | 4 ++--
>> src/tests/destroytest.c | 2 +-
>> src/tests/saveconfig.c | 2 +-
>> src/tests/startone.c | 4 ++--
>> 4 files changed, 6 insertions(+), 6 deletions(-)
>>
>> diff --git a/src/tests/containertests.c b/src/tests/containertests.c
>> index 9230853..d093a02 100644
>> --- a/src/tests/containertests.c
>> +++ b/src/tests/containertests.c
>> @@ -48,7 +48,7 @@ static int destroy_busybox(void)
>> again:
>> ret = waitpid(pid, &status, 0);
>> if (ret == -1) {
>> - if (errno == -EINTR)
>> + if (errno == EINTR)
>> goto again;
>> perror("waitpid");
>> return -1;
>> @@ -80,7 +80,7 @@ static int create_busybox(void)
>> again:
>> ret = waitpid(pid, &status, 0);
>> if (ret == -1) {
>> - if (errno == -EINTR)
>> + if (errno == EINTR)
>> goto again;
>> perror("waitpid");
>> return -1;
>> diff --git a/src/tests/destroytest.c b/src/tests/destroytest.c
>> index 4bb6aae..eaf3c84 100644
>> --- a/src/tests/destroytest.c
>> +++ b/src/tests/destroytest.c
>> @@ -46,7 +46,7 @@ static int create_container(void)
>> again:
>> ret = waitpid(pid, &status, 0);
>> if (ret == -1) {
>> - if (errno == -EINTR)
>> + if (errno == EINTR)
>> goto again;
>> perror("waitpid");
>> return -1;
>> diff --git a/src/tests/saveconfig.c b/src/tests/saveconfig.c
>> index de2fa82..d8a4ca2 100644
>> --- a/src/tests/saveconfig.c
>> +++ b/src/tests/saveconfig.c
>> @@ -46,7 +46,7 @@ static int create_container(void)
>> again:
>> ret = waitpid(pid, &status, 0);
>> if (ret == -1) {
>> - if (errno == -EINTR)
>> + if (errno == EINTR)
>> goto again;
>> perror("waitpid");
>> return -1;
>> diff --git a/src/tests/startone.c b/src/tests/startone.c
>> index 9dd4ec3..6b7344f 100644
>> --- a/src/tests/startone.c
>> +++ b/src/tests/startone.c
>> @@ -48,7 +48,7 @@ static int destroy_container(void)
>> again:
>> ret = waitpid(pid, &status, 0);
>> if (ret == -1) {
>> - if (errno == -EINTR)
>> + if (errno == EINTR)
>> goto again;
>> perror("waitpid");
>> return -1;
>> @@ -80,7 +80,7 @@ static int create_container(void)
>> again:
>> ret = waitpid(pid, &status, 0);
>> if (ret == -1) {
>> - if (errno == -EINTR)
>> + if (errno == EINTR)
>> goto again;
>> perror("waitpid");
>> return -1;
>> --
>> 1.7.10.1
>>
>
> --
> Stéphane Graber
> Ubuntu developer
> http://www.ubuntu.com
>
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel
>
--
S.Çağlar Onur <caglar at 10ur.org>
More information about the lxc-devel
mailing list