coreutils
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]