Line | |
---|
1 | /* 8.t |
---|
2 | - Ditto for the above three tests at the offset maximum (largest |
---|
3 | possible ext2/3 file size.) (8.t) |
---|
4 | */ |
---|
5 | #include <sys/vfs.h> |
---|
6 | |
---|
7 | #define EXT2_OLD_SUPER_MAGIC 0xEF51 |
---|
8 | #define EXT2_SUPER_MAGIC 0xEF53 |
---|
9 | |
---|
10 | long long get_fs_limit(int fd) |
---|
11 | { |
---|
12 | struct statfs s; |
---|
13 | int res; |
---|
14 | long long lim = 0; |
---|
15 | |
---|
16 | res = fstatfs(fd, &s); assert(res == 0); |
---|
17 | |
---|
18 | switch(s.f_type) { |
---|
19 | case EXT2_OLD_SUPER_MAGIC: |
---|
20 | case EXT2_SUPER_MAGIC: |
---|
21 | #if 0 |
---|
22 | { |
---|
23 | long long tmp; |
---|
24 | tmp = s.f_bsize / 4; |
---|
25 | /* 12 direct + indirect block + dind + tind */ |
---|
26 | lim = 12 + tmp + tmp * tmp + tmp * tmp * tmp; |
---|
27 | lim *= s.f_bsize; |
---|
28 | printf("limit(%ld) = %Ld\n", (long)s.f_bsize, lim); |
---|
29 | } |
---|
30 | #endif |
---|
31 | switch(s.f_bsize) { |
---|
32 | case 4096: lim = 2199023251456; break; |
---|
33 | default: |
---|
34 | printf("unknown ext2 blocksize %ld\n", (long)s.f_bsize); |
---|
35 | exit(3); |
---|
36 | } |
---|
37 | break; |
---|
38 | default: |
---|
39 | printf("unknown filesystem 0x%08lx\n", (long)s.f_type); |
---|
40 | exit(3); |
---|
41 | } |
---|
42 | return lim; |
---|
43 | } |
---|
44 | |
---|
45 | #define SET_RLIMIT(x) do ; while (0) |
---|
46 | #define LIMIT get_fs_limit(rwfd) |
---|
47 | #define FILENAME "testdir.ext2/rwfile" |
---|
48 | |
---|
49 | #include "common-7-8.h" |
---|
Note: See
TracBrowser
for help on using the repository browser.