[SSSD] [PATCH] sss_cache: Remove fastcache even if sssd is not running.
Michal Židek
mzidek at redhat.com
Wed Nov 7 10:33:59 UTC 2012
On 11/06/2012 09:45 PM, Sumit Bose wrote:
> Hi,
>
>> +
>> +errno_t sss_br_lock_file(int fd, size_t start, size_t len,
>> + int retries, useconds_t wait)
>> +{
>> + int ret;
>> + struct flock lock;
>> + int retries_left;
>> +
>> + lock.l_type = F_WRLCK;
>> + lock.l_whence = SEEK_SET;
>> + lock.l_start = start;
>> + lock.l_len = len;
>> + lock.l_pid = 0;
>> +
>> + for (retries_left = retries; retries_left > 0; retries_left--) {
>> + ret = fcntl(fd, F_SETLK, &lock);
>> + if (ret == -1) {
>> + ret = errno;
>> + if (ret == EACCES || ret == EAGAIN || ret == EINTR) {
>> + DEBUG(SSSDBG_TRACE_FUNC,
>> + ("Failed to lock file. Retries left: %d\n",
>> + retries_left - 1));
>> +
>> + if ((ret == EACCES || ret == EAGAIN) && (retries_left <= 1)) {
>> + /* File is locked by someone else. Return EACCESS
>> + * if this is the last try. */
>> + return EACCES;
>> + }
>> +
>> + if (retries_left - 1 > 0) {
>> + ret = usleep(wait);
>> + if (ret == -1) {
>> + DEBUG(SSSDBG_MINOR_FAILURE,
>> + ("usleep() failed -> ignoring\n"));
>> + }
>> + }
>> + } else {
>> + /* Error occurred */
>> + DEBUG(SSSDBG_CRIT_FAILURE,
>> + ("Unable to lock file.\n"));
>> + return ret;
>> + }
>> + } else if (ret == 0) {
>> + /* File successfuly locked */
>> + break;
>> + }
>> + }
>> + if (retries_left == 0) {
>> + DEBUG(SSSDBG_CRIT_FAILURE, ("Unable to lock file.\n"));
>> + return ret;
>
> if retries is 0, ret is uninitialized. Can you fix this? All credits
> goes to gcc, I've just seen the compiler warning.
>
> bye,
> Sumit
>
>> + }
>> +
>> + return EOK;
>> +}
> _______________________________________________
> sssd-devel mailing list
> sssd-devel at lists.fedorahosted.org
> https://lists.fedorahosted.org/mailman/listinfo/sssd-devel
>
Good catch. Having a value of 0 or <= 0 makes no sense here. I'll send a
patch that returns EINVAL in such situation in a new thread.
Thanks
Michal
More information about the sssd-devel
mailing list