mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
50 lines
1023 B
Raku
50 lines
1023 B
Raku
/* 8.t
|
|
- Ditto for the above three tests at the offset maximum (largest
|
|
possible ext2/3 file size.) (8.t)
|
|
*/
|
|
#include <sys/vfs.h>
|
|
|
|
#define EXT2_OLD_SUPER_MAGIC 0xEF51
|
|
#define EXT2_SUPER_MAGIC 0xEF53
|
|
|
|
long long get_fs_limit(int fd)
|
|
{
|
|
struct statfs s;
|
|
int res;
|
|
long long lim = 0;
|
|
|
|
res = fstatfs(fd, &s); assert(res == 0);
|
|
|
|
switch(s.f_type) {
|
|
case EXT2_OLD_SUPER_MAGIC:
|
|
case EXT2_SUPER_MAGIC:
|
|
#if 0
|
|
{
|
|
long long tmp;
|
|
tmp = s.f_bsize / 4;
|
|
/* 12 direct + indirect block + dind + tind */
|
|
lim = 12 + tmp + tmp * tmp + tmp * tmp * tmp;
|
|
lim *= s.f_bsize;
|
|
printf("limit(%ld) = %Ld\n", (long)s.f_bsize, lim);
|
|
}
|
|
#endif
|
|
switch(s.f_bsize) {
|
|
case 4096: lim = 2199023251456; break;
|
|
default:
|
|
printf("unknown ext2 blocksize %ld\n", (long)s.f_bsize);
|
|
exit(3);
|
|
}
|
|
break;
|
|
default:
|
|
printf("unknown filesystem 0x%08lx\n", (long)s.f_type);
|
|
exit(3);
|
|
}
|
|
return lim;
|
|
}
|
|
|
|
#define SET_RLIMIT(x) do ; while (0)
|
|
#define LIMIT get_fs_limit(rwfd)
|
|
#define FILENAME "testdir.ext2/rwfile"
|
|
|
|
#include "common-7-8.h"
|