mirror of
https://git.FreeBSD.org/src.git
synced 2025-02-06 18:29:47 +00:00
Alike to ZFS disable cache flush after first ENOTSUP error.
MFC after: 1 week
This commit is contained in:
parent
cc5cd33264
commit
75b2ed47b7
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=324086
@ -630,7 +630,7 @@ slogbench(int fd, int isreg, off_t mediasize, u_int sectorsize)
|
|||||||
{
|
{
|
||||||
off_t off;
|
off_t off;
|
||||||
u_int size;
|
u_int size;
|
||||||
int error, n, N;
|
int error, n, N, nowritecache = 0;
|
||||||
|
|
||||||
printf("Synchronous random writes:\n");
|
printf("Synchronous random writes:\n");
|
||||||
for (size = sectorsize; size <= MAXTX; size *= 2) {
|
for (size = sectorsize; size <= MAXTX; size *= 2) {
|
||||||
@ -641,12 +641,18 @@ slogbench(int fd, int isreg, off_t mediasize, u_int sectorsize)
|
|||||||
for (n = 0; n < 250; n++) {
|
for (n = 0; n < 250; n++) {
|
||||||
off = random() % (mediasize / size);
|
off = random() % (mediasize / size);
|
||||||
parwrite(fd, size, off * size);
|
parwrite(fd, size, off * size);
|
||||||
|
if (nowritecache)
|
||||||
|
continue;
|
||||||
if (isreg)
|
if (isreg)
|
||||||
error = fsync(fd);
|
error = fsync(fd);
|
||||||
else
|
else
|
||||||
error = ioctl(fd, DIOCGFLUSH);
|
error = ioctl(fd, DIOCGFLUSH);
|
||||||
if (error < 0)
|
if (error < 0) {
|
||||||
err(EX_IOERR, "Flush error");
|
if (errno == ENOTSUP)
|
||||||
|
nowritecache = 1;
|
||||||
|
else
|
||||||
|
err(EX_IOERR, "Flush error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
N += 250;
|
N += 250;
|
||||||
} while (delta_t() < 1.0);
|
} while (delta_t() < 1.0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user