Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 16563
b: refs/heads/master
c: 8bb93aa
h: refs/heads/master
i:
  16561: f257bff
  16559: 34f8349
v: v3
  • Loading branch information
NeilBrown authored and Linus Torvalds committed Jan 6, 2006
1 parent c198ac5 commit 9e75632
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a35b0d695d44410eb1734c9abb632725a3138628
refs/heads/master: 8bb93aaca2062cd54cc2c58c76ee8409cae209a7
6 changes: 6 additions & 0 deletions trunk/Documentation/md.txt
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,12 @@ All md devices contain:
the array if the personality supports it (raid1, raid5, raid6),
and if the component drives are large enough.

metadata_version
This indicates the format that is being used to record metadata
about the array. It can be 0.90 (traditional format), 1.0, 1.1,
1.2 (newer format in varying locations) or "none" indicating that
the kernel isn't managing metadata at all.

As component devices are added to an md array, they appear in the 'md'
directory as new directories named
dev-XXX
Expand Down
49 changes: 49 additions & 0 deletions trunk/drivers/md/md.c
Original file line number Diff line number Diff line change
Expand Up @@ -1857,6 +1857,54 @@ size_store(mddev_t *mddev, const char *buf, size_t len)
static struct md_sysfs_entry md_size =
__ATTR(component_size, 0644, size_show, size_store);


/* Metdata version.
* This is either 'none' for arrays with externally managed metadata,
* or N.M for internally known formats
*/
static ssize_t
metadata_show(mddev_t *mddev, char *page)
{
if (mddev->persistent)
return sprintf(page, "%d.%d\n",
mddev->major_version, mddev->minor_version);
else
return sprintf(page, "none\n");
}

static ssize_t
metadata_store(mddev_t *mddev, const char *buf, size_t len)
{
int major, minor;
char *e;
if (!list_empty(&mddev->disks))
return -EBUSY;

if (cmd_match(buf, "none")) {
mddev->persistent = 0;
mddev->major_version = 0;
mddev->minor_version = 90;
return len;
}
major = simple_strtoul(buf, &e, 10);
if (e==buf || *e != '.')
return -EINVAL;
buf = e+1;
minor = simple_strtoul(buf, &e, 10);
if (e==buf || *e != '\n')
return -EINVAL;
if (major >= sizeof(super_types)/sizeof(super_types[0]) ||
super_types[major].name == NULL)
return -ENOENT;
mddev->major_version = major;
mddev->minor_version = minor;
mddev->persistent = 1;
return len;
}

static struct md_sysfs_entry md_metadata =
__ATTR(metadata_version, 0644, metadata_show, metadata_store);

static ssize_t
action_show(mddev_t *mddev, char *page)
{
Expand Down Expand Up @@ -1926,6 +1974,7 @@ static struct attribute *md_default_attrs[] = {
&md_raid_disks.attr,
&md_chunk_size.attr,
&md_size.attr,
&md_metadata.attr,
NULL,
};

Expand Down

0 comments on commit 9e75632

Please sign in to comment.