mirror of
https://github.com/adulau/aha.git
synced 2025-01-03 22:53:18 +00:00
[DLM] Look for "nodir" in the lockspace mount options
Look for "nodir" in the hostdata mount option which is used to set the NODIR flag in dlm_new_lockspace(). Signed-off-by: David Teigland <teigland@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
parent
71b86f562b
commit
7aabffcab4
1 changed files with 17 additions and 9 deletions
|
@ -60,7 +60,7 @@ static struct gdlm_ls *init_gdlm(lm_callback_t cb, lm_fsdata_t *fsdata,
|
||||||
return ls;
|
return ls;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int make_args(struct gdlm_ls *ls, char *data_arg)
|
static int make_args(struct gdlm_ls *ls, char *data_arg, int *nodir)
|
||||||
{
|
{
|
||||||
char data[256];
|
char data[256];
|
||||||
char *options, *x, *y;
|
char *options, *x, *y;
|
||||||
|
@ -101,6 +101,14 @@ static int make_args(struct gdlm_ls *ls, char *data_arg)
|
||||||
}
|
}
|
||||||
sscanf(y, "%u", &ls->id);
|
sscanf(y, "%u", &ls->id);
|
||||||
|
|
||||||
|
} else if (!strcmp(x, "nodir")) {
|
||||||
|
if (!y) {
|
||||||
|
log_error("need argument to nodir");
|
||||||
|
error = -EINVAL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
sscanf(y, "%u", nodir);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
log_error("unkonwn option: %s", x);
|
log_error("unkonwn option: %s", x);
|
||||||
error = -EINVAL;
|
error = -EINVAL;
|
||||||
|
@ -118,7 +126,7 @@ static int gdlm_mount(char *table_name, char *host_data,
|
||||||
struct kobject *fskobj)
|
struct kobject *fskobj)
|
||||||
{
|
{
|
||||||
struct gdlm_ls *ls;
|
struct gdlm_ls *ls;
|
||||||
int error = -ENOMEM;
|
int error = -ENOMEM, nodir = 0;
|
||||||
|
|
||||||
if (min_lvb_size > GDLM_LVB_SIZE)
|
if (min_lvb_size > GDLM_LVB_SIZE)
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -127,12 +135,18 @@ static int gdlm_mount(char *table_name, char *host_data,
|
||||||
if (!ls)
|
if (!ls)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
error = make_args(ls, host_data, &nodir);
|
||||||
|
if (error)
|
||||||
|
goto out;
|
||||||
|
|
||||||
error = gdlm_init_threads(ls);
|
error = gdlm_init_threads(ls);
|
||||||
if (error)
|
if (error)
|
||||||
goto out_free;
|
goto out_free;
|
||||||
|
|
||||||
error = dlm_new_lockspace(ls->fsname, strlen(ls->fsname),
|
error = dlm_new_lockspace(ls->fsname, strlen(ls->fsname),
|
||||||
&ls->dlm_lockspace, 0, GDLM_LVB_SIZE);
|
&ls->dlm_lockspace,
|
||||||
|
nodir ? DLM_LSFL_NODIR : 0,
|
||||||
|
GDLM_LVB_SIZE);
|
||||||
if (error) {
|
if (error) {
|
||||||
log_error("dlm_new_lockspace error %d", error);
|
log_error("dlm_new_lockspace error %d", error);
|
||||||
goto out_thread;
|
goto out_thread;
|
||||||
|
@ -142,10 +156,6 @@ static int gdlm_mount(char *table_name, char *host_data,
|
||||||
if (error)
|
if (error)
|
||||||
goto out_dlm;
|
goto out_dlm;
|
||||||
|
|
||||||
error = make_args(ls, host_data);
|
|
||||||
if (error)
|
|
||||||
goto out_sysfs;
|
|
||||||
|
|
||||||
lockstruct->ls_jid = ls->jid;
|
lockstruct->ls_jid = ls->jid;
|
||||||
lockstruct->ls_first = ls->first;
|
lockstruct->ls_first = ls->first;
|
||||||
lockstruct->ls_lockspace = ls;
|
lockstruct->ls_lockspace = ls;
|
||||||
|
@ -154,8 +164,6 @@ static int gdlm_mount(char *table_name, char *host_data,
|
||||||
lockstruct->ls_lvb_size = GDLM_LVB_SIZE;
|
lockstruct->ls_lvb_size = GDLM_LVB_SIZE;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
out_sysfs:
|
|
||||||
gdlm_kobject_release(ls);
|
|
||||||
out_dlm:
|
out_dlm:
|
||||||
dlm_release_lockspace(ls->dlm_lockspace, 2);
|
dlm_release_lockspace(ls->dlm_lockspace, 2);
|
||||||
out_thread:
|
out_thread:
|
||||||
|
|
Loading…
Reference in a new issue