Set deactivation
Heinz Mauelshagen
heinzm at redhat.com
Thu Dec 4 22:04:48 UTC 2008
Am Donnerstag, den 04.12.2008, 13:28 -0500 schrieb Phillip Susi:
> Heinz Mauelshagen wrote:
> > Before I search...
> > Which dmraid version are you referring to.
>
> rc14. I just checked rc15 and it has been changed to:
>
> if (DM_DEVICE_CREATE == type) {
> ret = dmraid_uuid(lc, rs, uuid, DM_UUID_LEN) &&
> dm_task_set_uuid(dmt, uuid) && dm_task_run(dmt);
> } else
> ret = dm_task_run(dmt);
>
> Which makes more sense, but I'm still left wondering how deactivation
> ever worked in rc14.
Because "type = DM_DEVICE_REMOVE" is passed via dm_remove().
See the dm_task_create(type) call in run_task, which hence receives a
DM_REMOVE_DEVICE as the type.
Code you reference in rc15 has been added for mapped device UUID
support. It only creates and sets a UUID on DM_DEVICE_CREATE for obvious
reasons.
Heinz
>
> > Am Dienstag, den 02.12.2008, 14:43 -0500 schrieb Phillip Susi:
> >> I'm trying to debug why dmraid won't deactivate this raid set and am
> >> very confused by the code I see. Hopefully someone can shed some light
> >> on this.
> >>
> >> change_set() calls deactivate_set() which calls dm_remove(), which calls
> >> run_task() in lib/activate/devmapper.c. run_task() looks like this:
> >>
> >> if (ret &&
> >> DM_DEVICE_CREATE == type)
> >> ret = dmraid_uuid(lc, rs, uuid, DM_UUID_LEN) &&
> >> dm_task_set_uuid(dmt, uuid) &&
> >> dm_task_run(dmt);
> >>
> >> Now that looks to me like the only kind of task it will run is a create
> >> task, not a remove task, like the one it is being asked to do. This
> >> code looks like it will never work, as if the removal code was never
> >> completed, yet I know that dmraid -an does work normally, so what gives?
>
More information about the Ataraid-list
mailing list