annotate direct/dtest.c @ 217:6dbe40ae9e54

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