[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 0/2] fix direct I/O regression in shred
From: |
Pádraig Brady |
Subject: |
[PATCH 0/2] fix direct I/O regression in shred |
Date: |
Mon, 4 Nov 2013 23:14:09 +0000 |
I noticed that the first write to shred was failing,
which turned out to be due to trying to use direct I/O
from a non page aligned buffer. The first patch fixes that.
I also noticed that the 12KiB writes were not optimal
in the common case of non periodic patterns, so adjusted
that in the second patch.
Setup test file:
$ truncate -s100KiB file.shred
Results before (slightly edited for comparison):
1 write(3, "\x49\x72\xf2\x87\x97\x1f\xcd\x0f"..., 12288) = -1 EINVAL
(Invalid argument)
8 write(3, "\x49\x72\xf2\x87\x97\x1f\xcd\x0f"..., 12288) = 12288
1 write(3, "\xb1\x7e\x2b\xff\xcd\x8f\xd4\xdf"..., 4096) = 4096
8 write(3, "\x55\x55\x55\x55\x55\x55\x55\x55"..., 12288) = 12288
1 write(3, "\x55\x55\x55\x55\x55\x55\x55\x55"..., 4096) = 4096
8 write(3, "\x24\x92\x49\x24\x92\x49\x24\x92"..., 12288) = 12288
1 write(3, "\x24\x92\x49\x24\x92\x49\x24\x92"..., 4096) = 4096
8 write(3, "\xff\xff\xff\xff\xff\xff\xff\xff"..., 12288) = 12288
1 write(3, "\xff\xff\xff\xff\xff\xff\xff\xff"..., 4096) = 4096
8 write(3, "\xef\x70\x22\xc6\x36\xf7\x94\x2f"..., 12288) = 12288
1 write(3, "\x3e\xdc\xe3\x46\x10\x2d\x31\x72"..., 4096) = 4096
8 write(3, "\x00\x00\x00\x00\x00\x00\x00\x00"..., 12288) = 12288
1 write(3, "\x00\x00\x00\x00\x00\x00\x00\x00"..., 4096) = 4096
8 write(3, "\x49\x24\x92\x49\x24\x92\x49\x24"..., 12288) = 12288
1 write(3, "\x49\x24\x92\x49\x24\x92\x49\x24"..., 4096) = 4096
8 write(3, "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"..., 12288) = 12288
1 write(3, "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"..., 4096) = 4096
8 write(3, "\xc6\x4e\x5c\x44\x92\x2a\x2d\x27"..., 12288) = 12288
1 write(3, "\x1c\x2c\x6c\xd4\x89\xdc\x1a\x1e"..., 4096) = 4096
Results after:
$ strace -xx -e write src/shred -n9 file.shred 2>&1 | uniq -c
1 write(3, "\x23\xbd\xcc\x23\x58\x8d\x4a\xf6"..., 65536) = 65536
1 write(3, "\xcf\xca\x2f\xa1\xa7\x09\xa9\x15"..., 36864) = 36864
1 write(3, "\x11\x11\x11\x11\x11\x11\x11\x11"..., 65536) = 65536
1 write(3, "\x11\x11\x11\x11\x11\x11\x11\x11"..., 36864) = 36864
1 write(3, "\x55\x55\x55\x55\x55\x55\x55\x55"..., 65536) = 65536
1 write(3, "\x55\x55\x55\x55\x55\x55\x55\x55"..., 36864) = 36864
8 write(3, "\xb6\xdb\x6d\xb6\xdb\x6d\xb6\xdb"..., 12288) = 12288
1 write(3, "\xb6\xdb\x6d\xb6\xdb\x6d\xb6\xdb"..., 4096) = 4096
1 write(3, "\xba\xc4\x90\x07\x98\x1f\x3a\xc0"..., 65536) = 65536
1 write(3, "\xdf\xb5\x1b\xaf\x55\x72\x0c\x8a"..., 36864) = 36864
1 write(3, "\xff\xff\xff\xff\xff\xff\xff\xff"..., 65536) = 65536
1 write(3, "\xff\xff\xff\xff\xff\xff\xff\xff"..., 36864) = 36864
1 write(3, "\x00\x00\x00\x00\x00\x00\x00\x00"..., 65536) = 65536
1 write(3, "\x00\x00\x00\x00\x00\x00\x00\x00"..., 36864) = 36864
1 write(3, "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"..., 65536) = 65536
1 write(3, "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"..., 36864) = 36864
1 write(3, "\x8c\x7d\x4f\x57\x7e\x05\x83\x36"..., 65536) = 65536
1 write(3, "\xf4\xca\x42\x36\x5a\x1c\x68\x30"..., 36864) = 36864
- [PATCH 0/2] fix direct I/O regression in shred,
Pádraig Brady <=