X-Git-Url: http://git.apps.os.sepia.ceph.com/?p=xfstests-dev.git;a=blobdiff_plain;f=ltp%2Fdoio.c;h=83f8cf556325574a84ae1b0aaa4817f665bd7398;hp=0f778630eb3ebffbf96f72a3ae616661327a2f97;hb=10f6b23121ea5ac9927e44eb15b128716139e2b8;hpb=9323f95f9657801edaa69f9654cb34c9b52924ad diff --git a/ltp/doio.c b/ltp/doio.c index 0f778630..83f8cf55 100644 --- a/ltp/doio.c +++ b/ltp/doio.c @@ -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 */ /* * doio - a general purpose io initiator with system call and @@ -29,6 +17,7 @@ #include "global.h" +#include #include /* for struct iovec (readv)*/ #include /* for mmap(2) */ #include /* for i/o buffer in shared memory */ @@ -361,7 +350,7 @@ char **argv; case SIGTSTP: case SIGSTOP: case SIGCONT: - case SIGCLD: + case SIGCHLD: case SIGBUS: case SIGSEGV: case SIGQUIT: @@ -1471,6 +1460,7 @@ fmt_ioreq(struct io_req *ioreq, struct syscall_info *sy, int fd) (io->r_uflags & F_WORD_ALIGNED) ? "aligned" : "unaligned"); if(io->r_oflags & O_DIRECT) { + char *dio_env; struct dioattr finfo; if(xfsctl(io->r_file, fd, XFS_IOC_DIOINFO, &finfo) == -1) { @@ -1481,6 +1471,10 @@ fmt_ioreq(struct io_req *ioreq, struct syscall_info *sy, int fd) finfo.d_maxiosz = 1; } + dio_env = getenv("XFS_DIO_MIN"); + if (dio_env) + finfo.d_mem = finfo.d_miniosz = atoi(dio_env); + cp += sprintf(cp, " DIRECT I/O: offset %% %d = %d length %% %d = %d\n", finfo.d_miniosz, io->r_offset % finfo.d_miniosz, @@ -2774,11 +2768,18 @@ int oflags; free_slot->c_rtc = Reqno; if (oflags & O_DIRECT) { + char *dio_env; + if (xfsctl(file, fd, XFS_IOC_DIOINFO, &finfo) == -1) { finfo.d_mem = 1; finfo.d_miniosz = 1; finfo.d_maxiosz = 1; } + + dio_env = getenv("XFS_DIO_MIN"); + if (dio_env) + finfo.d_mem = finfo.d_miniosz = atoi(dio_env); + } else { finfo.d_mem = 1; finfo.d_miniosz = 1; @@ -3171,7 +3172,7 @@ char *opts; break; case 'N': - sprintf( TagName, "(%.39s)", optarg ); + sprintf( TagName, "(%.37s)", optarg ); break; case 'n':