diff options
author | Alasdair Kergon <agk@redhat.com> | 2002-01-16 13:09:26 +0000 |
---|---|---|
committer | Alasdair Kergon <agk@redhat.com> | 2002-01-16 13:09:26 +0000 |
commit | 3c06874035fd335d6e8b324dfa7e5f62e3bc2af0 (patch) | |
tree | 0bfae3908a10523d2219ee346987148a4cfe8486 /lib/label/label.c | |
parent | d738054256bf056a0dba47b635afab33ea88fb7a (diff) | |
download | lvm2-3c06874035fd335d6e8b324dfa7e5f62e3bc2af0.tar.gz lvm2-3c06874035fd335d6e8b324dfa7e5f62e3bc2af0.tar.xz lvm2-3c06874035fd335d6e8b324dfa7e5f62e3bc2af0.zip |
Remove a duplicate disk read (can_handle).
Diffstat (limited to 'lib/label/label.c')
-rw-r--r-- | lib/label/label.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/label/label.c b/lib/label/label.c index ba280d9f..be2bcefa 100644 --- a/lib/label/label.c +++ b/lib/label/label.c @@ -120,18 +120,20 @@ int label_remove(struct device *dev) int label_read(struct device *dev, struct label **result) { - struct labeller *l; int r; + struct list *lih; + struct labeller_i *li; - if (!(l = _find_labeller(dev))) { - stack; - return 0; + list_iterate (lih, &_labellers) { + li = list_item(lih, struct labeller_i); + if ((r = li->l->ops->read(li->l, dev, result))) { + (*result)->labeller = li->l; + return r; + } } - if ((r = l->ops->read(l, dev, result))) - (*result)->labeller = l; - - return r; + log_debug("No label on device '%s'.", dev_name(dev)); + return 0; } int label_verify(struct device *dev) |