annotate direct/dtest.c @ 339:50d5730d01a5

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