forked from Minki/linux
dm ioctl: report event number in DM_LIST_DEVICES
Report the event numbers for all the devices, so that the user doesn't have to ask them one by one. The event number is reported after the name field in the dm_name_list structure. The location of the next record is specified in the dm_name_list->next field, that means that we can put the new data after the end of name and it is backward compatible with the old code. The old code just skips the event number without interpreting it. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Andy Grover <agrover@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
parent
fc1841e1c1
commit
23d70c5e52
@ -506,6 +506,7 @@ static int list_devices(struct file *filp, struct dm_ioctl *param, size_t param_
|
||||
size_t len, needed = 0;
|
||||
struct gendisk *disk;
|
||||
struct dm_name_list *nl, *old_nl = NULL;
|
||||
uint32_t *event_nr;
|
||||
|
||||
down_write(&_hash_lock);
|
||||
|
||||
@ -518,6 +519,7 @@ static int list_devices(struct file *filp, struct dm_ioctl *param, size_t param_
|
||||
needed += sizeof(struct dm_name_list);
|
||||
needed += strlen(hc->name) + 1;
|
||||
needed += ALIGN_MASK;
|
||||
needed += (sizeof(uint32_t) + ALIGN_MASK) & ~ALIGN_MASK;
|
||||
}
|
||||
}
|
||||
|
||||
@ -547,7 +549,9 @@ static int list_devices(struct file *filp, struct dm_ioctl *param, size_t param_
|
||||
strcpy(nl->name, hc->name);
|
||||
|
||||
old_nl = nl;
|
||||
nl = align_ptr(((void *) ++nl) + strlen(hc->name) + 1);
|
||||
event_nr = align_ptr(((void *) (nl + 1)) + strlen(hc->name) + 1);
|
||||
*event_nr = dm_get_event_nr(hc->md);
|
||||
nl = align_ptr(event_nr + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user