On Sun, Jul 01, 2007 at 11:41:34PM -0700, Fang, Ying wrote: > >> 2. A metadata handler needs build metadata based on several data such > as > >> raid set name, raid level, size, etc. Can they be carried into as a > >> string argument or a field in "struct lib_context"? It's possible to > >> build disk sets, raid device sets, and raid set sets too. > > > >No, a create_set() function needs adding to the library, which can > >be called with a struct holding the respective parameters and lists of > >devices involved. > > > >That function will derive properties of raid_dev arguments > >for the metadata format handler .create method. > > > >commands.[ch] need the respective extensions to support > >the "-C/--create" command line option. > > > >> 3. Can I design my own option format to create metadata by DMRAID > such > >> as:"dmraid -ms isw_xxxxxx_raidSet1" (d and D have been used.) to > delete > >> a raid set and "dmraid -f isw -w "isw_xxxx_raidNewSet device-mapper > >> format" where device-mapper format is "0 1028160 striped 2 256 > /dev/sdb > >> 0 /dev/sdc 0". But I have trouble for nested raid setup and try to > use > >> raid10 or raid51 to identify it. > > > >To create a RAID set: > >dmraid -C isw_xxxxxx_raidSet1 [--layout LAYOUT] [--size X[kmgt]] > >[DevicePath...] > > > >LAYOUT = string types defined in metadata.c (see get_type() function; > >eg. "mirror"). > >X = size in KB, MB, GB, TB. > > > >In the isw case, which is different from most other metadata format > >handlers > >but DDF1, isw.c's create method would need to cover more complex > >allocation, > >because other volumes might already be on the devices. > > > >To delete a specific RAID set we can add to the existing erase option: > > > >dmraid -rE isw_xxxxxx_raidSet1 > > > > > Let me rephrase what you've said. The input of DMRAID includes all > necessary attributes of a raid set (called volume in ISW) to be created. > An internal function, create_set, grabs user's choices and fills into a > data structure, e.g. struct raidset_attr. The data structure already exist: raid_set and raid_dev. For one-level sets, a raid_set structure with multiple raid_dev structures hanging off. For 2-level sets (eg. RAID10), a top-level raid_set structure, multiple bottom level raid_set structures hanging off it and multiple raid_dev structures hanging off the bottom level ones. You got to check, if the properties (ie. the structure mebers) are sufficient or if we need to add some. > Then it calls .create of an > appropriate handler to build and write metadata to each hard device of > the raid set. It calls a) .create and of that succeeds it'll call b) .write in a followup step. > > Also struct raidset_attr should cover parameters used to setup spare > devices, resize an old raid set, and migrate non-raid device to a raid > set, etc. All in raid_set and raid_dev. > > How about manual and auto rebuilding? Should updating metadata status be > handled by DMRAID or device drivers? By dmraid using dmeventd, which is part of libdevmapper. You got to create a dmraid DSO for dmeventd to make that happen. Look at the mirror DSO for dmeventd for an example. Heinz > > > Thanks, > Ying _______________________________________________ Ataraid-list mailing list Ataraid-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/ataraid-list