[lvm-devel] [PATCH 1/2] Always query device by uuid only.
Petr Rockai
prockai at redhat.com
Wed Feb 24 15:41:45 UTC 2010
Hi,
Milan Broz <mbroz at redhat.com> writes:
> diff --git a/lib/activate/activate.c b/lib/activate/activate.c
> index dcdad73..4e43131 100644
> --- a/lib/activate/activate.c
> +++ b/lib/activate/activate.c
> @@ -444,7 +444,7 @@ int lv_info(struct cmd_context *cmd, const struct logical_volume *lv,
> if (!activation())
> return 0;
>
> - if (!dev_manager_info(lv->vg->cmd->mem, lv, 0, with_open_count,
> + if (!dev_manager_info(lv->vg->cmd->mem, lv, with_open_count,
> with_read_ahead, &dminfo, &info->read_ahead))
> return_0;
>
> @@ -1148,7 +1148,6 @@ int lv_activate_with_filter(struct cmd_context *cmd, const char *lvid_s, int exc
>
> int lv_mknodes(struct cmd_context *cmd, const struct logical_volume *lv)
> {
> - struct dm_info dminfo;
> int r = 1;
>
> if (!lv) {
> @@ -1160,15 +1159,7 @@ int lv_mknodes(struct cmd_context *cmd, const struct logical_volume *lv)
> if (!activation())
> return 0;
>
> - if (!dev_manager_info(lv->vg->cmd->mem, lv, 1,
> - 0, 0, &dminfo, NULL))
> - return_0;
> -
> - if (dminfo.exists) {
> - if (lv_is_visible(lv))
> - r = dev_manager_lv_mknodes(lv);
> - } else
> - r = dev_manager_lv_rmnodes(lv);
> + r = dev_manager_mknodes(lv);
>
> fs_unlock();
OK.
> diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
> index 84f94ff..70c0b04 100644
> --- a/lib/activate/dev_manager.c
> +++ b/lib/activate/dev_manager.c
> @@ -207,27 +207,18 @@ int device_is_usable(dev_t dev)
> return r;
> }
>
> -static int _info(const char *name, const char *dlid, int mknodes,
> - int with_open_count, int with_read_ahead,
> +static int _info(const char *dlid, int with_open_count, int with_read_ahead,
> struct dm_info *info, uint32_t *read_ahead)
> {
> int r = 0;
>
> - if (!mknodes && dlid && *dlid) {
> - if ((r = _info_run(NULL, dlid, info, read_ahead, 0, with_open_count,
> - with_read_ahead, 0, 0)) &&
> - info->exists)
> - return 1;
> - else if ((r = _info_run(NULL, dlid + sizeof(UUID_PREFIX) - 1, info,
> - read_ahead, 0, with_open_count,
> - with_read_ahead, 0, 0)) &&
> - info->exists)
> - return 1;
> - }
> -
> - if (name)
> - return _info_run(name, NULL, info, read_ahead, mknodes,
> - with_open_count, with_read_ahead, 0, 0);
> + if ((r = _info_run(NULL, dlid, info, read_ahead, 0, with_open_count,
> + with_read_ahead, 0, 0)) && info->exists)
> + return 1;
> + else if ((r = _info_run(NULL, dlid + sizeof(UUID_PREFIX) - 1, info,
> + read_ahead, 0, with_open_count,
> + with_read_ahead, 0, 0)) && info->exists)
> + return 1;
>
> return r;
> }
OK.
> @@ -238,7 +229,7 @@ static int _info_by_dev(uint32_t major, uint32_t minor, struct dm_info *info)
> }
>
> int dev_manager_info(struct dm_pool *mem, const struct logical_volume *lv,
> - int with_mknodes, int with_open_count, int with_read_ahead,
> + int with_open_count, int with_read_ahead,
> struct dm_info *info, uint32_t *read_ahead)
> {
> const char *dlid, *name;
> @@ -254,9 +245,8 @@ int dev_manager_info(struct dm_pool *mem, const struct logical_volume *lv,
> return 0;
> }
>
> - log_debug("Getting device info for %s", name);
> - r = _info(NULL, dlid, with_mknodes, with_open_count,
> - with_read_ahead, info, read_ahead);
> + log_debug("Getting device info for %s [%s]", name, dlid);
> + r = _info(dlid, with_open_count, with_read_ahead, info, read_ahead);
>
> dm_pool_free(mem, (char*)name);
> return r;
> @@ -755,7 +745,7 @@ static int _belong_to_vg(const char *vgname, const char *name)
> /* NEW CODE STARTS HERE */
> /*************************/
>
> -int dev_manager_lv_mknodes(const struct logical_volume *lv)
> +static int dev_manager_lv_mknodes(const struct logical_volume *lv)
_dev_manager_lv_mknodes (due to static)?
> @@ -766,11 +756,32 @@ int dev_manager_lv_mknodes(const struct logical_volume *lv)
> return fs_add_lv(lv, name);
> }
>
> -int dev_manager_lv_rmnodes(const struct logical_volume *lv)
> +static int dev_manager_lv_rmnodes(const struct logical_volume *lv)
Same as above.
> +int dev_manager_mknodes(const struct logical_volume *lv)
> +{
> + struct dm_info dminfo;
> + const char *name;
> + int r = 0;
> +
> + if (!(name = build_dm_name(lv->vg->cmd->mem, lv->vg->name, lv->name, NULL)))
> + return_0;
> +
> + if ((r = _info_run(name, NULL, &dminfo, NULL, 1, 0, 0, 0, 0))) {
> + if (dminfo.exists) {
> + if (lv_is_visible(lv))
> + r = dev_manager_lv_mknodes(lv);
> + } else
> + r = dev_manager_lv_rmnodes(lv);
> + }
> +
> + dm_pool_free(lv->vg->cmd->mem, (char*)name);
> + return r;
> +}
> +
> static int _add_dev_to_dtree(struct dev_manager *dm, struct dm_tree *dtree,
> struct logical_volume *lv, const char *layer)
> {
> @@ -785,7 +796,7 @@ static int _add_dev_to_dtree(struct dev_manager *dm, struct dm_tree *dtree,
> return_0;
>
> log_debug("Getting device info for %s [%s]", name, dlid);
> - if (!_info(name, dlid, 0, 1, 0, &info, NULL)) {
> + if (!_info(dlid, 1, 0, &info, NULL)) {
> log_error("Failed to get info for %s [%s].", name, dlid);
> return 0;
> }
> diff --git a/lib/activate/dev_manager.h b/lib/activate/dev_manager.h
> index 86c978f..e946aaf 100644
> --- a/lib/activate/dev_manager.h
> +++ b/lib/activate/dev_manager.h
> @@ -41,7 +41,7 @@ void dev_manager_exit(void);
> * unsuspended until the snapshot is also created.)
> */
> int dev_manager_info(struct dm_pool *mem, const struct logical_volume *lv,
> - int mknodes, int with_open_count, int with_read_ahead,
> + int with_open_count, int with_read_ahead,
> struct dm_info *info, uint32_t *read_ahead);
> int dev_manager_snapshot_percent(struct dev_manager *dm,
> const struct logical_volume *lv,
> @@ -58,8 +58,7 @@ int dev_manager_preload(struct dev_manager *dm, struct logical_volume *lv,
> int *flush_required);
> int dev_manager_deactivate(struct dev_manager *dm, struct logical_volume *lv);
>
> -int dev_manager_lv_mknodes(const struct logical_volume *lv);
> -int dev_manager_lv_rmnodes(const struct logical_volume *lv);
> +int dev_manager_mknodes(const struct logical_volume *lv);
>
Other than above, ACK.
Yours,
Petr.
More information about the lvm-devel
mailing list