1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-03 05:18:29 +03:00

cleanup: tiny speedup of lib_dir checking

Instead of repeated lookup of global/library_dir - remember first
search in command context - saves couple lines in debug output...
This commit is contained in:
Zdenek Kabelac 2013-12-06 16:35:54 +01:00
parent 0fcdc8a020
commit 9f0e27a18c
4 changed files with 8 additions and 3 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.105 - Version 2.02.105 -
===================================== =====================================
Cache global library dir in command context.
Return success when inserting dirs and links into device cache. Return success when inserting dirs and links into device cache.
Test for remote exclusive activation after activation fails. Test for remote exclusive activation after activation fails.
Support lvconvert --merge for thin snapshots. Support lvconvert --merge for thin snapshots.

View File

@ -1654,6 +1654,8 @@ int refresh_toolcontext(struct cmd_context *cmd)
cmd->hosttags = 0; cmd->hosttags = 0;
cmd->lib_dir = NULL;
if (!_init_lvm_conf(cmd)) if (!_init_lvm_conf(cmd))
return 0; return 0;

View File

@ -121,6 +121,7 @@ struct cmd_context {
struct dm_list tags; struct dm_list tags;
int hosttags; int hosttags;
const char *lib_dir; /* Cache value global/library_dir */
char system_dir[PATH_MAX]; char system_dir[PATH_MAX];
char dev_dir[PATH_MAX]; char dev_dir[PATH_MAX];
char proc_dir[PATH_MAX]; char proc_dir[PATH_MAX];

View File

@ -16,6 +16,7 @@
#include "lib.h" #include "lib.h"
#include "config.h" #include "config.h"
#include "sharedlib.h" #include "sharedlib.h"
#include "toolcontext.h"
#include <limits.h> #include <limits.h>
#include <sys/stat.h> #include <sys/stat.h>
@ -25,13 +26,13 @@ void get_shared_library_path(struct cmd_context *cmd, const char *libname,
char *path, size_t path_len) char *path, size_t path_len)
{ {
struct stat info; struct stat info;
const char *lib_dir;
/* If libname doesn't begin with '/' then use lib_dir/libname, /* If libname doesn't begin with '/' then use lib_dir/libname,
* if present */ * if present */
if (libname[0] == '/' || if (libname[0] == '/' ||
!(lib_dir = find_config_tree_str(cmd, global_library_dir_CFG, NULL)) || (!cmd->lib_dir &&
(dm_snprintf(path, path_len, "%s/%s", lib_dir, !(cmd->lib_dir = find_config_tree_str(cmd, global_library_dir_CFG, NULL))) ||
(dm_snprintf(path, path_len, "%s/%s", cmd->lib_dir,
libname) == -1) || stat(path, &info) == -1) { libname) == -1) || stat(path, &info) == -1) {
strncpy(path, libname, path_len - 1); strncpy(path, libname, path_len - 1);
path[path_len - 1] = '\0'; path[path_len - 1] = '\0';