ltp/fsx: drop caches if we're doing closeopen
[xfstests-dev.git] / ltp / iogen.c
index a2897feb989024f9b2e22f8e3e6971f1774ad51f..2b6644d5219219746e5707f89af4a57f12e8f91e 100644 (file)
@@ -1,19 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  * Copyright (c) 2000 Silicon Graphics, Inc.
  * All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it would be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write the Free Software Foundation,
- * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 /*
  * iogen - a tool for generating file/sds io for a doio process
@@ -132,7 +120,7 @@ int Fileio = 0;             /* flag indicating that a file              */
 int    Naio_Strat_Types = 0;   /* # async io completion types              */
 struct strmap *Aio_Strat_List[128]; /* Async io completion types           */
 
-void   startup_info();
+void   startup_info(FILE *stream, int seed);
 
 /*
  * Map async io completion modes (-a args) names to values.  Macros are
@@ -299,7 +287,7 @@ char        **argv;
 void
 startup_info(FILE *stream, int seed)
 {
-    char       *value_to_string(), *type;
+    char       *value_to_string(struct strmap *map, int val), *type;
     int                i;
 
     fprintf(stream, "\n");
@@ -781,6 +769,7 @@ struct file_info    *rec;
 
        rec->f_riou = BSIZE;
        if( (fd = open(rec->f_path, O_RDWR|O_DIRECT, 0)) != -1 ) {
+           char *dio_env;
 #ifdef XFS_IOC_DIOINFO
            if(xfsctl(rec->f_path, fd, XFS_IOC_DIOINFO, &finfo) != -1) {
 #else
@@ -790,6 +779,10 @@ struct file_info    *rec;
 bozo!
 #endif
 #endif
+               dio_env = getenv("XFS_DIO_MIN");
+               if (dio_env)
+                   finfo.d_mem = finfo.d_miniosz = atoi(dio_env);
+
                rec->f_riou = finfo.d_miniosz;
            } else {
                fprintf(stderr,
@@ -1001,6 +994,7 @@ bozo!
        if(Owrite == 2) {
            close(fd);
            if( (fd = open(path, O_CREAT|O_RDWR|O_DIRECT, 0)) != -1 ) {
+               char *dio_env;
 #ifdef XFS_IOC_DIOINFO
                if(xfsctl(path, fd, XFS_IOC_DIOINFO, &finfo) == -1) {
 #else
@@ -1018,6 +1012,10 @@ bozo!
                    /*fprintf(stderr, "%s: miniosz=%d\n", 
                            path, finfo.d_miniosz);*/
                }
+
+               dio_env = getenv("XFS_DIO_MIN");
+               if (dio_env)
+                       finfo.d_mem = finfo.d_miniosz = atoi(dio_env);
            } else {
                fprintf(stderr, "iogen%s: Error %s (%d) opening file %s with flags O_CREAT|O_RDWR|O_DIRECT\n",
                        TagName, SYSERR, errno, path);
@@ -1264,7 +1262,7 @@ char      *opts;
            break;
 
        case 'N':
-           sprintf( TagName, "(%.39s)", optarg );
+           sprintf( TagName, "(%.37s)", optarg );
            break;
 
        case 'o':