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

Eric Sandeen sandeen at sandeen.net
Mon Jan 18 14:46:35 CST 2010


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 at sandeen.net>
---

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();




More information about the xfs mailing list