* [LTP] [PATCH v3 1/2] test.sh: make the loop device size can be increased @ 2016-08-18 13:09 Li Wang 2016-08-22 17:18 ` Cyril Hrubis 0 siblings, 1 reply; 5+ messages in thread From: Li Wang @ 2016-08-18 13:09 UTC (permalink / raw) To: ltp For the purpose of satisfying specific requirements, here adding parameters to tst_acquire_device() to make the test device can be increased according to real need. Signed-off-by: Li Wang <liwang@redhat.com> --- testcases/lib/test.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/testcases/lib/test.sh b/testcases/lib/test.sh index bd66109..60f8836 100644 --- a/testcases/lib/test.sh +++ b/testcases/lib/test.sh @@ -258,11 +258,15 @@ ROD() tst_acquire_device() { + local acq_dev_size=${1:-150} + if [ -z ${TST_TMPDIR} ]; then tst_brkm "Use 'tst_tmpdir' before 'tst_acquire_device'" fi - if [ -n "${LTP_DEV}" ]; then + ltp_dev_size=$((`blockdev --getsize64 $LTP_DEV`/1024/1024)) + + if [ -n "${LTP_DEV}" ] && [ ${acq_dev_size} -le ${ltp_dev_size} ]; then tst_resm TINFO "Using test device LTP_DEV='${LTP_DEV}'" if [ ! -b ${LTP_DEV} ]; then tst_brkm TBROK "${LTP_DEV} is not a block device" @@ -275,7 +279,7 @@ tst_acquire_device() return fi - ROD_SILENT dd if=/dev/zero of=test_dev.img bs=1024 count=153600 + ROD_SILENT dd if=/dev/zero of=test_dev.img bs=1024 count=$((1024*$acq_dev_size)) TST_DEVICE=$(losetup -f) if [ $? -ne 0 ]; then -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [LTP] [PATCH v3 1/2] test.sh: make the loop device size can be increased 2016-08-18 13:09 [LTP] [PATCH v3 1/2] test.sh: make the loop device size can be increased Li Wang @ 2016-08-22 17:18 ` Cyril Hrubis 2016-08-23 11:03 ` Li Wang 0 siblings, 1 reply; 5+ messages in thread From: Cyril Hrubis @ 2016-08-22 17:18 UTC (permalink / raw) To: ltp Hi! This one looks fine. We should also update the test-writing-guidelines in this patch since the shell version has optional parameter now. -- Cyril Hrubis chrubis@suse.cz ^ permalink raw reply [flat|nested] 5+ messages in thread
* [LTP] [PATCH v3 1/2] test.sh: make the loop device size can be increased 2016-08-22 17:18 ` Cyril Hrubis @ 2016-08-23 11:03 ` Li Wang 2016-08-30 13:34 ` Cyril Hrubis 0 siblings, 1 reply; 5+ messages in thread From: Li Wang @ 2016-08-23 11:03 UTC (permalink / raw) To: ltp On Tue, Aug 23, 2016 at 1:18 AM, Cyril Hrubis <chrubis@suse.cz> wrote: > Hi! > This one looks fine. > > We should also update the test-writing-guidelines in this patch since ok, I ll do that. > the shell version has optional parameter now. I'm now hesitating whether we should keep tst_device.c as same as the shell? although we don't need it for a while. Which something like: const char *tst_acquire_device(void (cleanup_fn)(void), int size) { int acq_dev_size; long long ltp_dev_size; char *dev; struct stat st; if (size > 0) acq_dev_size = size; else acq_dev_size = 150; if (device_acquired) tst_brkm(TBROK, cleanup_fn, "Device allready acquired"); if (!tst_tmpdir_created()) { tst_brkm(TBROK, cleanup_fn, "Cannot acquire device without tmpdir() created"); } dev = getenv("LTP_DEV"); if (dev) { tst_resm(TINFO, "Using test device LTP_DEV='%s'", dev); SAFE_STAT(cleanup_fn, dev, &st); if (!S_ISBLK(st.st_mode)) { tst_brkm(TBROK, cleanup_fn, "%s is not a block device", dev); } ltp_dev_size = (int)st.st_size/1024/1024; if (acq_dev_size <= ltp_dev_size) { if (tst_fill_file(dev, 0, 1024, 512)) { tst_brkm(TBROK | TERRNO, cleanup_fn, "Failed to clear the first 512k of %s", dev); } return dev; } } if (tst_fill_file(DEV_FILE, 0, 1024, 1024 * acq_dev_size)) { tst_brkm(TBROK | TERRNO, cleanup_fn, "Failed to create " DEV_FILE); } if (find_free_loopdev()) return NULL; attach_device(cleanup_fn, dev_path, DEV_FILE); device_acquired = 1; return dev_path; } -- Regards, Li Wang Email: liwang@redhat.com ^ permalink raw reply [flat|nested] 5+ messages in thread
* [LTP] [PATCH v3 1/2] test.sh: make the loop device size can be increased 2016-08-23 11:03 ` Li Wang @ 2016-08-30 13:34 ` Cyril Hrubis 2016-08-31 9:12 ` Li Wang 0 siblings, 1 reply; 5+ messages in thread From: Cyril Hrubis @ 2016-08-30 13:34 UTC (permalink / raw) To: ltp Hi! > I'm now hesitating whether we should keep tst_device.c as same as the > shell? although we don't need it for a while. I do not care that much either way. > Which something like: > > const char *tst_acquire_device(void (cleanup_fn)(void), int size) > { > int acq_dev_size; > long long ltp_dev_size; > char *dev; > struct stat st; > > if (size > 0) > acq_dev_size = size; > else > acq_dev_size = 150; size = size > 0 ? size : 150; is a bit shorter. > if (device_acquired) > tst_brkm(TBROK, cleanup_fn, "Device allready acquired"); > > if (!tst_tmpdir_created()) { > tst_brkm(TBROK, cleanup_fn, > "Cannot acquire device without tmpdir() created"); > } > > dev = getenv("LTP_DEV"); > > if (dev) { > tst_resm(TINFO, "Using test device LTP_DEV='%s'", dev); > > SAFE_STAT(cleanup_fn, dev, &st); > > if (!S_ISBLK(st.st_mode)) { > tst_brkm(TBROK, cleanup_fn, > "%s is not a block device", dev); > } > > ltp_dev_size = (int)st.st_size/1024/1024; > > if (acq_dev_size <= ltp_dev_size) { > if (tst_fill_file(dev, 0, 1024, 512)) { > tst_brkm(TBROK | TERRNO, cleanup_fn, > "Failed to clear the first 512k of %s", dev); > } > > return dev; > } We should print here that the LTP_DEV was skipped because it was too small. Something as: tst_resm(TINFO, "Skipping $LTP_DEV size %dMB, requested size %dMB", ltp_dev_size, size); Otherwise it would look like the $LTP_DEV was used from the test log. > } > > if (tst_fill_file(DEV_FILE, 0, 1024, 1024 * acq_dev_size)) { > tst_brkm(TBROK | TERRNO, cleanup_fn, > "Failed to create " DEV_FILE); > > } > > if (find_free_loopdev()) > return NULL; > > attach_device(cleanup_fn, dev_path, DEV_FILE); > > device_acquired = 1; > > return dev_path; > } Otherwise this looks fine. -- Cyril Hrubis chrubis@suse.cz ^ permalink raw reply [flat|nested] 5+ messages in thread
* [LTP] [PATCH v3 1/2] test.sh: make the loop device size can be increased 2016-08-30 13:34 ` Cyril Hrubis @ 2016-08-31 9:12 ` Li Wang 0 siblings, 0 replies; 5+ messages in thread From: Li Wang @ 2016-08-31 9:12 UTC (permalink / raw) To: ltp Thanks for your opinion. From myself testing, a little problem was found in this patch. On Tue, Aug 30, 2016 at 9:34 PM, Cyril Hrubis <chrubis@suse.cz> wrote: > Hi! >> I'm now hesitating whether we should keep tst_device.c as same as the >> shell? although we don't need it for a while. > > I do not care that much either way. > >> Which something like: >> >> const char *tst_acquire_device(void (cleanup_fn)(void), int size) >> { >> int acq_dev_size; >> long long ltp_dev_size; >> char *dev; >> struct stat st; >> >> if (size > 0) >> acq_dev_size = size; >> else >> acq_dev_size = 150; > > size = size > 0 ? size : 150; > > is a bit shorter. > >> if (device_acquired) >> tst_brkm(TBROK, cleanup_fn, "Device allready acquired"); >> >> if (!tst_tmpdir_created()) { >> tst_brkm(TBROK, cleanup_fn, >> "Cannot acquire device without tmpdir() created"); >> } >> >> dev = getenv("LTP_DEV"); >> >> if (dev) { >> tst_resm(TINFO, "Using test device LTP_DEV='%s'", dev); >> >> SAFE_STAT(cleanup_fn, dev, &st); >> >> if (!S_ISBLK(st.st_mode)) { >> tst_brkm(TBROK, cleanup_fn, >> "%s is not a block device", dev); >> } >> >> ltp_dev_size = (int)st.st_size/1024/1024; Seems like stat(); can not get the block device size correctly. I tried many times but always failed with "st.st_size = 0" here. So I have to use ioctl(); for replacement. ... fd = SAFE_OPEN(cleanup_fn, dev, O_RDONLY); SAFE_IOCTL(cleanup_fn, fd, BLKGETSIZE64, <p_dev_size); SAFE_CLOSE(cleanup_fn, fd); ltp_dev_size = ltp_dev_size/1024/1024; ... See: http://www.microhowto.info/howto/get_the_size_of_a_linux_block_special_device_in_c.html >> >> if (acq_dev_size <= ltp_dev_size) { >> if (tst_fill_file(dev, 0, 1024, 512)) { >> tst_brkm(TBROK | TERRNO, cleanup_fn, >> "Failed to clear the first 512k of %s", dev); >> } >> >> return dev; >> } > > We should print here that the LTP_DEV was skipped > because it was too small. Something as: > > tst_resm(TINFO, "Skipping $LTP_DEV size %dMB, requested size %dMB", > ltp_dev_size, size); > > Otherwise it would look like the $LTP_DEV was used from the test > log. > >> } >> >> if (tst_fill_file(DEV_FILE, 0, 1024, 1024 * acq_dev_size)) { >> tst_brkm(TBROK | TERRNO, cleanup_fn, >> "Failed to create " DEV_FILE); >> >> } >> >> if (find_free_loopdev()) >> return NULL; >> >> attach_device(cleanup_fn, dev_path, DEV_FILE); >> >> device_acquired = 1; >> >> return dev_path; >> } > > Otherwise this looks fine. Thanks, Patch V4 is coming. -- Regards, Li Wang Email: liwang@redhat.com ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-08-31 9:12 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-08-18 13:09 [LTP] [PATCH v3 1/2] test.sh: make the loop device size can be increased Li Wang 2016-08-22 17:18 ` Cyril Hrubis 2016-08-23 11:03 ` Li Wang 2016-08-30 13:34 ` Cyril Hrubis 2016-08-31 9:12 ` Li Wang
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.