From: Daan De Meyer Date: Thu, 9 Mar 2023 10:44:13 +0000 (+0100) Subject: lockfile-util: Drop flock() fallback X-Git-Tag: v254-rc1~1066^2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ed70a34ec0f9ac53646101dd9c544b1f60d17e69;p=thirdparty%2Fsystemd.git lockfile-util: Drop flock() fallback UNPOSIX locks were added in 3.15 which is now our minimal kernel version, so let's drop the fallback. --- diff --git a/src/shared/lockfile-util.c b/src/shared/lockfile-util.c index df099d7d05e..dd07ea0cabd 100644 --- a/src/shared/lockfile-util.c +++ b/src/shared/lockfile-util.c @@ -18,18 +18,11 @@ int make_lock_file(const char *p, int operation, LockFile *ret) { _cleanup_close_ int fd = -EBADF; _cleanup_free_ char *t = NULL; - int r; assert(p); assert(ret); - /* - * We use UNPOSIX locks if they are available. They have nice semantics, and are mostly compatible - * with NFS. However, they are only available on new kernels. When we detect we are running on an - * older kernel, then we fall back to good old BSD locks. They also have nice semantics, but are - * slightly problematic on NFS, where they are upgraded to POSIX locks, even though locally they are - * orthogonal to POSIX locks. - */ + /* We use UNPOSIX locks as they have nice semantics, and are mostly compatible with NFS. */ t = strdup(p); if (!t) @@ -46,14 +39,8 @@ int make_lock_file(const char *p, int operation, LockFile *ret) { if (fd < 0) return -errno; - r = fcntl(fd, (operation & LOCK_NB) ? F_OFD_SETLK : F_OFD_SETLKW, &fl); - if (r < 0) { - /* If the kernel is too old, use good old BSD locks */ - if (errno == EINVAL || ERRNO_IS_NOT_SUPPORTED(errno)) - r = flock(fd, operation); - if (r < 0) - return errno == EAGAIN ? -EBUSY : -errno; - } + if (fcntl(fd, (operation & LOCK_NB) ? F_OFD_SETLK : F_OFD_SETLKW, &fl) < 0) + return errno == EAGAIN ? -EBUSY : -errno; /* If we acquired the lock, let's check if the file still exists in the file system. If not, * then the previous exclusive owner removed it and then closed it. In such a case our @@ -73,7 +60,7 @@ int make_lock_file(const char *p, int operation, LockFile *ret) { .operation = operation, }; - return r; + return 0; } int make_lock_file_for(const char *p, int operation, LockFile *ret) { @@ -99,8 +86,6 @@ int make_lock_file_for(const char *p, int operation, LockFile *ret) { } void release_lock_file(LockFile *f) { - int r; - if (!f) return; @@ -117,11 +102,7 @@ void release_lock_file(LockFile *f) { .l_whence = SEEK_SET, }; - r = fcntl(f->fd, F_OFD_SETLK, &fl); - if (r < 0 && (errno == EINVAL || ERRNO_IS_NOT_SUPPORTED(errno))) - r = flock(f->fd, LOCK_EX|LOCK_NB); - - if (r >= 0) + if (fcntl(f->fd, F_OFD_SETLK, &fl) >= 0) f->operation = LOCK_EX|LOCK_NB; }