annotate direct/dtest.c @ 152:3bc7020d669c

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