Hi,
Sorry for be late, I have written v2 version according to all your suggestions,
thanks.
Regards,
Xiaoguang Wang
On 05/12/2015 07:37 PM, Cyril Hrubis wrote:
> Hi!
>> --- a/runtest/kernel_misc
>> +++ b/runtest/kernel_misc
>> @@ -11,3 +11,4 @@ rcu_torture rcu_torture.sh
>> lock_torture lock_torture.sh
>> zram01 zram01.sh
>> zram02 zram02.sh
>> +zram03 zram03
>> diff --git a/testcases/kernel/device-drivers/zram/.gitignore
>> b/testcases/kernel/device-drivers/zram/.gitignore
>> new file mode 100644
>> index 0000000..7d54f60
>> --- /dev/null
>> +++ b/testcases/kernel/device-drivers/zram/.gitignore
>> @@ -0,0 +1 @@
>> +/zram03
>> diff --git a/testcases/kernel/device-drivers/zram/Makefile
>> b/testcases/kernel/device-drivers/zram/Makefile
>> index 0d73f66..5077cf4 100644
>> --- a/testcases/kernel/device-drivers/zram/Makefile
>> +++ b/testcases/kernel/device-drivers/zram/Makefile
>> @@ -17,6 +17,6 @@
>> top_srcdir ?= ../../../..
>> include $(top_srcdir)/include/mk/testcases.mk
>>
>> -INSTALL_TARGETS := *.sh
>> +INSTALL_TARGETS := *.sh zram03
>
> Hmm, shouldn't these two changes be rather part of the previous patch?
>
>> include $(top_srcdir)/include/mk/generic_leaf_target.mk
>> diff --git a/testcases/kernel/device-drivers/zram/zram03.c
>> b/testcases/kernel/device-drivers/zram/zram03.c
>> index a5abb38..8448234 100644
>> --- a/testcases/kernel/device-drivers/zram/zram03.c
>> +++ b/testcases/kernel/device-drivers/zram/zram03.c
>> @@ -23,6 +23,7 @@
>> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
>> * 02110-1301, USA.
>> */
>> +
>> #include <sys/types.h>
>> #include <sys/stat.h>
>> #include <sys/mman.h>
>> @@ -31,7 +32,9 @@
>> #include <stdio.h>
>> #include <string.h>
>> #include <unistd.h>
>> +
>> #include "test.h"
>> +#include "safe_macros.h"
>>
>> char *TCID = "zram01";
>> int TST_TOTAL = 1;
>> @@ -81,15 +84,10 @@ static void set_disksize(void)
>> char size[BUFSIZ];
>>
>> tst_resm(TINFO, "create a zram device with %ld bytes in size.", SIZE);
>> - fd = open(PATH_ZRAM "/disksize", O_WRONLY);
>> - if (fd == -1)
>> - tst_brkm(TBROK | TERRNO, cleanup, "open %s",
>> - PATH_ZRAM "/disksize");
>> + fd = SAFE_OPEN(cleanup, PATH_ZRAM "/disksize", O_WRONLY);
>> sprintf(size, "%ld", SIZE);
>> - if (write(fd, size, strlen(size)) != strlen(size))
>> - tst_brkm(TBROK | TERRNO, cleanup, "write %s to %s", size,
>> - PATH_ZRAM "/disksize");
>> - close(fd);
>> + SAFE_WRITE(cleanup, 1, fd, size, strlen(size));
>> + SAFE_CLOSE(cleanup, fd);
>
> What about:
>
> SAFE_FILE_PRINTF(cleanup, PATH_ZRAM "/disksize", "%ld", SIZE);
>> }
>>
>> static void write_device(void)
>> @@ -97,56 +95,48 @@ static void write_device(void)
>> int fd;
>> char *s;
>>
>> - tst_resm(TINFO, "map it into memory.");
>> - fd = open(DEVICE, O_RDWR);
>> - if (fd == -1)
>> - tst_brkm(TBROK | TERRNO, cleanup, "open %s", DEVICE);
>> - s = mmap(NULL, SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
>> - if (s == MAP_FAILED)
>> - tst_brkm(TBROK | TERRNO, cleanup, "mmap");
>> + tst_resm(TINFO, "map this zram device into memory.");
>> + fd = SAFE_OPEN(cleanup, DEVICE, O_RDWR);
>> + s = SAFE_MMAP(cleanup, NULL, SIZE, PROT_READ | PROT_WRITE,
>> + MAP_SHARED, fd, 0);
>>
>> tst_resm(TINFO, "write all the memory.");
>> memset(s, 'a', SIZE - 1);
>> s[SIZE - 1] = '\0';
>>
>> - if (munmap(s, SIZE) == -1)
>> - tst_brkm(TBROK | TERRNO, cleanup, "munmap");
>> -
>> - close(fd);
>> + SAFE_MUNMAP(cleanup, s, SIZE);
>> + SAFE_CLOSE(cleanup, fd);
>> }
>>
>> static void verify_device(void)
>> {
>> int fd;
>> - long i, fail;
>> + long i = 0, fail = 0;
>> char *s;
>>
>> tst_resm(TINFO, "verify contents from device.");
>> - fd = open(DEVICE, O_RDONLY);
>> - if (fd == -1)
>> - tst_brkm(TBROK | TERRNO, cleanup, "open %s", DEVICE);
>> - s = mmap(NULL, SIZE, PROT_READ, MAP_PRIVATE, fd, 0);
>> - if (s == MAP_FAILED)
>> - tst_brkm(TBROK | TERRNO, cleanup, "2nd mmap");
>> -
>> - i = 0;
>> - fail = 0;
>> + fd = SAFE_OPEN(cleanup, DEVICE, O_RDONLY);
>> + s = SAFE_MMAP(cleanup, NULL, SIZE, PROT_READ, MAP_PRIVATE, fd, 0);
>> +
>> while (s[i] && i < SIZE - 1) {
>> if (s[i] != 'a')
>> fail++;
>> i++;
>> }
>> - if (i != SIZE - 1)
>> + if (i != SIZE - 1) {
>> tst_resm(TFAIL, "expect size: %ld, actual size: %ld.",
>> SIZE - 1, i);
>> - else if (s[i] != '\0')
>> + } else if (s[i] != '\0') {
>> tst_resm(TFAIL, "zram device seems not null terminated");
>> - if (fail)
>> + } else if (fail) {
>> tst_resm(TFAIL, "%ld failed bytes found.", fail);
>> - if (munmap(s, SIZE) == -1)
>> - tst_brkm(TBROK | TERRNO, cleanup, "2nd munmap");
>> + } else {
>> + tst_resm(TPASS, "data read from zram device is consistent "
>> + "with those are written");
>> + }
>>
>> - close(fd);
>> + SAFE_MUNMAP(cleanup, s, SIZE);
>> + SAFE_CLOSE(cleanup, fd);
>> }
>>
>> static void reset(void)
>> @@ -154,14 +144,9 @@ static void reset(void)
>> int fd;
>>
>> tst_resm(TINFO, "reset it.");
>> - fd = open(PATH_ZRAM "/reset", O_WRONLY);
>> - if (fd == -1)
>> - tst_brkm(TBROK | TERRNO, cleanup, "open %s",
>> - PATH_ZRAM "/reset");
>> - if (write(fd, "1", 1) != 1)
>> - tst_brkm(TBROK | TERRNO, cleanup, "write 1 to %s",
>> - PATH_ZRAM "/reset");
>> - close(fd);
>> + fd = SAFE_OPEN(cleanup, PATH_ZRAM "/reset", O_WRONLY);
>> + SAFE_WRITE(cleanup, 1, fd, "1", 1);
>> + SAFE_CLOSE(cleanup, fd);
>
>
> SAFE_FILE_PRINTF() here as well.
>
>> static void setup(void)
>> @@ -171,12 +156,16 @@ static void setup(void)
>> tst_require_root(NULL);
>>
>> retry:
>> - if (access(PATH_ZRAM, R_OK | W_OK | X_OK) == -1) {
>> + if (access(PATH_ZRAM, F_OK) == -1) {
>> if (errno == ENOENT) {
>> - if (retried)
>> + if (retried) {
>> tst_brkm(TCONF, NULL,
>> "system has no zram device.");
>> - system("modprobe zram");
>> + }
>> + if (system("modprobe zram") == -1) {
>> + tst_brkm(TBROK | TERRNO, cleanup,
>> + "system(modprobe zram) failed");
>> + }
>> modprobe = 1;
>> retried = 1;
>> goto retry;
>> @@ -190,26 +179,17 @@ retry:
>>
>> static void cleanup(void)
>> {
>> - if (modprobe == 1)
>> - system("rmmod zram");
>> + if (modprobe == 1 && system("rmmod zram") == -1)
>> + tst_resm(TWARN | TERRNO, "system(rmmod zram) failed");
>> }
>>
>> static void print(char *string)
>> {
>> - FILE *fp;
>> - char buf[BUFSIZ], value[BUFSIZ];
>> -
>> - sprintf(buf, "%s/%s", PATH_ZRAM, string);
>> - fp = fopen(buf, "r");
>> - if (fp == NULL)
>> - tst_brkm(TBROK | TERRNO, cleanup, "fopen %s", buf);
>> -
>> - if (fgets(value, BUFSIZ, fp) == NULL)
>> - tst_brkm(TBROK | TERRNO, cleanup, "fgets %s", buf);
>> - value[strlen(value) - 1] = '\0';
>> - fclose(fp);
>> + char filename[BUFSIZ], value[BUFSIZ];
>>
>> - tst_resm(TINFO, "%s is %s", buf, value);
>> + sprintf(filename, "%s/%s", PATH_ZRAM, string);
>> + SAFE_FILE_SCANF(cleanup, filename, "%s", value);
>> + tst_resm(TINFO, "%s is %s", filename, value);
>> }
>
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list