[LTP] [PATCH v1] libswap.c: Improve caculate swap dev number

Yang Xu (Fujitsu) xuyang2018.jy@fujitsu.com
Mon Mar 4 10:18:33 CET 2024


Hi  Li,

> 
> 
> On Sun, Mar 3, 2024 at 9:14 PM Petr Vorel <pvorel@suse.cz 
> <mailto:pvorel@suse.cz>> wrote:
> 
>     Hi Wei, Xu,
> 
>      > Hi  Wei
> 
>      > > I encounter a dead loop on following code in our test on ppc64
>     machine:
>      > > while ((c = fgetc(fp)) != EOF)
> 
>      > > I think "/proc/swaps" is not normal file and can not get EOF in
>     some situation,
>      > > so i use fgets a line and caculate swap dev number.
> 
>     I guess the problem has been fixed by another patch [1], thus
>     closing it in
>     patchwork. Please let me know if not.
> 
> 
> Seems not, the patch [1] below is mainly to count the free disk size.
> 
> But Wei's work here is to calculate swap-dev numbers correctly
> (especially get rid of EOF affection to some degree).
> 
> Xu Yang, what do you think? or did I miss anything here?
> 
> 

I still think we can use the same way in ipc libs to get rid of the EOF 
problem instead of
searching "dev" keyword. We just don't need to  calcualte "/proc/swaps" 
header.

int get_used_sysvipc(const char *file, const int lineno, const char 
*sysvipc_file)
{
	FILE *fp;
	int used = -1;
	char buf[BUFSIZE];

	fp = safe_fopen(file, lineno, NULL, sysvipc_file, "r");

	while (fgets(buf, BUFSIZE, fp) != NULL)
		used++;

	fclose(fp);

	if (used < 0) {
		tst_brk(TBROK, "can't read %s to get used sysvipc resource total at "
			"%s:%d", sysvipc_file, file, lineno);
	}

	return used;
}

But we don't get the actual reason, I still wonder why this deadloop 
exists o ppcc64 instead of
other architecture(ie x86_64).

Best Regards
Yang Xu

> 
> -- 
> Regards,
> Li Wang


More information about the ltp mailing list