Lines Matching +full:offset +full:- +full:x
2 * Copyright (c) 1998-2001 Apple Computer, Inc. All rights reserved.
16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
27 * Rewrite and enhancements 1998-2001 Conrad Minshall -- conrad@mac.com
31 * Small changes to work under Linux -- davej@suse.de
35 * Checks for mmap last-page zero fill.
37 * Updated license to APSL 2.0, 2004/7/27 - Jordan Hubbard
108 long simulatedopcount = 0; /* -b flag */
109 int closeprob = 0; /* -c flag */
110 int invlprob = 0; /* -i flag */
111 int debug = 0; /* -d flag */
112 long debugstart = 0; /* -D flag */
113 off_t maxfilelen = 256 * 1024; /* -l flag */
114 int sizechecks = 1; /* -n flag disables them */
115 int maxoplen = 64 * 1024; /* -o flag */
116 int quiet = 0; /* -q flag */
117 unsigned long progressinterval = 0; /* -p flag */
118 int readbdy = 1; /* -r flag */
119 int style = 0; /* -s flag */
120 int truncbdy = 1; /* -t flag */
121 int writebdy = 1; /* -w flag */
122 long monitorstart = -1; /* -m flag */
123 long monitorend = -1; /* -m flag */
124 int lite = 0; /* -L flag */
125 long numops = -1; /* -N flag */
126 int randomoplen = 1; /* -O flag disables it */
127 int seed = 1; /* -S flag */
128 int mapped_writes = 1; /* -W flag disables */
129 int mapped_reads = 1; /* -R flag disables it */
130 int mapped_msync = 1; /* -U flag disables */
133 int badoff = -1;
167 le->operation = operation; in do_log4()
168 le->args[0] = arg0; in do_log4()
169 le->args[1] = arg1; in do_log4()
170 le->args[2] = arg2; in do_log4()
205 for ( ; count > 0; count--) { in logdump()
208 if (lp->operation == OP_CLOSEOPEN || in logdump()
209 lp->operation == OP_INVALIDATE) { in logdump()
210 switch (lp->operation) { in logdump()
225 switch (lp->operation) { in logdump()
227 prt("MAPREAD\t0x%x thru 0x%x\t(0x%x bytes)", in logdump()
228 lp->args[0], lp->args[0] + lp->args[1] - 1, in logdump()
229 lp->args[1]); in logdump()
230 if (badoff >= lp->args[0] && badoff < in logdump()
231 lp->args[0] + lp->args[1]) in logdump()
235 prt("MAPWRITE 0x%x thru 0x%x\t(0x%x bytes)", in logdump()
236 lp->args[0], lp->args[0] + lp->args[1] - 1, in logdump()
237 lp->args[1]); in logdump()
238 if (badoff >= lp->args[0] && badoff < in logdump()
239 lp->args[0] + lp->args[1]) in logdump()
243 prt("READ\t0x%x thru 0x%x\t(0x%x bytes)", in logdump()
244 lp->args[0], lp->args[0] + lp->args[1] - 1, in logdump()
245 lp->args[1]); in logdump()
246 if (badoff >= lp->args[0] && in logdump()
247 badoff < lp->args[0] + lp->args[1]) in logdump()
252 int offset = lp->args[0]; in logdump() local
253 int len = lp->args[1]; in logdump()
254 int oldlen = lp->args[2]; in logdump()
256 prt("WRITE\t0x%x thru 0x%x\t(0x%x bytes)", in logdump()
257 offset, offset + len - 1, in logdump()
259 if (offset > oldlen) in logdump()
261 else if (offset + len > oldlen) in logdump()
263 if ((badoff >= offset || badoff >=oldlen) && in logdump()
264 badoff < offset + len) in logdump()
269 down = lp->args[0] < lp->args[1]; in logdump()
270 prt("TRUNCATE %s\tfrom 0x%x to 0x%x", in logdump()
271 down ? "DOWN" : "UP", lp->args[1], lp->args[0]); in logdump()
272 if (badoff >= lp->args[!down] && in logdump()
273 badoff < lp->args[!!down]) in logdump()
281 lp->operation); in logdump()
307 if (size_by_seek == (off_t)-1) in save_buffer()
310 …warn("save_buffer: .fsxgood file too short... will save 0x%llx bytes instead of 0x%llx\n", (unsign… in save_buffer()
317 if (ret == (off_t)-1) in save_buffer()
322 if (byteswritten == -1) in save_buffer()
325 warn("save_buffer: short write, 0x%x bytes instead of 0x%llx\n", in save_buffer()
354 check_buffers(unsigned offset, unsigned size) in check_buffers() argument
362 if (memcmp(good_buf + offset, temp_buf, size) != 0) { in check_buffers()
363 prt("READ BAD DATA: offset = 0x%x, size = 0x%x\n", in check_buffers()
364 offset, size); in check_buffers()
365 prt("OFFSET\tGOOD\tBAD\tRANGE\n"); in check_buffers()
367 c = good_buf[offset]; in check_buffers()
372 prt("0x%5x\t0x%04x\t0x%04x", offset, in check_buffers()
373 short_at(&good_buf[offset]), bad); in check_buffers()
374 op = temp_buf[offset & 1 ? i+1 : i]; in check_buffers()
377 badoff = offset; in check_buffers()
379 offset++; in check_buffers()
381 size--; in check_buffers()
384 prt("\t0x%5x\n", n); in check_buffers()
404 statbuf.st_size = -1; in check_size()
408 prt("Size error: expected 0x%llx stat 0x%llx seek 0x%llx\n", in check_size()
434 doread(off_t offset, off_t size) in doread() argument
439 offset -= offset % readbdy; in doread()
443 log4(OP_SKIPPED, OP_READ, offset, size); in doread()
446 if (size + offset > file_size) { in doread()
449 log4(OP_SKIPPED, OP_READ, offset, size); in doread()
453 log4(OP_READ, offset, size, 0); in doread()
461 (monitorstart == -1 || in doread()
462 (offset + size > monitorstart && in doread()
463 (monitorend == -1 || offset <= monitorend)))))) in doread()
464 prt("%lu read\t0x%x thru\t0x%x\t(0x%x bytes)\n", testcalls, in doread()
465 offset, offset + size - 1, size); in doread()
466 ret = lseek(fd, (off_t)offset, SEEK_SET); in doread()
467 if (ret == (off_t)-1) { in doread()
473 if (iret == -1) in doread()
476 prt("short read: 0x%x bytes instead of 0x%x\n", in doread()
480 check_buffers(offset, size); in doread()
485 check_eofpage(const char *s, unsigned offset, char *p, int size) in check_eofpage() argument
489 if (offset + size <= (file_size & ~page_mask)) in check_eofpage()
497 last_page = ((uintptr_t)p + (offset & page_mask) + size) & ~page_mask; in check_eofpage()
503 prt("Mapped %s: non-zero data past EOF (0x%llx) page offset 0x%x is 0x%04x\n", in check_eofpage()
504 s, file_size - 1, should_be_zero & page_mask, in check_eofpage()
512 domapread(unsigned offset, unsigned size) in domapread() argument
518 offset -= offset % readbdy; in domapread()
522 log4(OP_SKIPPED, OP_MAPREAD, offset, size); in domapread()
525 if (size + offset > file_size) { in domapread()
528 log4(OP_SKIPPED, OP_MAPREAD, offset, size); in domapread()
532 log4(OP_MAPREAD, offset, size, 0); in domapread()
540 (monitorstart == -1 || in domapread()
541 (offset + size > monitorstart && in domapread()
542 (monitorend == -1 || offset <= monitorend)))))) in domapread()
543 prt("%lu mapread\t0x%x thru\t0x%x\t(0x%x bytes)\n", testcalls, in domapread()
544 offset, offset + size - 1, size); in domapread()
546 pg_offset = offset & page_mask; in domapread()
550 (off_t)(offset - pg_offset))) == (char *)-1) { in domapread()
556 check_eofpage("Read", offset, p, size); in domapread()
563 check_buffers(offset, size); in domapread()
568 gendata(unsigned offset, unsigned size) in gendata() argument
570 while (size--) { in gendata()
571 good_buf[offset] = testcalls % 256; in gendata()
572 if (offset % 2) in gendata()
573 good_buf[offset] += original_buf[offset]; in gendata()
574 offset++; in gendata()
580 dowrite(unsigned offset, unsigned size) in dowrite() argument
585 offset -= offset % writebdy; in dowrite()
589 log4(OP_SKIPPED, OP_WRITE, offset, size); in dowrite()
593 log4(OP_WRITE, offset, size, file_size); in dowrite()
595 gendata(offset, size); in dowrite()
596 if (file_size < offset + size) { in dowrite()
597 if (file_size < offset) in dowrite()
598 memset(good_buf + file_size, '\0', offset - file_size); in dowrite()
599 file_size = offset + size; in dowrite()
612 (monitorstart == -1 || in dowrite()
613 (offset + size > monitorstart && in dowrite()
614 (monitorend == -1 || offset <= monitorend)))))) in dowrite()
615 prt("%lu write\t0x%x thru\t0x%x\t(0x%x bytes)\n", testcalls, in dowrite()
616 offset, offset + size - 1, size); in dowrite()
617 ret = lseek(fd, (off_t)offset, SEEK_SET); in dowrite()
618 if (ret == (off_t)-1) { in dowrite()
622 iret = write(fd, good_buf + offset, size); in dowrite()
624 if (iret == -1) in dowrite()
627 prt("short write: 0x%x bytes instead of 0x%x\n", in dowrite()
635 domapwrite(unsigned offset, unsigned size) in domapwrite() argument
642 offset -= offset % writebdy; in domapwrite()
646 log4(OP_SKIPPED, OP_MAPWRITE, offset, size); in domapwrite()
651 log4(OP_MAPWRITE, offset, size, 0); in domapwrite()
653 gendata(offset, size); in domapwrite()
654 if (file_size < offset + size) { in domapwrite()
655 if (file_size < offset) in domapwrite()
656 memset(good_buf + file_size, '\0', offset - file_size); in domapwrite()
657 file_size = offset + size; in domapwrite()
670 (monitorstart == -1 || in domapwrite()
671 (offset + size > monitorstart && in domapwrite()
672 (monitorend == -1 || offset <= monitorend)))))) in domapwrite()
673 prt("%lu mapwrite\t0x%x thru\t0x%x\t(0x%x bytes)\n", testcalls, in domapwrite()
674 offset, offset + size - 1, size); in domapwrite()
677 if (ftruncate(fd, file_size) == -1) { in domapwrite()
682 pg_offset = offset & page_mask; in domapwrite()
687 (off_t)(offset - pg_offset))) == MAP_FAILED) { in domapwrite()
691 memcpy(p + pg_offset, good_buf + offset, size); in domapwrite()
697 check_eofpage("Write", offset, p, size); in domapwrite()
711 size -= size % truncbdy; in dotruncate()
715 prt("truncating to largest ever: 0x%x\n", size); in dotruncate()
721 memset(good_buf + file_size, '\0', size - file_size); in dotruncate()
728 (debug && (monitorstart == -1 || monitorend == -1 || in dotruncate()
730 prt("%lu trunc\tfrom 0x%x to 0x%x\n", testcalls, oldsize, size); in dotruncate()
731 if (ftruncate(fd, (off_t)size) == -1) { in dotruncate()
732 prt("ftruncate1: %x\n", size); in dotruncate()
744 if (lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) { in writefileimage()
750 if (iret == -1) in writefileimage()
753 prt("short write: 0x%x bytes instead of 0x%llx\n", in writefileimage()
757 if (lite ? 0 : ftruncate(fd, file_size) == -1) { in writefileimage()
818 off_t offset; in test() local
859 offset = random(); in test()
861 offset %= maxfilelen; in test()
862 if (offset + size > maxfilelen) in test()
863 size = maxfilelen - offset; in test()
865 domapwrite(offset, size); in test()
867 dowrite(offset, size); in test()
870 offset %= file_size; in test()
872 offset = 0; in test()
873 if (offset + size > file_size) in test()
874 size = file_size - offset; in test()
876 domapread(offset, size); in test()
878 doread(offset, size); in test()
906 …-dnqLOW] [-b opnum] [-c Prob] [-l flen] [-m start:end] [-o oplen] [-p progressinterval] [-r readbd… in usage()
907 -b opnum: beginning operation number (default 1)\n\ in usage()
908 -c P: 1 in P chance of file close+open at each op (default infinity)\n\ in usage()
909 -d: debug output for all operations\n\ in usage()
910 -i P: 1 in P chance of calling msync(MS_INVALIDATE) (default infinity)\n\ in usage()
911 -l flen: the upper bound on file size (default 262144, max 2147483647)\n\ in usage()
912 -m startop:endop: monitor (print debug output) specified byte range (default 0:infinity)\n\ in usage()
913 -n: no verifications of file size\n\ in usage()
914 -o oplen: the upper bound on operation size (default 65536)\n\ in usage()
915 -p progressinterval: debug output at specified operation interval\n\ in usage()
916 -q: quieter operation\n\ in usage()
917 -r readbdy: 4096 would make reads page aligned (default 1)\n\ in usage()
918 -s style: 1 gives smaller truncates (default 0)\n\ in usage()
919 -t truncbdy: 4096 would make truncates page aligned (default 1)\n\ in usage()
920 -w writebdy: 4096 would make writes page aligned (default 1)\n\ in usage()
921 -D startingop: debug output starting at specified operation\n\ in usage()
922 -L: fsxLite - no file creations & no file size changes\n\ in usage()
923 -N numops: total # operations to do (default infinity)\n\ in usage()
924 -O: use oplen (see -o flag) for every op (default random)\n\ in usage()
925 -P dirpath: save .fsxlog and .fsxgood files in dirpath (default ./)\n\ in usage()
926 -S seed: for random # generator (default 1) 0 gets timestamp\n\ in usage()
927 -W: mapped write operations DISabled\n\ in usage()
928 -R: mapped read operations DISabled)\n\ in usage()
929 -U: msync after mapped write operations DISabled\n\ in usage()
938 long long ret = -1; in getnum()
947 return (-1); in getnum()
954 return (-1); in getnum()
961 return (-1); in getnum()
968 return (-1); in getnum()
974 return (-1); in getnum()
993 page_mask = page_size - 1; in main()
998 "b:c:di:l:m:no:p:qr:s:t:w:D:LN:OP:RS:UW")) != -1) in main()
1007 simulatedopcount -= 1; in main()
1045 monitorend = -1; /* aka infinity */ in main()
1137 argc -= optind; in main()
1178 if (file_size == (off_t)-1) { in main()
1184 if (ret == (off_t)-1) { in main()
1202 if (written == -1) { in main()
1206 warn("main: short write, 0x%x bytes instead of 0x%lx\n", in main()
1213 while (numops == -1 || numops--) in main()
1220 prt("All operations completed A-OK!\n"); in main()