annotate direct/dtest.c @ 211:fad21fd1971d

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