annotate direct/dtest.c @ 215:b08276bd7b2d

Clean up some yaffs1 mode issues.
author charles
date Wed, 02 Jul 2008 21:17:41 +0100
parents fad21fd1971d
children 6dbe40ae9e54
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
173
1c249b949b11 normalise licence headers
wookey
parents: 168
diff changeset
1 /*
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
2 * YAFFS: Yet another FFS. A NAND-flash specific file system.
173
1c249b949b11 normalise licence headers
wookey
parents: 168
diff changeset
3 *
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
4 * Copyright (C) 2002 Aleph One Ltd.
173
1c249b949b11 normalise licence headers
wookey
parents: 168
diff changeset
5 * for Toby Churchill Ltd and Brightstar Engineering
1c249b949b11 normalise licence headers
wookey
parents: 168
diff changeset
6 *
1c249b949b11 normalise licence headers
wookey
parents: 168
diff changeset
7 * Created by Charles Manning <charles@aleph1.co.uk>
1c249b949b11 normalise licence headers
wookey
parents: 168
diff changeset
8 *
1c249b949b11 normalise licence headers
wookey
parents: 168
diff changeset
9 * This program is free software; you can redistribute it and/or modify
1c249b949b11 normalise licence headers
wookey
parents: 168
diff changeset
10 * it under the terms of the GNU General Public License version 2 as
1c249b949b11 normalise licence headers
wookey
parents: 168
diff changeset
11 * published by the Free Software Foundation.
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
12 *
173
1c249b949b11 normalise licence headers
wookey
parents: 168
diff changeset
13 */
1c249b949b11 normalise licence headers
wookey
parents: 168
diff changeset
14
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
15
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
16
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
17
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
18 #include <stdio.h>
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
19 #include <string.h>
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
20 #include <unistd.h>
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
21 #include <fcntl.h>
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
22
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
23 #include "yaffsfs.h"
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
24
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
25 void dumpDir(const char *dname);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
26
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
27 char xx[600];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
28
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
29 void copy_in_a_file(char *yaffsName,char *inName)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
30 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
31 int inh,outh;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
32 unsigned char buffer[100];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
33 int ni,no;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
34 inh = open(inName,O_RDONLY);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
35 outh = yaffs_open(yaffsName, O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
36
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
37 while((ni = read(inh,buffer,100)) > 0)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
38 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
39 no = yaffs_write(outh,buffer,ni);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
40 if(ni != no)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
41 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
42 printf("problem writing yaffs file\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
43 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
44
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
45 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
46
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
47 yaffs_close(outh);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
48 close(inh);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
49 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
50
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
51 void make_a_file(char *yaffsName,char bval,int sizeOfFile)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
52 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
53 int outh;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
54 int i;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
55 unsigned char buffer[100];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
56
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
57 outh = yaffs_open(yaffsName, O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
58
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
59 memset(buffer,bval,100);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
60
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
61 do{
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
62 i = sizeOfFile;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
63 if(i > 100) i = 100;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
64 sizeOfFile -= i;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
65
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
66 yaffs_write(outh,buffer,i);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
67
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
68 } while (sizeOfFile > 0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
69
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
70
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
71 yaffs_close(outh);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
72
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
73 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
74
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
75 void make_pattern_file(char *fn,int size)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
76 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
77 int outh;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
78 int marker;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
79 int i;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
80 outh = yaffs_open(fn, O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
81 yaffs_lseek(outh,size-1,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
82 yaffs_write(outh,"A",1);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
83
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
84 for(i = 0; i < size; i+=256)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
85 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
86 marker = ~i;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
87 yaffs_lseek(outh,i,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
88 yaffs_write(outh,&marker,sizeof(marker));
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
89 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
90 yaffs_close(outh);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
91
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
92 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
93
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
94 int check_pattern_file(char *fn)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
95 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
96 int h;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
97 int marker;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
98 int i;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
99 int size;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
100 int ok = 1;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
101
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
102 h = yaffs_open(fn, O_RDWR,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
103 size = yaffs_lseek(h,0,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
104
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
105 for(i = 0; i < size; i+=256)
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
106 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
107 yaffs_lseek(h,i,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
108 yaffs_read(h,&marker,sizeof(marker));
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
109 ok = (marker == ~i);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
110 if(!ok)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
111 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
112 printf("pattern check failed on file %s, size %d at position %d. Got %x instead of %x\n",
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
113 fn,size,i,marker,~i);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
114 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
115 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
116 yaffs_close(h);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
117 return ok;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
118 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
119
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
120
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
121
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
122
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
123
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
124 int dump_file_data(char *fn)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
125 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
126 int h;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
127 int i = 0;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
128 int ok = 1;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
129 unsigned char b;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
130
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
131 h = yaffs_open(fn, O_RDWR,0);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
132
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
133
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
134 printf("%s\n",fn);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
135 while(yaffs_read(h,&b,1)> 0)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
136 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
137 printf("%02x",b);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
138 i++;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
139 if(i > 32)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
140 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
141 printf("\n");
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
142 i = 0;;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
143 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
144 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
145 printf("\n");
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
146 yaffs_close(h);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
147 return ok;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
148 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
149
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
150
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
151
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
152 void dump_file(const char *fn)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
153 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
154 int i;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
155 int size;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
156 int h;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
157
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
158 h = yaffs_open(fn,O_RDONLY,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
159 if(h < 0)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
160 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
161 printf("*****\nDump file %s does not exist\n",fn);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
162 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
163 else
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
164 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
165 size = yaffs_lseek(h,0,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
166 printf("*****\nDump file %s size %d\n",fn,size);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
167 for(i = 0; i < size; i++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
168 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
169
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
170 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
171 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
172 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
173
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
174 void create_file_of_size(const char *fn,int syze)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
175 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
176 int h;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
177 int n;
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
178 int result;
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
179
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
180 char xx[200];
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
181
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
182 int iterations = (syze + strlen(fn) -1)/ strlen(fn);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
183
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
184 h = yaffs_open(fn, O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
185
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
186 while (iterations > 0)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
187 {
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
188 sprintf(xx,"%s %8d",fn,iterations);
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
189 n = strlen(xx);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
190 result = yaffs_write(h,xx,n);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
191 if(result != n)
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
192 printf("Wrote %d, should have been %d\n",result,n);
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
193 iterations--;
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
194 }
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
195 yaffs_close (h);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
196 }
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
197
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
198 void verify_file_of_size(const char *fn,int syze)
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
199 {
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
200 int h;
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
201 int result;
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
202
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
203 char xx[200];
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
204 char yy[200];
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
205 int l;
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
206
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
207 int iterations = (syze + strlen(fn) -1)/ strlen(fn);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
208
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
209 h = yaffs_open(fn, O_RDONLY, S_IREAD | S_IWRITE);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
210
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
211 while (iterations > 0)
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
212 {
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
213 sprintf(xx,"%s %8d",fn,iterations);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
214 l = strlen(xx);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
215
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
216 result = yaffs_read(h,yy,l);
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
217 yy[l] = 0;
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
218
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
219 if(strcmp(xx,yy)){
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
220 printf("=====>>>>> verification of file %s failed near position %lld\n",fn,(long long)yaffs_lseek(h,0,SEEK_CUR));
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
221 }
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
222 iterations--;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
223 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
224 yaffs_close (h);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
225 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
226
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
227 void create_resized_file_of_size(const char *fn,int syze1,int reSyze, int syze2)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
228 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
229 int h;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
230
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
231 int iterations;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
232
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
233 h = yaffs_open(fn, O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
234
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
235 iterations = (syze1 + strlen(fn) -1)/ strlen(fn);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
236 while (iterations > 0)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
237 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
238 yaffs_write(h,fn,strlen(fn));
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
239 iterations--;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
240 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
241
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
242 yaffs_ftruncate(h,reSyze);
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
243
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
244 yaffs_lseek(h,0,SEEK_SET);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
245 iterations = (syze2 + strlen(fn) -1)/ strlen(fn);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
246 while (iterations > 0)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
247 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
248 yaffs_write(h,fn,strlen(fn));
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
249 iterations--;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
250 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
251
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
252 yaffs_close (h);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
253 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
254
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
255
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
256 void do_some_file_stuff(const char *path)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
257 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
258
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
259 char fn[100];
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
260
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
261 sprintf(fn,"%s/%s",path,"f1");
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
262 create_file_of_size(fn,10000);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
263
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
264 sprintf(fn,"%s/%s",path,"fdel");
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
265 create_file_of_size(fn,10000);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
266 yaffs_unlink(fn);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
267
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
268 sprintf(fn,"%s/%s",path,"f2");
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
269
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
270 create_resized_file_of_size(fn,10000,3000,4000);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
271 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
272
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
273 void yaffs_backward_scan_test(const char *path)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
274 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
275 char fn[100];
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
276
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
277 yaffs_StartUp();
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
278
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
279 yaffs_mount(path);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
280
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
281 do_some_file_stuff(path);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
282
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
283 sprintf(fn,"%s/ddd",path);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
284
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
285 yaffs_mkdir(fn,0);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
286
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
287 do_some_file_stuff(fn);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
288
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
289 yaffs_unmount(path);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
290
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
291 yaffs_mount(path);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
292 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
293
127
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
294 char xxzz[2000];
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
295
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
296
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
297 void yaffs_device_flush_test(const char *path)
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
298 {
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
299 char fn[100];
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
300 int h;
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
301 int i;
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
302
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
303 yaffs_StartUp();
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
304
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
305 yaffs_mount(path);
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
306
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
307 do_some_file_stuff(path);
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
308
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
309 // Open and add some data to a few files
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
310 for(i = 0; i < 10; i++) {
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
311
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
312 sprintf(fn,"%s/ff%d",path,i);
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
313
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
314 h = yaffs_open(fn, O_CREAT | O_RDWR | O_TRUNC, S_IWRITE | S_IREAD);
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
315 yaffs_write(h,xxzz,2000);
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
316 yaffs_write(h,xxzz,2000);
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
317 }
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
318 yaffs_unmount(path);
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
319
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
320 yaffs_mount(path);
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
321 }
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
322
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
323
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
324
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
325 void short_scan_test(const char *path, int fsize, int niterations)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
326 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
327 int i;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
328 char fn[100];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
329
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
330 sprintf(fn,"%s/%s",path,"f1");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
331
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
332 yaffs_StartUp();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
333 for(i = 0; i < niterations; i++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
334 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
335 printf("\n*****************\nIteration %d\n",i);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
336 yaffs_mount(path);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
337 printf("\nmount: Directory look-up of %s\n",path);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
338 dumpDir(path);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
339 make_a_file(fn,1,fsize);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
340 yaffs_unmount(path);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
341 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
342 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
343
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
344
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
345
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
346 void scan_pattern_test(const char *path, int fsize, int niterations)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
347 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
348 int i;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
349 int j;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
350 char fn[3][100];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
351 int result;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
352
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
353 sprintf(fn[0],"%s/%s",path,"f0");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
354 sprintf(fn[1],"%s/%s",path,"f1");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
355 sprintf(fn[2],"%s/%s",path,"f2");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
356
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
357 yaffs_StartUp();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
358
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
359 for(i = 0; i < niterations; i++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
360 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
361 printf("\n*****************\nIteration %d\n",i);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
362 yaffs_mount(path);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
363 printf("\nmount: Directory look-up of %s\n",path);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
364 dumpDir(path);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
365 for(j = 0; j < 3; j++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
366 {
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
367 result = dump_file_data(fn[j]);
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
368 result = check_pattern_file(fn[j]);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
369 make_pattern_file(fn[j],fsize);
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
370 result = dump_file_data(fn[j]);
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
371 result = check_pattern_file(fn[j]);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
372 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
373 yaffs_unmount(path);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
374 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
375 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
376
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
377 void fill_disk(const char *path,int nfiles)
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
378 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
379 int h;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
380 int n;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
381 int result;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
382 int f;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
383
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
384 char str[50];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
385
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
386 for(n = 0; n < nfiles; n++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
387 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
388 sprintf(str,"%s/%d",path,n);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
389
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
390 h = yaffs_open(str, O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
391
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
392 printf("writing file %s handle %d ",str, h);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
393
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
394 while ((result = yaffs_write(h,xx,600)) == 600)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
395 {
23
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
396 f = yaffs_freespace(path);
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
397 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
398 result = yaffs_close(h);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
399 printf(" close %d\n",result);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
400 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
401 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
402
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
403 void fill_disk_and_delete(const char *path, int nfiles, int ncycles)
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
404 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
405 int i,j;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
406 char str[50];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
407 int result;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
408
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
409 for(i = 0; i < ncycles; i++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
410 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
411 printf("@@@@@@@@@@@@@@ cycle %d\n",i);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
412 fill_disk(path,nfiles);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
413
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
414 for(j = 0; j < nfiles; j++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
415 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
416 sprintf(str,"%s/%d",path,j);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
417 result = yaffs_unlink(str);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
418 printf("unlinking file %s, result %d\n",str,result);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
419 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
420 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
421 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
422
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
423
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
424 void fill_files(char *path,int flags, int maxIterations,int siz)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
425 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
426 int i;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
427 int j;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
428 char str[50];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
429 int h;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
430
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
431 i = 0;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
432
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
433 do{
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
434 sprintf(str,"%s/%d",path,i);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
435 h = yaffs_open(str, O_CREAT | O_TRUNC | O_RDWR,S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
436 yaffs_close(h);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
437
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
438 if(h >= 0)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
439 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
440 for(j = 0; j < siz; j++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
441 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
442 yaffs_write(h,str,1);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
443 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
444 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
445
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
446 if( flags & 1)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
447 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
448 yaffs_unlink(str);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
449 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
450 i++;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
451 } while(h >= 0 && i < maxIterations);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
452
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
453 if(flags & 2)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
454 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
455 i = 0;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
456 do{
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
457 sprintf(str,"%s/%d",path,i);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
458 printf("unlink %s\n",str);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
459 i++;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
460 } while(yaffs_unlink(str) >= 0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
461 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
462 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
463
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
464 void leave_unlinked_file(char *path,int maxIterations,int siz)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
465 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
466 int i;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
467 char str[50];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
468 int h;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
469
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
470 i = 0;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
471
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
472 do{
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
473 sprintf(str,"%s/%d",path,i);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
474 printf("create %s\n",str);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
475 h = yaffs_open(str, O_CREAT | O_TRUNC | O_RDWR,S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
476 if(h >= 0)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
477 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
478 yaffs_unlink(str);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
479 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
480 i++;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
481 } while(h < 0 && i < maxIterations);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
482
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
483 if(h >= 0)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
484 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
485 for(i = 0; i < siz; i++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
486 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
487 yaffs_write(h,str,1);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
488 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
489 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
490
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
491 printf("Leaving file %s open\n",str);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
492
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
493 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
494
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
495 void dumpDirFollow(const char *dname)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
496 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
497 yaffs_DIR *d;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
498 yaffs_dirent *de;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
499 struct yaffs_stat s;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
500 char str[100];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
501
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
502 d = yaffs_opendir(dname);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
503
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
504 if(!d)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
505 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
506 printf("opendir failed\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
507 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
508 else
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
509 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
510 while((de = yaffs_readdir(d)) != NULL)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
511 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
512 sprintf(str,"%s/%s",dname,de->d_name);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
513
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
514 yaffs_stat(str,&s);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
515
215
b08276bd7b2d Clean up some yaffs1 mode issues.
charles
parents: 211
diff changeset
516 printf("%s ino %d length %d mode %X ",de->d_name,(int)s.st_ino,(int)s.st_size,s.st_mode);
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
517 switch(s.st_mode & S_IFMT)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
518 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
519 case S_IFREG: printf("data file"); break;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
520 case S_IFDIR: printf("directory"); break;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
521 case S_IFLNK: printf("symlink -->");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
522 if(yaffs_readlink(str,str,100) < 0)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
523 printf("no alias");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
524 else
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
525 printf("\"%s\"",str);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
526 break;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
527 default: printf("unknown"); break;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
528 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
529
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
530 printf("\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
531 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
532
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
533 yaffs_closedir(d);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
534 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
535 printf("\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
536
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
537 printf("Free space in %s is %d\n\n",dname,(int)yaffs_freespace(dname));
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
538
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
539 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
540
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
541
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
542 void dump_directory_tree_worker(const char *dname,int recursive)
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
543 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
544 yaffs_DIR *d;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
545 yaffs_dirent *de;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
546 struct yaffs_stat s;
157
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
547 char str[1000];
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
548
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
549 d = yaffs_opendir(dname);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
550
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
551 if(!d)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
552 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
553 printf("opendir failed\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
554 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
555 else
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
556 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
557 while((de = yaffs_readdir(d)) != NULL)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
558 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
559 sprintf(str,"%s/%s",dname,de->d_name);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
560
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
561 yaffs_lstat(str,&s);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
562
157
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
563 printf("%s inode %d obj %x length %d mode %X ",str,s.st_ino,de->d_dont_use,(int)s.st_size,s.st_mode);
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
564 switch(s.st_mode & S_IFMT)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
565 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
566 case S_IFREG: printf("data file"); break;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
567 case S_IFDIR: printf("directory"); break;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
568 case S_IFLNK: printf("symlink -->");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
569 if(yaffs_readlink(str,str,100) < 0)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
570 printf("no alias");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
571 else
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
572 printf("\"%s\"",str);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
573 break;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
574 default: printf("unknown"); break;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
575 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
576
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
577 printf("\n");
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
578
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
579 if((s.st_mode & S_IFMT) == S_IFDIR && recursive)
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
580 dump_directory_tree_worker(str,1);
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
581
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
582 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
583
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
584 yaffs_closedir(d);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
585 }
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
586
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
587 }
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
588
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
589 static void dump_directory_tree(const char *dname)
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
590 {
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
591 dump_directory_tree_worker(dname,1);
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
592 printf("\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
593 printf("Free space in %s is %d\n\n",dname,(int)yaffs_freespace(dname));
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
594 }
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
595
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
596 void dumpDir(const char *dname)
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
597 { dump_directory_tree_worker(dname,0);
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
598 printf("\n");
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
599 printf("Free space in %s is %d\n\n",dname,(int)yaffs_freespace(dname));
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
600 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
601
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
602
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
603 static void PermissionsCheck(const char *path, mode_t tmode, int tflags,int expectedResult)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
604 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
605 int fd;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
606
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
607 if(yaffs_chmod(path,tmode)< 0) printf("chmod failed\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
608
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
609 fd = yaffs_open(path,tflags,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
610
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
611 if((fd >= 0) != (expectedResult > 0))
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
612 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
613 printf("Permissions check %x %x %d failed\n",tmode,tflags,expectedResult);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
614 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
615 else
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
616 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
617 printf("Permissions check %x %x %d OK\n",tmode,tflags,expectedResult);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
618 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
619
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
620
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
621 yaffs_close(fd);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
622
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
623
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
624 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
625
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
626 int long_test(int argc, char *argv[])
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
627 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
628
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
629 int f;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
630 int r;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
631 char buffer[20];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
632
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
633 char str[100];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
634
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
635 int h;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
636 mode_t temp_mode;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
637 struct yaffs_stat ystat;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
638
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
639 yaffs_StartUp();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
640
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
641 yaffs_mount("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
642 yaffs_mount("/data");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
643 yaffs_mount("/flash");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
644 yaffs_mount("/ram");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
645
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
646 printf("\nDirectory look-up of /boot\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
647 dumpDir("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
648 printf("\nDirectory look-up of /data\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
649 dumpDir("/data");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
650 printf("\nDirectory look-up of /flash\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
651 dumpDir("/flash");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
652
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
653 //leave_unlinked_file("/flash",20000,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
654 //leave_unlinked_file("/data",20000,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
655
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
656 leave_unlinked_file("/ram",20,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
657
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
658
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
659 f = yaffs_open("/boot/b1", O_RDONLY,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
660
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
661 printf("open /boot/b1 readonly, f=%d\n",f);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
662
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
663 f = yaffs_open("/boot/b1", O_CREAT,S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
664
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
665 printf("open /boot/b1 O_CREAT, f=%d\n",f);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
666
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
667
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
668 r = yaffs_write(f,"hello",1);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
669 printf("write %d attempted to write to a read-only file\n",r);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
670
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
671 r = yaffs_close(f);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
672
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
673 printf("close %d\n",r);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
674
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
675 f = yaffs_open("/boot/b1", O_RDWR,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
676
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
677 printf("open /boot/b1 O_RDWR,f=%d\n",f);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
678
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
679
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
680 r = yaffs_write(f,"hello",2);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
681 printf("write %d attempted to write to a writeable file\n",r);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
682 r = yaffs_write(f,"world",3);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
683 printf("write %d attempted to write to a writeable file\n",r);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
684
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
685 r= yaffs_lseek(f,0,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
686 printf("seek end %d\n",r);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
687 memset(buffer,0,20);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
688 r = yaffs_read(f,buffer,10);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
689 printf("read %d \"%s\"\n",r,buffer);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
690 r= yaffs_lseek(f,0,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
691 printf("seek set %d\n",r);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
692 memset(buffer,0,20);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
693 r = yaffs_read(f,buffer,10);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
694 printf("read %d \"%s\"\n",r,buffer);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
695 memset(buffer,0,20);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
696 r = yaffs_read(f,buffer,10);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
697 printf("read %d \"%s\"\n",r,buffer);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
698
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
699 // Check values reading at end.
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
700 // A read past end of file should return 0 for 0 bytes read.
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
701
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
702 r= yaffs_lseek(f,0,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
703 r = yaffs_read(f,buffer,10);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
704 printf("read at end returned %d\n",r);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
705 r= yaffs_lseek(f,500,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
706 r = yaffs_read(f,buffer,10);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
707 printf("read past end returned %d\n",r);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
708
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
709 r = yaffs_close(f);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
710
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
711 printf("close %d\n",r);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
712
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
713 copy_in_a_file("/boot/yyfile","xxx");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
714
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
715 // Create a file with a long name
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
716
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
717 copy_in_a_file("/boot/file with a long name","xxx");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
718
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
719
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
720 printf("\nDirectory look-up of /boot\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
721 dumpDir("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
722
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
723 // Check stat
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
724 r = yaffs_stat("/boot/file with a long name",&ystat);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
725
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
726 // Check rename
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
727
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
728 r = yaffs_rename("/boot/file with a long name","/boot/r1");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
729
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
730 printf("\nDirectory look-up of /boot\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
731 dumpDir("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
732
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
733 // Check unlink
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
734 r = yaffs_unlink("/boot/r1");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
735
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
736 printf("\nDirectory look-up of /boot\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
737 dumpDir("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
738
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
739 // Check mkdir
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
740
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
741 r = yaffs_mkdir("/boot/directory1",0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
742
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
743 printf("\nDirectory look-up of /boot\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
744 dumpDir("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
745 printf("\nDirectory look-up of /boot/directory1\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
746 dumpDir("/boot/directory1");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
747
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
748 // add a file to the directory
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
749 copy_in_a_file("/boot/directory1/file with a long name","xxx");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
750
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
751 printf("\nDirectory look-up of /boot\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
752 dumpDir("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
753 printf("\nDirectory look-up of /boot/directory1\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
754 dumpDir("/boot/directory1");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
755
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
756 // Attempt to delete directory (should fail)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
757
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
758 r = yaffs_rmdir("/boot/directory1");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
759
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
760 printf("\nDirectory look-up of /boot\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
761 dumpDir("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
762 printf("\nDirectory look-up of /boot/directory1\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
763 dumpDir("/boot/directory1");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
764
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
765 // Delete file first, then rmdir should work
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
766 r = yaffs_unlink("/boot/directory1/file with a long name");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
767 r = yaffs_rmdir("/boot/directory1");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
768
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
769
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
770 printf("\nDirectory look-up of /boot\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
771 dumpDir("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
772 printf("\nDirectory look-up of /boot/directory1\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
773 dumpDir("/boot/directory1");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
774
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
775 #if 0
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
776 fill_disk_and_delete("/boot",20,20);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
777
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
778 printf("\nDirectory look-up of /boot\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
779 dumpDir("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
780 #endif
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
781
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
782 yaffs_symlink("yyfile","/boot/slink");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
783
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
784 yaffs_readlink("/boot/slink",str,100);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
785 printf("symlink alias is %s\n",str);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
786
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
787
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
788
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
789
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
790 printf("\nDirectory look-up of /boot\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
791 dumpDir("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
792 printf("\nDirectory look-up of /boot (using stat instead of lstat)\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
793 dumpDirFollow("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
794 printf("\nDirectory look-up of /boot/directory1\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
795 dumpDir("/boot/directory1");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
796
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
797 h = yaffs_open("/boot/slink",O_RDWR,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
798
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
799 printf("file length is %d\n",(int)yaffs_lseek(h,0,SEEK_END));
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
800
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
801 yaffs_close(h);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
802
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
803 yaffs_unlink("/boot/slink");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
804
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
805
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
806 printf("\nDirectory look-up of /boot\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
807 dumpDir("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
808
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
809 // Check chmod
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
810
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
811 yaffs_stat("/boot/yyfile",&ystat);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
812 temp_mode = ystat.st_mode;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
813
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
814 yaffs_chmod("/boot/yyfile",0x55555);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
815 printf("\nDirectory look-up of /boot\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
816 dumpDir("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
817
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
818 yaffs_chmod("/boot/yyfile",temp_mode);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
819 printf("\nDirectory look-up of /boot\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
820 dumpDir("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
821
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
822 // Permission checks...
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
823 PermissionsCheck("/boot/yyfile",0, O_WRONLY,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
824 PermissionsCheck("/boot/yyfile",0, O_RDONLY,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
825 PermissionsCheck("/boot/yyfile",0, O_RDWR,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
826
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
827 PermissionsCheck("/boot/yyfile",S_IREAD, O_WRONLY,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
828 PermissionsCheck("/boot/yyfile",S_IREAD, O_RDONLY,1);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
829 PermissionsCheck("/boot/yyfile",S_IREAD, O_RDWR,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
830
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
831 PermissionsCheck("/boot/yyfile",S_IWRITE, O_WRONLY,1);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
832 PermissionsCheck("/boot/yyfile",S_IWRITE, O_RDONLY,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
833 PermissionsCheck("/boot/yyfile",S_IWRITE, O_RDWR,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
834
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
835 PermissionsCheck("/boot/yyfile",S_IREAD | S_IWRITE, O_WRONLY,1);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
836 PermissionsCheck("/boot/yyfile",S_IREAD | S_IWRITE, O_RDONLY,1);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
837 PermissionsCheck("/boot/yyfile",S_IREAD | S_IWRITE, O_RDWR,1);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
838
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
839 yaffs_chmod("/boot/yyfile",temp_mode);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
840
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
841 //create a zero-length file and unlink it (test for scan bug)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
842
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
843 h = yaffs_open("/boot/zlf",O_CREAT | O_TRUNC | O_RDWR,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
844 yaffs_close(h);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
845
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
846 yaffs_unlink("/boot/zlf");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
847
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
848
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
849 yaffs_DumpDevStruct("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
850
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
851 fill_disk_and_delete("/boot",20,20);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
852
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
853 yaffs_DumpDevStruct("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
854
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
855 fill_files("/boot",1,10000,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
856 fill_files("/boot",1,10000,5000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
857 fill_files("/boot",2,10000,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
858 fill_files("/boot",2,10000,5000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
859
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
860 leave_unlinked_file("/data",20000,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
861 leave_unlinked_file("/data",20000,5000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
862 leave_unlinked_file("/data",20000,5000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
863 leave_unlinked_file("/data",20000,5000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
864 leave_unlinked_file("/data",20000,5000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
865 leave_unlinked_file("/data",20000,5000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
866
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
867 yaffs_DumpDevStruct("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
868 yaffs_DumpDevStruct("/data");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
869
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
870
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
871
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
872 return 0;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
873
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
874 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
875
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
876 int huge_directory_test_on_path(char *path)
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
877 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
878
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
879 yaffs_DIR *d;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
880 yaffs_dirent *de;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
881 struct yaffs_stat s;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
882
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
883 int f;
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
884 int i;
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
885
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
886 int total = 0;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
887 int lastTotal = 0;
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
888
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
889 char str[100];
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
890
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
891
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
892 yaffs_StartUp();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
893
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
894 yaffs_mount(path);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
895
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
896 // Create a large number of files
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
897
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
898 for(i = 0; i < 2000; i++)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
899 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
900 sprintf(str,"%s/%d",path,i);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
901
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
902 f = yaffs_open(str,O_CREAT,S_IREAD | S_IWRITE);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
903 yaffs_close(f);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
904 }
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
905
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
906
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
907
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
908 d = yaffs_opendir(path);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
909 i = 0;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
910 if (d) {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
911 while((de = yaffs_readdir(d)) != NULL) {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
912 if (total >lastTotal+100*9*1024||(i & 1023)==0){
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
913 printf("files = %d, total = %d\n",i, total);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
914 lastTotal = total;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
915 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
916 i++;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
917 sprintf(str,"%s/%s",path,de->d_name);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
918 yaffs_lstat(str,&s);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
919 switch(s.st_mode & S_IFMT){
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
920 case S_IFREG:
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
921 //printf("data file");
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
922 total += s.st_size;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
923 break;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
924 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
925 }
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
926
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
927 yaffs_closedir(d);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
928 }
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
929
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
930 return 0;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
931 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
932
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
933 int yaffs_scan_test(const char *path)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
934 {
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
935 return 0;
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
936 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
937
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
938
94
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
939 void rename_over_test(const char *mountpt)
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
940 {
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
941 int i;
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
942 char a[100];
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
943 char b[100];
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
944
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
945 sprintf(a,"%s/a",mountpt);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
946 sprintf(b,"%s/b",mountpt);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
947
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
948 yaffs_StartUp();
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
949
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
950 yaffs_mount(mountpt);
215
b08276bd7b2d Clean up some yaffs1 mode issues.
charles
parents: 211
diff changeset
951
b08276bd7b2d Clean up some yaffs1 mode issues.
charles
parents: 211
diff changeset
952 printf("Existing files\n");
b08276bd7b2d Clean up some yaffs1 mode issues.
charles
parents: 211
diff changeset
953 dumpDirFollow(mountpt);
b08276bd7b2d Clean up some yaffs1 mode issues.
charles
parents: 211
diff changeset
954
b08276bd7b2d Clean up some yaffs1 mode issues.
charles
parents: 211
diff changeset
955
94
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
956 i = yaffs_open(a,O_CREAT | O_TRUNC | O_RDWR, 0);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
957 yaffs_close(i);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
958 i = yaffs_open(b,O_CREAT | O_TRUNC | O_RDWR, 0);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
959 yaffs_close(i);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
960 yaffs_rename(a,b); // rename over
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
961 yaffs_rename(b,a); // rename back again (not renaimng over)
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
962 yaffs_rename(a,b); // rename back again (not renaimng over)
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
963
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
964
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
965 yaffs_unmount(mountpt);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
966
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
967 }
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
968
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
969 int resize_stress_test(const char *path)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
970 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
971 int a,b,i,j;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
972 int x;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
973 int r;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
974 char aname[100];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
975 char bname[100];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
976
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
977 char abuffer[1000];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
978 char bbuffer[1000];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
979
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
980 yaffs_StartUp();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
981
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
982 yaffs_mount(path);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
983
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
984 sprintf(aname,"%s%s",path,"/a");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
985 sprintf(bname,"%s%s",path,"/b");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
986
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
987 memset(abuffer,'a',1000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
988 memset(bbuffer,'b',1000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
989
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
990 a = yaffs_open(aname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
991 b = yaffs_open(bname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
992
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
993 printf(" %s %d %s %d\n",aname,a,bname,b);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
994
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
995 x = 0;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
996
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
997 for(j = 0; j < 100; j++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
998 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
999 yaffs_lseek(a,0,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1000
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1001
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1002 for(i = 0; i <20000; i++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1003 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1004 //r = yaffs_lseek(b,i,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1005 //r = yaffs_write(b,bbuffer,1000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1006
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1007 if(x & 0x16)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1008 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1009 // shrink
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1010 int syz = yaffs_lseek(a,0,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1011
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1012 syz -= 500;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1013 if(syz < 0) syz = 0;
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1014 yaffs_ftruncate(a,syz);
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1015
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1016 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1017 else
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1018 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1019 //expand
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1020 r = yaffs_lseek(a,i * 500,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1021 r = yaffs_write(a,abuffer,1000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1022 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1023 x++;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1024
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1025 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1026 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1027
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1028 return 0;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1029
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1030 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1031
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1032
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1033 int resize_stress_test_no_grow_complex(const char *path,int iters)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1034 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1035 int a,b,i,j;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1036 int x;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1037 int r;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1038 char aname[100];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1039 char bname[100];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1040
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1041 char abuffer[1000];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1042 char bbuffer[1000];
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1043
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1044
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1045 yaffs_StartUp();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1046
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1047 yaffs_mount(path);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1048
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1049 sprintf(aname,"%s%s",path,"/a");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1050 sprintf(bname,"%s%s",path,"/b");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1051
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1052 memset(abuffer,'a',1000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1053 memset(bbuffer,'b',1000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1054
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1055 a = yaffs_open(aname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1056 b = yaffs_open(bname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1057
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1058 printf(" %s %d %s %d\n",aname,a,bname,b);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1059
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1060 x = 0;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1061
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1062 for(j = 0; j < iters; j++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1063 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1064 yaffs_lseek(a,0,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1065
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1066
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1067 for(i = 0; i <20000; i++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1068 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1069 //r = yaffs_lseek(b,i,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1070 //r = yaffs_write(b,bbuffer,1000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1071
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1072 if(!(x%20))
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1073 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1074 // shrink
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1075 int syz = yaffs_lseek(a,0,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1076
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1077 while(syz > 4000)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1078 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1079
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1080 syz -= 2050;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1081 if(syz < 0) syz = 0;
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1082 yaffs_ftruncate(a,syz);
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1083 syz = yaffs_lseek(a,0,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1084 printf("shrink to %d\n",syz);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1085 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1086
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1087
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1088 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1089 else
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1090 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1091 //expand
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1092 r = yaffs_lseek(a,500,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1093 r = yaffs_write(a,abuffer,1000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1094 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1095 x++;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1096
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1097
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1098 }
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1099
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1100 printf("file size is %lld\n",(long long)yaffs_lseek(a,0,SEEK_END));
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1101
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1102 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1103
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1104 return 0;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1105
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1106 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1107
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1108 int resize_stress_test_no_grow(const char *path,int iters)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1109 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1110 int a,b,i,j;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1111 int x;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1112 int r;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1113 char aname[100];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1114 char bname[100];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1115
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1116 char abuffer[1000];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1117 char bbuffer[1000];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1118
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1119 yaffs_StartUp();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1120
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1121 yaffs_mount(path);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1122
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1123 sprintf(aname,"%s%s",path,"/a");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1124 sprintf(bname,"%s%s",path,"/b");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1125
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1126 memset(abuffer,'a',1000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1127 memset(bbuffer,'b',1000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1128
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1129 a = yaffs_open(aname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1130 b = yaffs_open(bname, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1131
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1132 printf(" %s %d %s %d\n",aname,a,bname,b);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1133
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1134 x = 0;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1135
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1136 for(j = 0; j < iters; j++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1137 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1138 yaffs_lseek(a,0,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1139
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1140
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1141 for(i = 0; i <20000; i++)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1142 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1143 //r = yaffs_lseek(b,i,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1144 //r = yaffs_write(b,bbuffer,1000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1145
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1146 if(!(x%20))
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1147 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1148 // shrink
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1149 int syz = yaffs_lseek(a,0,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1150
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1151 while(syz > 4000)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1152 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1153
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1154 syz -= 2050;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1155 if(syz < 0) syz = 0;
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1156 yaffs_ftruncate(a,syz);
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1157 syz = yaffs_lseek(a,0,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1158 printf("shrink to %d\n",syz);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1159 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1160
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1161
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1162 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1163 else
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1164 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1165 //expand
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1166 r = yaffs_lseek(a,-500,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1167 r = yaffs_write(a,abuffer,1000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1168 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1169 x++;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1170
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1171
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1172 }
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1173 printf("file size is %lld\n",(long long)yaffs_lseek(a,0,SEEK_END));
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1174
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1175 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1176
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1177 return 0;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1178
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1179 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1180
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1181 int directory_rename_test(void)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1182 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1183 int r;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1184 yaffs_StartUp();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1185
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1186 yaffs_mount("/ram");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1187 yaffs_mkdir("/ram/a",0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1188 yaffs_mkdir("/ram/a/b",0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1189 yaffs_mkdir("/ram/c",0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1190
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1191 printf("\nDirectory look-up of /ram\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1192 dumpDir("/ram");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1193 dumpDir("/ram/a");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1194 dumpDir("/ram/a/b");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1195
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1196 printf("Do rename (should fail)\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1197
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1198 r = yaffs_rename("/ram/a","/ram/a/b/d");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1199 printf("\nDirectory look-up of /ram\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1200 dumpDir("/ram");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1201 dumpDir("/ram/a");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1202 dumpDir("/ram/a/b");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1203
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1204 printf("Do rename (should not fail)\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1205
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1206 r = yaffs_rename("/ram/c","/ram/a/b/d");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1207 printf("\nDirectory look-up of /ram\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1208 dumpDir("/ram");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1209 dumpDir("/ram/a");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1210 dumpDir("/ram/a/b");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1211
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1212
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1213 return 1;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1214
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1215 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1216
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1217 int cache_read_test(void)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1218 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1219 int a,b,c;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1220 int i;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1221 int sizeOfFiles = 500000;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1222 char buffer[100];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1223
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1224 yaffs_StartUp();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1225
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1226 yaffs_mount("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1227
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1228 make_a_file("/boot/a",'a',sizeOfFiles);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1229 make_a_file("/boot/b",'b',sizeOfFiles);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1230
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1231 a = yaffs_open("/boot/a",O_RDONLY,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1232 b = yaffs_open("/boot/b",O_RDONLY,0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1233 c = yaffs_open("/boot/c", O_CREAT | O_RDWR | O_TRUNC, S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1234
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1235 do{
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1236 i = sizeOfFiles;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1237 if (i > 100) i = 100;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1238 sizeOfFiles -= i;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1239 yaffs_read(a,buffer,i);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1240 yaffs_read(b,buffer,i);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1241 yaffs_write(c,buffer,i);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1242 } while(sizeOfFiles > 0);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1243
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1244
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1245
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1246 return 1;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1247
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1248 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1249
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1250 int cache_bypass_bug_test(void)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1251 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1252 // This test reporoduces a bug whereby YAFFS caching *was* buypassed
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1253 // resulting in erroneous reads after writes.
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1254 // This bug has been fixed.
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1255
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1256 int a;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1257 char buffer1[1000];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1258 char buffer2[1000];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1259
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1260 memset(buffer1,0,sizeof(buffer1));
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1261 memset(buffer2,0,sizeof(buffer2));
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1262
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1263 yaffs_StartUp();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1264
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1265 yaffs_mount("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1266
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1267 // Create a file of 2000 bytes.
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1268 make_a_file("/boot/a",'X',2000);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1269
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1270 a = yaffs_open("/boot/a",O_RDWR, S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1271
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1272 // Write a short sequence to the file.
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1273 // This will go into the cache.
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1274 yaffs_lseek(a,0,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1275 yaffs_write(a,"abcdefghijklmnopqrstuvwxyz",20);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1276
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1277 // Read a short sequence from the file.
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1278 // This will come from the cache.
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1279 yaffs_lseek(a,0,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1280 yaffs_read(a,buffer1,30);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1281
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1282 // Read a page size sequence from the file.
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1283 yaffs_lseek(a,0,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1284 yaffs_read(a,buffer2,512);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1285
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1286 printf("buffer 1 %s\n",buffer1);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1287 printf("buffer 2 %s\n",buffer2);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1288
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1289 if(strncmp(buffer1,buffer2,20))
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1290 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1291 printf("Cache bypass bug detected!!!!!\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1292 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1293
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1294
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1295 return 1;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1296 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1297
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1298
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1299 int free_space_check(void)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1300 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1301 int f;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1302
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1303 yaffs_StartUp();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1304 yaffs_mount("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1305 fill_disk("/boot/",2);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1306 f = yaffs_freespace("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1307
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1308 printf("%d free when disk full\n",f);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1309 return 1;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1310 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1311
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1312 int truncate_test(void)
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1313 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1314 int a;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1315 int r;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1316 int i;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1317 int l;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1318
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1319 char y[10];
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1320
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1321 yaffs_StartUp();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1322 yaffs_mount("/boot");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1323
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1324 yaffs_unlink("/boot/trunctest");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1325
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1326 a = yaffs_open("/boot/trunctest", O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1327
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1328 yaffs_write(a,"abcdefghijklmnopqrstuvwzyz",26);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1329
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1330 yaffs_ftruncate(a,3);
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1331 l= yaffs_lseek(a,0,SEEK_END);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1332
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1333 printf("truncated length is %d\n",l);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1334
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1335 yaffs_lseek(a,5,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1336 yaffs_write(a,"1",1);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1337
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1338 yaffs_lseek(a,0,SEEK_SET);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1339
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1340 r = yaffs_read(a,y,10);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1341
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1342 printf("read %d bytes:",r);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1343
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1344 for(i = 0; i < r; i++) printf("[%02X]",y[i]);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1345
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1346 printf("\n");
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1347
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1348 return 0;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1349
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1350 }
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1351
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
1352
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1353
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1354
23
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1355
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1356 void fill_disk_test(const char *mountpt)
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1357 {
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1358 int i;
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1359 yaffs_StartUp();
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1360
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1361 for(i = 0; i < 5; i++)
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1362 {
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1363 yaffs_mount(mountpt);
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1364 fill_disk_and_delete(mountpt,100,i+1);
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1365 yaffs_unmount(mountpt);
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1366 }
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1367
12ec56e7ccfa Some tinkering on test harness and st_xxx to yst_xxx changes
charles
parents: 19
diff changeset
1368 }
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1369
94
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1370
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1371
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1372 void lookup_test(const char *mountpt)
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1373 {
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1374 int i;
94
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1375 int h;
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1376 char a[100];
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1377
94
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1378
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1379 yaffs_DIR *d;
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1380 yaffs_dirent *de;
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1381
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1382 yaffs_StartUp();
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1383
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1384 yaffs_mount(mountpt);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1385
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1386 d = yaffs_opendir(mountpt);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1387
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1388 if(!d)
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1389 {
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1390 printf("opendir failed\n");
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1391 }
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1392 else
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1393 {
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1394
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1395 for(i = 0; (de = yaffs_readdir(d)) != NULL; i++)
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1396 {
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1397 printf("unlinking %s\n",de->d_name);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1398 yaffs_unlink(de->d_name);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1399 }
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1400
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1401 printf("%d files deleted\n",i);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1402 }
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1403
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1404
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1405 for(i = 0; i < 2000; i++){
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1406 sprintf(a,"%s/%d",mountpt,i);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1407 h = yaffs_open(a,O_CREAT | O_TRUNC | O_RDWR, 0);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1408 yaffs_close(h);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1409 }
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1410
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1411 yaffs_rewinddir(d);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1412 for(i = 0; (de = yaffs_readdir(d)) != NULL; i++)
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1413 {
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1414 printf("%d %s\n",i,de->d_name);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1415 }
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1416
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1417 printf("%d files listed\n\n\n",i);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1418
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1419 yaffs_rewinddir(d);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1420 yaffs_readdir(d);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1421 yaffs_readdir(d);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1422 yaffs_readdir(d);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1423
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1424 for(i = 0; i < 2000; i++){
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1425 sprintf(a,"%s/%d",mountpt,i);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1426 yaffs_unlink(a);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1427 }
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1428
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1429
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1430 yaffs_unmount(mountpt);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1431
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1432 }
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1433
122
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1434 void link_test(const char *mountpt)
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1435 {
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1436 int i;
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1437 int h;
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1438 char a[100];
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1439 char b[100];
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1440 char c[100];
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1441
122
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1442 sprintf(a,"%s/aaa",mountpt);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1443 sprintf(b,"%s/bbb",mountpt);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1444 sprintf(c,"%s/ccc",mountpt);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1445
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1446 yaffs_StartUp();
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1447
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1448 yaffs_mount(mountpt);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1449
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1450
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1451 h = yaffs_open(a, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1452 for(i = 0; i < 100; i++)
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1453 yaffs_write(h,a,100);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1454
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1455 yaffs_close(h);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1456
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1457 yaffs_unlink(b);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1458 yaffs_unlink(c);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1459 yaffs_link(a,b);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1460 yaffs_link(a,c);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1461 yaffs_unlink(b);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1462 yaffs_unlink(c);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1463 yaffs_unlink(a);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1464
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1465
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1466 yaffs_unmount(mountpt);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1467 yaffs_mount(mountpt);
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1468
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1469 printf("link test done\n");
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1470
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1471 }
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
1472
94
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1473 void freespace_test(const char *mountpt)
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1474 {
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1475 int i;
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1476 int h;
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1477 char a[100];
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1478
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1479 int f0;
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1480 int f1;
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1481 int f2;
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1482 int f3;
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1483 sprintf(a,"%s/aaa",mountpt);
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1484
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1485 yaffs_StartUp();
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1486
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1487 yaffs_mount(mountpt);
94
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1488
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1489 f0 = yaffs_freespace(mountpt);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1490
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1491 h = yaffs_open(a, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1492
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1493 for(i = 0; i < 100; i++)
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1494 yaffs_write(h,a,100);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1495
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1496 yaffs_close(h);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1497
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1498 f1 = yaffs_freespace(mountpt);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1499
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1500 yaffs_unlink(a);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1501
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1502 f2 = yaffs_freespace(mountpt);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1503
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1504
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1505 yaffs_unmount(mountpt);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1506 yaffs_mount(mountpt);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1507
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1508 f3 = yaffs_freespace(mountpt);
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1509
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1510 printf("%d\n%d\n%d\n%d\n",f0, f1,f2,f3);
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1511
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1512
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1513 }
94
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1514
105
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1515 void simple_rw_test(const char *mountpt)
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1516 {
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1517 int i;
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1518 int h;
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1519 char a[100];
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1520
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1521 int x;
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1522 int result;
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1523
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1524 sprintf(a,"%s/aaa",mountpt);
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1525
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1526 yaffs_StartUp();
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1527
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1528 yaffs_mount(mountpt);
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1529
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1530 yaffs_unlink(a);
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1531
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1532 h = yaffs_open(a,O_CREAT| O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1533
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1534 for(i = 100000;i < 200000; i++){
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1535 result = yaffs_write(h,&i,sizeof(i));
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1536
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1537 if(result != 4)
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1538 {
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1539 printf("write error\n");
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1540 exit(1);
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1541 }
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1542 }
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1543
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1544 //yaffs_close(h);
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1545
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1546 // h = yaffs_open(a,O_RDWR, S_IREAD | S_IWRITE);
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1547
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1548
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1549 yaffs_lseek(h,0,SEEK_SET);
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1550
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1551 for(i = 100000; i < 200000; i++){
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1552 result = yaffs_read(h,&x,sizeof(x));
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1553
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1554 if(result != 4 || x != i){
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1555 printf("read error %d %x %x\n",i,result,x);
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1556 }
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1557 }
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1558
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1559 printf("Simple rw test passed\n");
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1560
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1561
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1562
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1563 }
632bc43b7e31 Wide tnode support
charles
parents: 94
diff changeset
1564
94
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1565
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1566 void scan_deleted_files_test(const char *mountpt)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1567 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1568 char fn[100];
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1569 char sub[100];
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1570
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1571 const char *p;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1572
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1573 int i;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1574 int j;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1575 int k;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1576 int h;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1577
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1578 sprintf(sub,"%s/sdir",mountpt);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1579 yaffs_StartUp();
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1580
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1581 for(j = 0; j < 10; j++)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1582 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1583 printf("\n\n>>>>>>> Run %d <<<<<<<<<<<<<\n\n",j);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1584 yaffs_mount(mountpt);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1585 yaffs_mkdir(sub,0);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1586
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1587
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1588 p = (j & 0) ? mountpt: sub;
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1589
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1590 for(i = 0; i < 100; i++)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1591 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1592 sprintf(fn,"%s/%d",p,i);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1593
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1594 if(i & 1)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1595 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1596 h = yaffs_open(fn,O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1597 for(k = 0; k < 1000; k++)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1598 yaffs_write(h,fn,100);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1599 yaffs_close(h);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1600 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1601 else
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1602 yaffs_mkdir(fn,0);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1603 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1604
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1605 for(i = 0; i < 10; i++)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1606 {
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1607 sprintf(fn,"%s/%d",p,i);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1608 if(i & 1)
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1609 yaffs_unlink(fn);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1610 else
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1611 yaffs_rmdir(fn);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1612
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1613 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1614
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1615 yaffs_unmount(mountpt);
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1616 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1617
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1618
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1619
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1620
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1621 }
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
1622
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1623
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1624 void write_10k(int h)
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1625 {
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1626 int i;
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1627 const char *s="0123456789";
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1628 for(i = 0; i < 1000; i++)
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1629 yaffs_write(h,s,10);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1630
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1631 }
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1632 void write_200k_file(const char *fn, const char *fdel, const char *fdel1)
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1633 {
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1634 int h1;
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1635 int i;
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1636 int offs;
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1637
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1638 h1 = yaffs_open(fn, O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1639
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1640 for(i = 0; i < 100000; i+= 10000)
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1641 {
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1642 write_10k(h1);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1643 }
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1644
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1645 offs = yaffs_lseek(h1,0,SEEK_CUR);
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1646 if( offs != 100000)
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1647 {
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1648 printf("Could not write file\n");
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1649 }
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1650
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1651 yaffs_unlink(fdel);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1652 for(i = 0; i < 100000; i+= 10000)
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1653 {
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1654 write_10k(h1);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1655 }
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1656
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1657 offs = yaffs_lseek(h1,0,SEEK_CUR);
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1658 if( offs != 200000)
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1659 {
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1660 printf("Could not write file\n");
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1661 }
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1662
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1663 yaffs_close(h1);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1664 yaffs_unlink(fdel1);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1665
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1666 }
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1667
94
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1668
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1669 void verify_200k_file(const char *fn)
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1670 {
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1671 int h1;
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1672 int i;
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1673 char x[11];
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1674 const char *s="0123456789";
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1675 int errCount = 0;
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1676
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1677 h1 = yaffs_open(fn, O_RDONLY, 0);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1678
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1679 for(i = 0; i < 200000 && errCount < 10; i+= 10)
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1680 {
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1681 yaffs_read(h1,x,10);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1682 if(strncmp(x,s,10) != 0)
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1683 {
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1684 printf("File %s verification failed at %d\n",fn,i);
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1685 errCount++;
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1686 }
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1687 }
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1688 if(errCount >= 10)
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1689 printf("Too many errors... aborted\n");
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1690
94
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
1691 yaffs_close(h1);
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1692
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1693 }
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1694
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1695
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1696 void check_resize_gc_bug(const char *mountpt)
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1697 {
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1698
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1699 char a[30];
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1700 char b[30];
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1701 char c[30];
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1702
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1703 int i;
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1704
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1705 sprintf(a,"%s/a",mountpt);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1706 sprintf(b,"%s/b",mountpt);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1707 sprintf(c,"%s/c",mountpt);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1708
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1709
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1710
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1711
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1712 yaffs_StartUp();
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1713 yaffs_mount(mountpt);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1714 yaffs_unlink(a);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1715 yaffs_unlink(b);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1716
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1717 for(i = 0; i < 50; i++)
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1718 {
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1719 printf("A\n");write_200k_file(a,"",c);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1720 printf("B\n");verify_200k_file(a);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1721 printf("C\n");write_200k_file(b,a,c);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1722 printf("D\n");verify_200k_file(b);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1723 yaffs_unmount(mountpt);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1724 yaffs_mount(mountpt);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1725 printf("E\n");verify_200k_file(a);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1726 printf("F\n");verify_200k_file(b);
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1727 }
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1728
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1729 }
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1730
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
1731
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1732 void multi_mount_test(const char *mountpt,int nmounts)
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1733 {
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1734
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1735 char a[30];
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1736
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1737 int i;
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1738 int j;
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1739
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1740 sprintf(a,"%s/a",mountpt);
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1741
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1742 yaffs_StartUp();
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1743
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1744 for(i = 0; i < nmounts; i++){
157
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1745 int h0;
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1746 int h1;
160
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1747 int len0;
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1748 int len1;
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1749
157
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1750 static char xx[1000];
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1751
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1752 printf("############### Iteration %d Start\n",i);
157
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1753 if(1 || i == 0 || i == 5)
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1754 yaffs_mount(mountpt);
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1755
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1756 dump_directory_tree(mountpt);
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1757
157
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1758
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1759 yaffs_mkdir(a,0);
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1760
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1761 sprintf(xx,"%s/0",a);
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1762 h0 = yaffs_open(xx, O_RDWR | O_CREAT | O_TRUNC, S_IREAD | S_IWRITE);
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1763
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1764 sprintf(xx,"%s/1",a);
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1765 h1 = yaffs_open(xx, O_RDWR | O_CREAT | O_TRUNC, S_IREAD | S_IWRITE);
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1766
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1767 #if 0
157
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1768 for(j = 0; j < 200; j++){
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1769 yaffs_write(h0,xx,1000);
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1770 yaffs_write(h1,xx,1000);
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1771 }
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1772 #else
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1773 while(yaffs_write(h0,xx,1000) > 0){
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1774
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1775 yaffs_write(h1,xx,1000);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1776 }
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1777 #endif
160
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1778 len0 = yaffs_lseek(h0,0,SEEK_END);
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1779 len1 = yaffs_lseek(h1,0,SEEK_END);
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1780
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1781 yaffs_lseek(h0,0,SEEK_SET);
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1782 yaffs_lseek(h1,0,SEEK_SET);
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1783
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1784 for(j = 0; j < 200; j++){
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1785 yaffs_read(h0,xx,1000);
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1786 yaffs_read(h1,xx,1000);
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1787 }
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1788
a7f45736ace4 More changes to test harness
charles
parents: 157
diff changeset
1789
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1790 // yaffs_truncate(h0,0);
157
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1791 yaffs_close(h0);
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1792 yaffs_close(h1);
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1793
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1794 printf("########### %d\n",i);
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1795 dump_directory_tree(mountpt);
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1796
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1797 if(1 || i == 4 || i == nmounts -1)
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
1798 yaffs_unmount(mountpt);
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1799 }
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1800 }
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1801
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
1802
167
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1803 void small_mount_test(const char *mountpt,int nmounts)
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1804 {
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1805
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1806 char a[30];
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1807
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1808 int i;
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1809 int j;
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1810
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1811 int h0;
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1812 int h1;
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1813 int len0;
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1814 int len1;
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1815 int nread;
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1816
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1817 sprintf(a,"%s/a",mountpt);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1818
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1819 yaffs_StartUp();
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1820
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1821
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1822
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1823 for(i = 0; i < nmounts; i++){
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1824
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1825 static char xx[1000];
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1826
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1827 printf("############### Iteration %d Start\n",i);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1828 if(1 || i == 0 || i == 5)
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1829 yaffs_mount(mountpt);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1830
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1831 dump_directory_tree(mountpt);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1832
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1833 yaffs_mkdir(a,0);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1834
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1835 sprintf(xx,"%s/0",a);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1836 if(i ==0){
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1837
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1838 h0 = yaffs_open(xx, O_RDWR | O_CREAT | O_TRUNC, S_IREAD | S_IWRITE);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1839 for(j = 0; j < 130; j++)
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1840 yaffs_write(h0,xx,1000);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1841 yaffs_close(h0);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1842 }
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1843
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1844 h0 = yaffs_open(xx,O_RDONLY,0);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1845
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1846 sprintf(xx,"%s/1",a);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1847 h1 = yaffs_open(xx, O_RDWR | O_CREAT | O_TRUNC, S_IREAD | S_IWRITE);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1848
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1849 while((nread = yaffs_read(h0,xx,1000)) > 0)
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1850 yaffs_write(h1,xx,nread);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1851
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1852
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1853 len0 = yaffs_lseek(h0,0,SEEK_END);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1854 len1 = yaffs_lseek(h1,0,SEEK_END);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1855
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1856 yaffs_lseek(h0,0,SEEK_SET);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1857 yaffs_lseek(h1,0,SEEK_SET);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1858
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1859 for(j = 0; j < 200; j++){
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1860 yaffs_read(h0,xx,1000);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1861 yaffs_read(h1,xx,1000);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1862 }
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1863
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1864 yaffs_close(h0);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1865 yaffs_close(h1);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1866
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1867 printf("########### %d\n",i);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1868 dump_directory_tree(mountpt);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1869
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1870 if(1 || i == 4 || i == nmounts -1)
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1871 yaffs_unmount(mountpt);
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1872 }
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1873 }
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1874
d6bcfc56f939 Add more test harness stuff
charles
parents: 160
diff changeset
1875
168
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1876 int early_exit;
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1877
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1878 void small_overwrite_test(const char *mountpt,int nmounts)
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1879 {
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1880
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1881 char a[30];
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1882 int i;
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1883 int j;
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1884
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1885 int h0;
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1886 int h1;
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1887
168
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1888
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1889 sprintf(a,"%s/a",mountpt);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1890
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1891 yaffs_StartUp();
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1892
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1893
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1894
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1895 for(i = 0; i < nmounts; i++){
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1896
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1897 static char xx[8000];
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1898
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1899 printf("############### Iteration %d Start\n",i);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1900 if(1)
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1901 yaffs_mount(mountpt);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1902
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1903 dump_directory_tree(mountpt);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1904
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1905 yaffs_mkdir(a,0);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1906
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1907 sprintf(xx,"%s/0",a);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1908 h0 = yaffs_open(xx, O_RDWR | O_CREAT | O_TRUNC, S_IREAD | S_IWRITE);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1909 sprintf(xx,"%s/1",a);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1910 h1 = yaffs_open(xx, O_RDWR | O_CREAT | O_TRUNC, S_IREAD | S_IWRITE);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1911
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1912 for(j = 0; j < 1000000; j+=1000){
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1913 yaffs_ftruncate(h0,j);
168
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1914 yaffs_lseek(h0,j,SEEK_SET);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1915 yaffs_write(h0,xx,7000);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1916 yaffs_write(h1,xx,7000);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1917
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1918 if(early_exit)
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1919 exit(0);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1920 }
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1921
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1922 yaffs_close(h0);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1923
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1924 printf("########### %d\n",i);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1925 dump_directory_tree(mountpt);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1926
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1927 if(1)
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1928 yaffs_unmount(mountpt);
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1929 }
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1930 }
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1931
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
1932
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1933 void seek_overwrite_test(const char *mountpt,int nmounts)
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1934 {
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1935
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1936 char a[30];
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1937
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1938 int i;
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1939 int j;
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1940
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1941 int h0;
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1942
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1943
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1944 sprintf(a,"%s/f",mountpt);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1945
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1946 yaffs_StartUp();
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1947
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1948 yaffs_mount(mountpt);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1949
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1950
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1951 for(i = 0; i < nmounts; i++){
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1952
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1953 h0 = yaffs_open(a, O_RDWR | O_CREAT | O_TRUNC, S_IREAD | S_IWRITE);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1954
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1955 for(j = 0; j < 100000; j++){
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1956 yaffs_lseek(h0,0,SEEK_SET);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1957 yaffs_write(h0,xx,5000);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1958 yaffs_lseek(h0,0x100000,SEEK_SET);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1959 yaffs_write(h0,xx,5000);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1960
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1961 if(early_exit)
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1962 exit(0);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1963 }
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1964
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1965 yaffs_close(h0);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1966
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1967 }
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1968 }
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1969
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
1970
137
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1971 void yaffs_touch(const char *fn)
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1972 {
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1973 yaffs_chmod(fn, S_IREAD | S_IWRITE);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1974 }
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1975
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1976 void checkpoint_fill_test(const char *mountpt,int nmounts)
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1977 {
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1978
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1979 char a[50];
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1980 char b[50];
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1981 char c[50];
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1982
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1983 int i;
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1984 int j;
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1985 int h;
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1986
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1987 sprintf(a,"%s/a",mountpt);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1988
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1989
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1990
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1991
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1992 yaffs_StartUp();
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1993
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1994 for(i = 0; i < nmounts; i++){
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1995 printf("############### Iteration %d Start\n",i);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1996 yaffs_mount(mountpt);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1997 dump_directory_tree(mountpt);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1998 yaffs_mkdir(a,0);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
1999
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2000 sprintf(b,"%s/zz",a);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2001
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2002 h = yaffs_open(b,O_CREAT | O_RDWR,S_IREAD |S_IWRITE);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2003
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2004
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2005 while(yaffs_write(h,c,50) == 50){}
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2006
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2007 yaffs_close(h);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2008
138
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2009 for(j = 0; j < 2; j++){
137
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2010 printf("touch %d\n",j);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2011 yaffs_touch(b);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2012 yaffs_unmount(mountpt);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2013 yaffs_mount(mountpt);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2014 }
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2015
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2016 dump_directory_tree(mountpt);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2017 yaffs_unmount(mountpt);
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2018 }
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2019 }
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2020
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2021
138
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2022 int make_file2(const char *name1, const char *name2,int syz)
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2023 {
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2024
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2025 char xx[2500];
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2026 int i;
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2027 int h1=-1,h2=-1;
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2028 int n = 1;
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2029
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2030
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2031 if(name1)
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2032 h1 = yaffs_open(name1,O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2033 if(name2)
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2034 h2 = yaffs_open(name2,O_CREAT | O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2035
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2036 while(syz > 0 && n > 0){
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2037 i = (syz > 2500) ? 2500 : syz;
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2038 n = yaffs_write(h1,xx,i);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2039 n = yaffs_write(h2,xx,i);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2040 syz -= 500;
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2041 }
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2042 yaffs_close(h1);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2043 yaffs_close(h2);
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
2044 return 0;
138
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2045 }
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2046
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2047
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2048 extern void SetCheckpointReservedBlocks(int n);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2049
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2050 void checkpoint_upgrade_test(const char *mountpt,int nmounts)
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2051 {
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2052
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2053 char a[50];
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2054 char b[50];
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2055 char c[50];
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2056 char d[50];
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
2057
138
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2058 int j;
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2059
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2060 sprintf(a,"%s/a",mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2061
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2062
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2063
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2064
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2065 printf("Create start condition\n");
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2066 yaffs_StartUp();
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2067 SetCheckpointReservedBlocks(0);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2068 yaffs_mount(mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2069 yaffs_mkdir(a,0);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2070 sprintf(b,"%s/zz",a);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2071 sprintf(c,"%s/xx",a);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2072 make_file2(b,c,2000000);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2073 sprintf(d,"%s/aa",a);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2074 make_file2(d,NULL,500000000);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2075 dump_directory_tree(mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2076
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2077 printf("Umount/mount attempt full\n");
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2078 yaffs_unmount(mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2079
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2080 SetCheckpointReservedBlocks(10);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2081 yaffs_mount(mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2082
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2083 printf("unlink small file\n");
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2084 yaffs_unlink(c);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2085 dump_directory_tree(mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2086
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2087 printf("Umount/mount attempt\n");
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2088 yaffs_unmount(mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2089 yaffs_mount(mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2090
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2091 for(j = 0; j < 500; j++){
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2092 printf("***** touch %d\n",j);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2093 dump_directory_tree(mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2094 yaffs_touch(b);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2095 yaffs_unmount(mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2096 yaffs_mount(mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2097 }
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2098
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2099 for(j = 0; j < 500; j++){
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2100 printf("***** touch %d\n",j);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2101 dump_directory_tree(mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2102 yaffs_touch(b);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2103 yaffs_unmount(mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2104 yaffs_mount(mountpt);
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2105 }
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2106 }
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2107
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2108 void huge_array_test(const char *mountpt,int n)
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2109 {
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2110
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2111 char a[50];
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2112
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2113
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2114 int i;
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
2115 int space;
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2116
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2117 int fnum;
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2118
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2119 sprintf(a,"mount point %s",mountpt);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2120
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2121
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2122
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2123 yaffs_StartUp();
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2124
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2125 yaffs_mount(mountpt);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2126
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2127 while(n>0){
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2128 n--;
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2129 fnum = 0;
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2130 printf("\n\n START run\n\n");
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
2131 while((space = yaffs_freespace(mountpt)) > 25000000){
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2132 sprintf(a,"%s/file%d",mountpt,fnum);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2133 fnum++;
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
2134 printf("create file %s, free space %d\n",a,space);
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2135 create_file_of_size(a,10000000);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2136 printf("verifying file %s\n",a);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2137 verify_file_of_size(a,10000000);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2138 }
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2139
157
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
2140 printf("\n\n verification/deletion\n\n");
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2141
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2142 for(i = 0; i < fnum; i++){
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2143 sprintf(a,"%s/file%d",mountpt,i);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2144 printf("verifying file %s\n",a);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2145 verify_file_of_size(a,10000000);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2146 printf("deleting file %s\n",a);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2147 yaffs_unlink(a);
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2148 }
157
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
2149 printf("\n\n done \n\n");
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2150
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2151
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2152 }
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2153 }
182
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2154
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2155
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2156 void random_write(int h)
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2157 {
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2158 static char buffer[12000];
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2159 int n;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2160
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2161 n = random() & 0x1FFF;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2162 yaffs_write(h,buffer,n);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2163 }
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2164
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2165 void random_seek(int h)
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2166 {
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2167 int n;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2168 n = random() & 0xFFFFF;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2169 yaffs_lseek(h,n,SEEK_SET);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2170 }
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2171
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2172 void random_truncate(int h, char * name)
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2173 {
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2174 int n;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2175 int flen;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2176 n = random() & 0xFFFFF;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2177 flen = yaffs_lseek(h,0,SEEK_END);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2178 if(n > flen)
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2179 n = flen / 2;
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
2180 yaffs_ftruncate(h,n);
182
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2181 yaffs_lseek(h,n,SEEK_SET);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2182 }
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2183
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2184
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2185 #define NSMALLFILES 10
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2186 void random_small_file_test(const char *mountpt,int iterations)
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2187 {
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2188
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2189 char a[NSMALLFILES][50];
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2190
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2191
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2192 int i;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2193 int n;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2194 int h[NSMALLFILES];
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2195 int r;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2196
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2197
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2198 yaffs_StartUp();
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2199
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2200 yaffs_mount(mountpt);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2201
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2202 for(i = 0; i < NSMALLFILES; i++){
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2203 h[i]=-1;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2204 strcpy(a[i],"");
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2205 }
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2206
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2207 for(n = 0; n < iterations; n++){
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2208
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2209 for(i = 0; i < NSMALLFILES; i++) {
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2210 r = random();
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2211
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2212 if(strlen(a[i]) == 0){
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2213 sprintf(a[i],"%s/%dx%d",mountpt,n,i);
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
2214 h[i] = yaffs_open(a[i],O_RDWR | O_CREAT | O_TRUNC, S_IREAD | S_IWRITE);
182
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2215 }
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2216
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2217 if(h[i] < -1)
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2218 printf("Could not open yaffs file %d %d error %d\n",n,i,h[i]);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2219 else {
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2220 r = r & 7;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2221 switch(r){
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2222 case 0:
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2223 case 1:
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2224 case 2:
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2225 random_write(h[i]);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2226 break;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2227 case 3:
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2228 random_truncate(h[i],a[i]);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2229 break;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2230 case 4:
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2231 case 5: random_seek(h[i]);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2232 break;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2233 case 6:
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2234 yaffs_close(h[i]);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2235 h[i] = -1;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2236 break;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2237 case 7:
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2238 yaffs_close(h[i]);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2239 yaffs_unlink(a[i]);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2240 strcpy(a[i],"");
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2241 h[i] = -1;
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2242 }
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2243 }
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2244 }
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2245
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2246 }
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2247
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2248 for(i = 0; i < NSMALLFILES; i++)
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2249 yaffs_close(h[i]);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2250
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2251 yaffs_unmount(mountpt);
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2252 }
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2253
138
c467501bb58c Fix problem with checkpoint free space handling
charles
parents: 137
diff changeset
2254
137
62488e7b581f Fix some checkpoint stuff, add qsort
charles
parents: 131
diff changeset
2255
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2256 int main(int argc, char *argv[])
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2257 {
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2258 //return long_test(argc,argv);
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2259
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2260 //return cache_read_test();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2261
215
b08276bd7b2d Clean up some yaffs1 mode issues.
charles
parents: 211
diff changeset
2262 //resize_stress_test_no_grow("/flash/flash",20);
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
2263
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
2264 //huge_directory_test_on_path("/ram2k");
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2265
127
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
2266 //yaffs_backward_scan_test("/flash/flash");
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
2267 // yaffs_device_flush_test("/flash/flash");
127
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
2268
215
b08276bd7b2d Clean up some yaffs1 mode issues.
charles
parents: 211
diff changeset
2269 rename_over_test("/flash/yaffs1");
b08276bd7b2d Clean up some yaffs1 mode issues.
charles
parents: 211
diff changeset
2270
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
2271 //scan_pattern_test("/flash",10000,10);
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
2272 //short_scan_test("/flash/flash",40000,200);
168
da300036f023 Fix issue with rescan of pending retired blocks
charles
parents: 167
diff changeset
2273 //small_mount_test("/flash/flash",1000);
182
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2274 //small_overwrite_test("/flash/flash",1000);
211
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
2275 //seek_overwrite_test("/flash/flash",1000);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
2276 //checkpoint_fill_test("/flash/flash",20);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
2277 //checkpoint_upgrade_test("/flash/flash",20);
fad21fd1971d Check in inband tags, some extra yaffs direct functions and some other changes
charles
parents: 199
diff changeset
2278 //small_overwrite_test("/flash/flash",1000);
182
ebfd69da1173 Adding checkpoint and robustness improvements
charles
parents: 177
diff changeset
2279 //checkpoint_fill_test("/flash/flash",20);
199
4551d577f9bb Adding fsx test to yaffs direct
charles
parents: 182
diff changeset
2280 // random_small_file_test("/flash/flash",10000);
157
41dac3f9ad92 Add more test stuff
charles
parents: 153
diff changeset
2281 // huge_array_test("/flash/flash",10);
152
3bc7020d669c Add large NAND support and improve retirement handling
charles
parents: 138
diff changeset
2282
131
9371b1f460a4 Checkpointing changes
charles
parents: 127
diff changeset
2283
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2284
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2285
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
2286 //long_test_on_path("/ram2k");
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
2287 // long_test_on_path("/flash");
122
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
2288 //simple_rw_test("/flash/flash");
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
2289 //fill_disk_test("/flash/flash");
94
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
2290 // rename_over_test("/flash");
c53efc2aec17 Improve YDI lookup and device prefic handling
charles
parents: 76
diff changeset
2291 //lookup_test("/flash");
122
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
2292 //freespace_test("/flash/flash");
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
2293
127
89a8d2461783 Flush entire cache at umount
charles
parents: 122
diff changeset
2294 //link_test("/flash/flash");
122
5dbd6682bfb2 Add hardlinks to yaffs direct
charles
parents: 105
diff changeset
2295
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2296
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
2297
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2298
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2299 // cache_bypass_bug_test();
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2300
19
8d0f599f5920 *** empty log message ***
charles
parents: 6
diff changeset
2301 //free_space_check();
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2302
76
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
2303 //check_resize_gc_bug("/flash");
8fb66e0909ad *** empty log message ***
charles
parents: 23
diff changeset
2304
1
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2305 return 0;
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2306
1a7b08737ec4 *** empty log message ***
charles
parents:
diff changeset
2307 }