[sheepdog] [PATCH v4] try to set RLIMIT_NOFILE to recommended value

Liu Yuan namei.unix at gmail.com
Thu Mar 26 02:34:49 CET 2015


On Tue, Mar 17, 2015 at 05:30:47PM +0300, Vasiliy Tolstov wrote:
> Signed-off-by: Vasiliy Tolstov <v.tolstov at selfip.ru>
> ---
>  sheep/sheep.c | 29 +++++++++++++++++------------
>  1 file changed, 17 insertions(+), 12 deletions(-)
> 
> diff --git a/sheep/sheep.c b/sheep/sheep.c
> index fc53ec9..cad8293 100644
> --- a/sheep/sheep.c
> +++ b/sheep/sheep.c
> @@ -523,19 +523,24 @@ static int create_work_queues(void)
>  static void check_host_env(void)
>  {
>  	struct rlimit r;
> +	int ret;
>  
> -	if (getrlimit(RLIMIT_NOFILE, &r) < 0)
> -		sd_err("failed to get nofile %m");
> -	/*
> -	 * 1024 is default for NOFILE on most distributions, which is very
> -	 * dangerous to run Sheepdog cluster.
> -	 */
> -	else if (r.rlim_cur == 1024)
> -		sd_warn("Allowed open files 1024 too small, suggested %u",
> -			SD_RLIM_NOFILE);
> -	else if (r.rlim_cur < SD_RLIM_NOFILE)
> -		sd_info("Allowed open files %lu, suggested %u", r.rlim_cur,
> -			SD_RLIM_NOFILE);
> +	ret = getrlimit(RLIMIT_NOFILE, &r);
> +	if (ret < 0) {
> +		sd_err("failed to getrlimit");
> +	} else {
> +		if (r.rlim_cur < SD_RLIM_NOFILE) {
> +			r.rlim_cur = SD_RLIM_NOFILE;
> +			r.rlim_max = SD_RLIM_NOFILE;
> +			if (setrlimit(RLIMIT_NOFILE, &r) != 0) {
> +				sd_warn("Failed to set open files limit to suggested %lu",
> +					r.rlim_cur);

sd_err("Failed to set open files limit to suggested %lu, %m", r.rlim_cur)

is better so we can see why we fail to setrlimit. Other parts looks good to me.

Thanks,
Yuan



More information about the sheepdog mailing list