X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Flockfile.c;h=d157bc616c4b5d684c070c909b6f040c2add29af;hb=cfc50ae514f805dcd9c14589f21158185424daf6;hp=c83f469e3ae47991b646347999df05b1888b3c79;hpb=f21fa45f30856d07b712661566ae8d1bcb62a31a;p=sliver-openvswitch.git diff --git a/lib/lockfile.c b/lib/lockfile.c index c83f469e3..d157bc616 100644 --- a/lib/lockfile.c +++ b/lib/lockfile.c @@ -122,7 +122,10 @@ lockfile_lock(const char *file, struct lockfile **lockfilep) if (error == EACCES) { error = EAGAIN; } - if (pid) { + if (pid == getpid()) { + VLOG_WARN("%s: cannot lock file because this process has already " + "locked it", lock_name); + } else if (pid) { VLOG_WARN("%s: cannot lock file because it is already locked by " "pid %ld", lock_name, (long int) pid); } else { @@ -307,6 +310,7 @@ lockfile_try_lock(const char *name, pid_t *pidp, struct lockfile **lockfilep) /* Check whether we've already got a lock on that file. */ if (!stat(name, &s)) { if (lockfile_find(s.st_dev, s.st_ino)) { + *pidp = getpid(); return EDEADLK; } } else if (errno != ENOENT) {