/* * mdadm - manage Linux "md" devices aka RAID arrays. * * Copyright (C) 2011 Neil Brown * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Author: Neil Brown * Email: */ #include "mdadm.h" /* name/number mappings */ mapping_t r5layout[] = { { "left-asymmetric", ALGORITHM_LEFT_ASYMMETRIC}, { "right-asymmetric", ALGORITHM_RIGHT_ASYMMETRIC}, { "left-symmetric", ALGORITHM_LEFT_SYMMETRIC}, { "right-symmetric", ALGORITHM_RIGHT_SYMMETRIC}, { "default", ALGORITHM_LEFT_SYMMETRIC}, { "la", ALGORITHM_LEFT_ASYMMETRIC}, { "ra", ALGORITHM_RIGHT_ASYMMETRIC}, { "ls", ALGORITHM_LEFT_SYMMETRIC}, { "rs", ALGORITHM_RIGHT_SYMMETRIC}, { "parity-first", ALGORITHM_PARITY_0}, { "parity-last", ALGORITHM_PARITY_N}, { "ddf-zero-restart", ALGORITHM_RIGHT_ASYMMETRIC}, { "ddf-N-restart", ALGORITHM_LEFT_ASYMMETRIC}, { "ddf-N-continue", ALGORITHM_LEFT_SYMMETRIC}, { NULL, 0} }; mapping_t r6layout[] = { { "left-asymmetric", ALGORITHM_LEFT_ASYMMETRIC}, { "right-asymmetric", ALGORITHM_RIGHT_ASYMMETRIC}, { "left-symmetric", ALGORITHM_LEFT_SYMMETRIC}, { "right-symmetric", ALGORITHM_RIGHT_SYMMETRIC}, { "default", ALGORITHM_LEFT_SYMMETRIC}, { "la", ALGORITHM_LEFT_ASYMMETRIC}, { "ra", ALGORITHM_RIGHT_ASYMMETRIC}, { "ls", ALGORITHM_LEFT_SYMMETRIC}, { "rs", ALGORITHM_RIGHT_SYMMETRIC}, { "parity-first", ALGORITHM_PARITY_0}, { "parity-last", ALGORITHM_PARITY_N}, { "ddf-zero-restart", ALGORITHM_ROTATING_ZERO_RESTART}, { "ddf-N-restart", ALGORITHM_ROTATING_N_RESTART}, { "ddf-N-continue", ALGORITHM_ROTATING_N_CONTINUE}, { "left-asymmetric-6", ALGORITHM_LEFT_ASYMMETRIC_6}, { "right-asymmetric-6", ALGORITHM_RIGHT_ASYMMETRIC_6}, { "left-symmetric-6", ALGORITHM_LEFT_SYMMETRIC_6}, { "right-symmetric-6", ALGORITHM_RIGHT_SYMMETRIC_6}, { "parity-first-6", ALGORITHM_PARITY_0_6}, { NULL, 0} }; mapping_t pers[] = { { "linear", LEVEL_LINEAR}, { "raid0", 0}, { "0", 0}, { "stripe", 0}, { "raid1", 1}, { "1", 1}, { "mirror", 1}, { "raid4", 4}, { "4", 4}, { "raid5", 5}, { "5", 5}, { "multipath", LEVEL_MULTIPATH}, { "mp", LEVEL_MULTIPATH}, { "raid6", 6}, { "6", 6}, { "raid10", 10}, { "10", 10}, { "faulty", LEVEL_FAULTY}, { "container", LEVEL_CONTAINER}, { NULL, 0} }; mapping_t modes[] = { { "assemble", ASSEMBLE}, { "build", BUILD}, { "create", CREATE}, { "manage", MANAGE}, { "misc", MISC}, { "monitor", MONITOR}, { "grow", GROW}, { "incremental", INCREMENTAL}, { "auto-detect", AUTODETECT}, }; mapping_t faultylayout[] = { { "write-transient", WriteTransient }, { "wt", WriteTransient }, { "read-transient", ReadTransient }, { "rt", ReadTransient }, { "write-persistent", WritePersistent }, { "wp", WritePersistent }, { "read-persistent", ReadPersistent }, { "rp", ReadPersistent }, { "write-all", WriteAll }, { "wa", WriteAll }, { "read-fixable", ReadFixable }, { "rf", ReadFixable }, { "clear", ClearErrors}, { "flush", ClearFaults}, { "none", ClearErrors}, { "default", ClearErrors}, { NULL, 0} }; char *map_num(mapping_t *map, int num) { while (map->name) { if (map->num == num) return map->name; map++; } return NULL; } int map_name(mapping_t *map, char *name) { while (map->name) { if (strcmp(map->name, name)==0) return map->num; map++; } return UnSet; }