Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:Update
mdadm
0095-raid6check-use-O_DIRECT-instead-of-O_SYNC....
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0095-raid6check-use-O_DIRECT-instead-of-O_SYNC.patch of Package mdadm
From 12ee2a8d75067a9cadfedecf2af36f6c2aedf25d Mon Sep 17 00:00:00 2001 From: NeilBrown <neilb@suse.de> Date: Mon, 20 Jul 2015 17:17:37 +1000 Subject: [PATCH 138/359] raid6check: use O_DIRECT instead of O_SYNC. References: bsc#1081910 O_DIRECT is more direct and is faster. This requires aligned memory allocation, but that isn't hard. Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Coly Li <colyli@suse.de> --- raid6check.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/raid6check.c b/raid6check.c index b2e1732..cb8522e 100644 --- a/raid6check.c +++ b/raid6check.c @@ -312,7 +312,7 @@ int check_stripes(struct mdinfo *info, int *source, unsigned long long *offsets, /* read the data and p and q blocks, and check we got them right */ int data_disks = raid_disks - 2; int syndrome_disks = data_disks + is_ddf(layout) * 2; - char *stripe_buf = xmalloc(raid_disks * chunk_size); + char *stripe_buf; /* stripes[] is indexed by raid_disk and holds chunks from each device */ char **stripes = xmalloc(raid_disks * sizeof(char*)); @@ -349,6 +349,7 @@ int check_stripes(struct mdinfo *info, int *source, unsigned long long *offsets, if (!tables_ready) make_tables(); + posix_memalign((void**)&stripe_buf, 4096, raid_disks * chunk_size); block_index_for_slot += 2; blocks += 2; blocks_page += 2; @@ -675,7 +676,7 @@ int main(int argc, char *argv[]) if(disk_slot >= 0) { disk_name[disk_slot] = map_dev(comp->disk.major, comp->disk.minor, 0); offsets[disk_slot] = comp->data_offset * 512; - fds[disk_slot] = open(disk_name[disk_slot], O_RDWR | O_SYNC); + fds[disk_slot] = open(disk_name[disk_slot], O_RDWR | O_DIRECT); if (fds[disk_slot] < 0) { perror(disk_name[disk_slot]); fprintf(stderr,"%s: cannot open %s\n", prg, disk_name[disk_slot]); -- 2.16.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor