annotate direct/dtest.c @ 248:a8738fee77c1

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