[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