Changeset: a0b0dd49f62f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a0b0dd49f62f
Modified Files:
testing/fallocate.c
Branch: Jun2023
Log Message:
lookup condition via FALLOCAT_LIMIT env var (format nr,size[M|G])
diffs (54 lines):
diff --git a/testing/fallocate.c b/testing/fallocate.c
--- a/testing/fallocate.c
+++ b/testing/fallocate.c
@@ -11,18 +11,46 @@
typedef int (*fallocate_fptr)(int, int, off_t, off_t);
fallocate_fptr real_fallocate = NULL;
+static int brk_nr = 1;
+static off_t brk_len = 1024*1024;
+
int
fallocate(int fd, int mode, off_t offset, off_t len)
{
- if (!real_fallocate)
+ if (!real_fallocate) {
real_fallocate = (fallocate_fptr)dlsym(RTLD_NEXT, "fallocate");
+ char *v = getenv("FALLOCATE_LIMIT");
+ if (v) { /* format: nr,size (in M or G) */
+ char *c = strchr(v,',');
+ if (c) {
+ c[0] = 0;
+ c++;
+ brk_nr = strtol(v, NULL, 10);
+ char *m = strchr(c,'M');
+ if (m) {
+ m[0] = 0;
+ brk_len = strtol(c, NULL, 10) *
1024*1024;
+ } else {
+ char *g = strchr(c,'G');
+ if (g) {
+ g[0] = 0;
+ brk_len = strtol(c, NULL, 10) *
1024*1024*1024;
+ }
+ }
+ }
+ }
+ }
if (!real_fallocate) {
fprintf(stderr, "mtest_allocate: could not resolve 'fallocate'
in 'libc.so': %s\n", dlerror());
exit(1);
}
- if (len >= (512*1024*1024)) {
- errno = ENOSPC;
- return -1;
+ if (len >= brk_len) {
+ if (brk_nr) /* once the number is reached, continue with errors
*/
+ brk_nr--;
+ if (brk_nr == 0) {
+ errno = ENOSPC;
+ return -1;
+ }
}
return real_fallocate(fd, mode, offset, len);
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]