xfs
[Top] [All Lists]

[PATCH] xfsteststs: get fsstress DIO working on non-xfs filesystems

To: xfs-oss <xfs@xxxxxxxxxxx>
Subject: [PATCH] xfsteststs: get fsstress DIO working on non-xfs filesystems
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Mon, 18 Jan 2010 14:46:35 -0600
User-agent: Thunderbird 2.0.0.23 (Macintosh/20090812)
Pretty sure all DIO IO fails in fsstress today since XFS_IOC_DIOINFO
fails.  If so, rather than just bailing out on the op, assign
some sane default DIO parameters.

This falls down for 4k sector devices but not really sure how to get
the underlying sector size easily from here; I think we can live
with this for now.

hch suggested moving XFS_IOC_DIOINFO up higher in the vfs, that's
probably a good idea in the long run.

Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxxx>
---

diff --git a/ltp/fsstress.c b/ltp/fsstress.c
index 6978381..dab6bf7 100644
--- a/ltp/fsstress.c
+++ b/ltp/fsstress.c
@@ -1818,9 +1818,9 @@ dread_f(int opno, long r)
                        printf(
                        "%d/%d: dread - xfsctl(XFS_IOC_DIOINFO) %s failed %d\n",
                                procid, opno, f.path, errno);
-               free_pathname(&f);
-               close(fd);
-               return;
+               diob.d_maxiosz = -1U;
+               diob.d_miniosz = 512;
+               diob.d_mem = 512;
        }
        align = (__int64_t)diob.d_miniosz;
        lr = ((__int64_t)random() << 32) + random();
@@ -1888,9 +1888,9 @@ dwrite_f(int opno, long r)
                        printf("%d/%d: dwrite - xfsctl(XFS_IOC_DIOINFO)"
                                " %s failed %d\n",
                                procid, opno, f.path, errno);
-               free_pathname(&f);
-               close(fd);
-               return;
+               diob.d_maxiosz = -1U;
+               diob.d_miniosz = 512;
+               diob.d_mem = 512;
        }
        align = (__int64_t)diob.d_miniosz;
        lr = ((__int64_t)random() << 32) + random();

<Prev in Thread] Current Thread [Next in Thread>