[SSSD] [PATCH] sss_cache: Remove fastcache even if sssd is not running.

Sumit Bose sbose at redhat.com
Tue Nov 6 20:45:23 UTC 2012


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;
> +}



More information about the sssd-devel mailing list