aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorJames Bottomley <JBottomley@Parallels.com>2013-04-24 14:02:53 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-05-19 10:04:38 -0700
commit8ee29c2d66ae8aab9b28af5e83ec23dd99d8e500 (patch)
tree1e8300ae59fe88fa0f831314330f8377ea32cd25 /kernel
parenta3b5b07e0d750c300d771a0a8e5ad24898bcdd9b (diff)
downloadkernel_samsung_smdk4412-8ee29c2d66ae8aab9b28af5e83ec23dd99d8e500.zip
kernel_samsung_smdk4412-8ee29c2d66ae8aab9b28af5e83ec23dd99d8e500.tar.gz
kernel_samsung_smdk4412-8ee29c2d66ae8aab9b28af5e83ec23dd99d8e500.tar.bz2
SCSI: sd: fix array cache flushing bug causing performance problems
commit 39c60a0948cc06139e2fbfe084f83cb7e7deae3b upstream. Some arrays synchronize their full non volatile cache when the sd driver sends a SYNCHRONIZE CACHE command. Unfortunately, they can have Terrabytes of this and we send a SYNCHRONIZE CACHE for every barrier if an array reports it has a writeback cache. This leads to massive slowdowns on journalled filesystems. The fix is to allow userspace to turn off the writeback cache setting as a temporary measure (i.e. without doing the MODE SELECT to write it back to the device), so even though the device reported it has a writeback cache, the user, knowing that the cache is non volatile and all they care about is filesystem correctness, can turn that bit off in the kernel and avoid the performance ruinous (and safety irrelevant) SYNCHRONIZE CACHE commands. The way you do this is add a 'temporary' prefix when performing the usual cache setting operations, so echo temporary write through > /sys/class/scsi_disk/<disk>/cache_type Reported-by: Ric Wheeler <rwheeler@redhat.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'kernel')
0 files changed, 0 insertions, 0 deletions