Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP4:GA
mdadm.1739
0002-Add-nodes-option-while-creating-md.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0002-Add-nodes-option-while-creating-md.patch of Package mdadm.1739
From 960847e981b6a0b7aa6462c55748941fd687510f Mon Sep 17 00:00:00 2001 From: Guoqing Jiang <gqjiang@suse.com> Date: Wed, 10 Jun 2015 13:42:05 +0800 Subject: [PATCH 02/11] Add nodes option while creating md Specifies the maximum number of nodes in the cluster that may use this device simultaneously. This is equivalent to the number of bitmaps created in the internal superblock (patches to follow). Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com> Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: NeilBrown <neilb@suse.de> --- Create.c | 1 + ReadMe.c | 1 + mdadm.8.in | 6 ++++++ mdadm.c | 33 ++++++++++++++++++++++++++++++++- mdadm.h | 3 +++ super1.c | 1 + 6 files changed, 44 insertions(+), 1 deletion(-) diff --git a/Create.c b/Create.c index 884e620..c967120 100644 --- a/Create.c +++ b/Create.c @@ -538,6 +538,7 @@ int Create(struct supertype *st, char *mddev, st->ss->name); warn = 1; } + st->nodes = c->nodes; if (warn) { if (c->runstop!= 1) { diff --git a/ReadMe.c b/ReadMe.c index a1822ae..dd7a1ad 100644 --- a/ReadMe.c +++ b/ReadMe.c @@ -142,6 +142,7 @@ struct option long_options[] = { {"homehost", 1, 0, HomeHost}, {"symlinks", 1, 0, Symlinks}, {"data-offset",1, 0, DataOffset}, + {"nodes",1, 0, Nodes}, /* For assemble */ {"uuid", 1, 0, 'u'}, diff --git a/mdadm.8.in b/mdadm.8.in index 00ae5f8..d8bcf05 100644 --- a/mdadm.8.in +++ b/mdadm.8.in @@ -986,6 +986,12 @@ However for RAID0, it is not possible to add spares. So to increase the number of devices in a RAID0, it is necessary to set the new number of devices, and to add the new devices, in the same command. +.TP +.BR \-\-nodes +Only works when the array is for clustered environment. It specifies +the maximum number of nodes in the cluster that will use this device +simultaneously. If not specified, this defaults to 4. + .SH For assemble: .TP diff --git a/mdadm.c b/mdadm.c index 224167c..40d56cb 100644 --- a/mdadm.c +++ b/mdadm.c @@ -607,7 +607,14 @@ int main(int argc, char *argv[]) } ident.raid_disks = s.raiddisks; continue; - + case O(CREATE, Nodes): + c.nodes = parse_num(optarg); + if (c.nodes <= 0) { + pr_err("invalid number for the number of cluster nodes: %s\n", + optarg); + exit(2); + } + continue; case O(CREATE,'x'): /* number of spare (eXtra) disks */ if (s.sparedisks) { pr_err("spare-devices set twice: %d and %s\n", @@ -1128,6 +1135,15 @@ int main(int argc, char *argv[]) s.bitmap_file = optarg; continue; } + if (strcmp(optarg, "clustered")== 0) { + s.bitmap_file = optarg; + /* Set the default number of cluster nodes + * to 4 if not already set by user + */ + if (c.nodes < 1) + c.nodes = 4; + continue; + } /* probable typo */ pr_err("bitmap file must contain a '/', or be 'internal', or 'none'\n" " not '%s'\n", optarg); @@ -1410,6 +1426,21 @@ int main(int argc, char *argv[]) case CREATE: if (c.delay == 0) c.delay = DEFAULT_BITMAP_DELAY; + + if (c.nodes) { + if (!s.bitmap_file || strcmp(s.bitmap_file, "clustered") != 0) { + pr_err("--nodes argument only compatible with --bitmap=clustered\n"); + rv = 1; + break; + } + + if (s.level != 1) { + pr_err("--bitmap=clustered is currently supported with RAID mirror only\n"); + rv = 1; + break; + } + } + if (s.write_behind && !s.bitmap_file) { pr_err("write-behind mode requires a bitmap.\n"); rv = 1; diff --git a/mdadm.h b/mdadm.h index f60866c..434ce4d 100644 --- a/mdadm.h +++ b/mdadm.h @@ -345,6 +345,7 @@ enum special_options { Dump, Restore, Action, + Nodes, }; enum prefix_standard { @@ -419,6 +420,7 @@ struct context { char *backup_file; int invalid_backup; char *action; + int nodes; }; struct shape { @@ -1030,6 +1032,7 @@ struct supertype { */ int devcnt; int retry_soon; + int nodes; struct mdinfo *devs; diff --git a/super1.c b/super1.c index 8629957..43ee1a0 100644 --- a/super1.c +++ b/super1.c @@ -2157,6 +2157,7 @@ add_internal_bitmap1(struct supertype *st, bms->daemon_sleep = __cpu_to_le32(delay); bms->sync_size = __cpu_to_le64(size); bms->write_behind = __cpu_to_le32(write_behind); + bms->nodes = __cpu_to_le32(st->nodes); *chunkp = chunk; return 1; -- 1.7.12.4
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