@@ -194,45 +194,62 @@ tests/test.py << TEST
194
194
lfs_file_read(&lfs, &file[0], buffer, size) => size;
195
195
memcmp(buffer, "exhaustion", size) => 0;
196
196
lfs_file_close(&lfs, &file[0]) => 0;
197
+ lfs_remove(&lfs, "exhaustion") => 0;
197
198
lfs_unmount(&lfs) => 0;
198
199
TEST
199
200
200
201
echo " --- Dir exhaustion test ---"
201
202
tests/test.py << TEST
202
203
lfs_mount(&lfs, &cfg) => 0;
203
- lfs_remove(&lfs, "exhaustion") => 0;
204
204
205
- lfs_file_open(&lfs, &file[0], "exhaustion", LFS_O_WRONLY | LFS_O_CREAT);
205
+ // find out max file size
206
+ lfs_mkdir(&lfs, "exhaustiondir") => 0;
206
207
size = strlen("blahblahblahblah");
207
208
memcpy(buffer, "blahblahblahblah", size);
208
- for (lfs_size_t i = 0;
209
- i < (cfg.block_count-4)*(cfg.block_size-8);
210
- i += size) {
209
+ lfs_file_open(&lfs, &file[0], "exhaustion", LFS_O_WRONLY | LFS_O_CREAT);
210
+ int count = 0;
211
+ int err;
212
+ while (true) {
213
+ err = lfs_file_write(&lfs, &file[0], buffer, size);
214
+ if (err < 0) {
215
+ break;
216
+ }
217
+
218
+ count += 1;
219
+ }
220
+ err => LFS_ERR_NOSPC;
221
+ lfs_file_close(&lfs, &file[0]) => 0;
222
+
223
+ lfs_remove(&lfs, "exhaustion") => 0;
224
+ lfs_remove(&lfs, "exhaustiondir") => 0;
225
+
226
+ // see if dir fits with max file size
227
+ lfs_file_open(&lfs, &file[0], "exhaustion", LFS_O_WRONLY | LFS_O_CREAT);
228
+ for (int i = 0; i < count; i++) {
211
229
lfs_file_write(&lfs, &file[0], buffer, size) => size;
212
230
}
213
231
lfs_file_close(&lfs, &file[0]) => 0;
214
232
215
233
lfs_mkdir(&lfs, "exhaustiondir") => 0;
216
234
lfs_remove(&lfs, "exhaustiondir") => 0;
235
+ lfs_remove(&lfs, "exhaustion") => 0;
217
236
218
- lfs_file_open(&lfs, &file[0], "exhaustion", LFS_O_WRONLY | LFS_O_APPEND);
219
- size = strlen("blahblahblahblah");
220
- memcpy(buffer, "blahblahblahblah", size);
221
- for (lfs_size_t i = 0;
222
- i < (cfg.block_size-8);
223
- i += size) {
237
+ // see if dir fits with > max file size
238
+ lfs_file_open(&lfs, &file[0], "exhaustion", LFS_O_WRONLY | LFS_O_CREAT);
239
+ for (int i = 0; i < count+1; i++) {
224
240
lfs_file_write(&lfs, &file[0], buffer, size) => size;
225
241
}
226
242
lfs_file_close(&lfs, &file[0]) => 0;
227
243
228
244
lfs_mkdir(&lfs, "exhaustiondir") => LFS_ERR_NOSPC;
245
+
246
+ lfs_remove(&lfs, "exhaustion") => 0;
229
247
lfs_unmount(&lfs) => 0;
230
248
TEST
231
249
232
250
echo " --- Chained dir exhaustion test ---"
233
251
tests/test.py << TEST
234
252
lfs_mount(&lfs, &cfg) => 0;
235
- lfs_remove(&lfs, "exhaustion") => 0;
236
253
237
254
lfs_file_open(&lfs, &file[0], "exhaustion", LFS_O_WRONLY | LFS_O_CREAT);
238
255
size = strlen("blahblahblahblah");
0 commit comments