Add extra 'volume' parameter to inodelk/entrylk calls
Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
This commit is contained in:
parent
31c817836c
commit
7af8d8edbd
@ -1731,7 +1731,7 @@ out:
|
||||
|
||||
call_stub_t *
|
||||
fop_inodelk_stub (call_frame_t *frame, fop_inodelk_t fn,
|
||||
loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
const char *volume, loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
{
|
||||
call_stub_t *stub = NULL;
|
||||
|
||||
@ -1744,6 +1744,9 @@ fop_inodelk_stub (call_frame_t *frame, fop_inodelk_t fn,
|
||||
|
||||
stub->args.inodelk.fn = fn;
|
||||
|
||||
if (volume)
|
||||
stub->args.inodelk.volume = strdup (volume);
|
||||
|
||||
loc_copy (&stub->args.inodelk.loc, loc);
|
||||
stub->args.inodelk.cmd = cmd;
|
||||
stub->args.inodelk.lock = *lock;
|
||||
@ -1774,7 +1777,7 @@ fop_inodelk_cbk_stub (call_frame_t *frame, fop_inodelk_cbk_t fn,
|
||||
|
||||
call_stub_t *
|
||||
fop_finodelk_stub (call_frame_t *frame, fop_finodelk_t fn,
|
||||
fd_t *fd, int32_t cmd, struct flock *lock)
|
||||
const char *volume, fd_t *fd, int32_t cmd, struct flock *lock)
|
||||
{
|
||||
call_stub_t *stub = NULL;
|
||||
|
||||
@ -1789,6 +1792,10 @@ fop_finodelk_stub (call_frame_t *frame, fop_finodelk_t fn,
|
||||
|
||||
if (fd)
|
||||
stub->args.finodelk.fd = fd_ref (fd);
|
||||
|
||||
if (volume)
|
||||
stub->args.finodelk.volume = strdup (volume);
|
||||
|
||||
stub->args.finodelk.cmd = cmd;
|
||||
stub->args.finodelk.lock = *lock;
|
||||
|
||||
@ -1819,7 +1826,7 @@ fop_finodelk_cbk_stub (call_frame_t *frame, fop_inodelk_cbk_t fn,
|
||||
|
||||
call_stub_t *
|
||||
fop_entrylk_stub (call_frame_t *frame, fop_entrylk_t fn,
|
||||
loc_t *loc, const char *name,
|
||||
const char *volume, loc_t *loc, const char *name,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
call_stub_t *stub = NULL;
|
||||
@ -1832,6 +1839,10 @@ fop_entrylk_stub (call_frame_t *frame, fop_entrylk_t fn,
|
||||
return NULL;
|
||||
|
||||
stub->args.entrylk.fn = fn;
|
||||
|
||||
if (volume)
|
||||
stub->args.entrylk.volume = strdup (volume);
|
||||
|
||||
loc_copy (&stub->args.entrylk.loc, loc);
|
||||
|
||||
stub->args.entrylk.cmd = cmd;
|
||||
@ -1865,7 +1876,7 @@ fop_entrylk_cbk_stub (call_frame_t *frame, fop_entrylk_cbk_t fn,
|
||||
|
||||
call_stub_t *
|
||||
fop_fentrylk_stub (call_frame_t *frame, fop_fentrylk_t fn,
|
||||
fd_t *fd, const char *name,
|
||||
const char *volume, fd_t *fd, const char *name,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
call_stub_t *stub = NULL;
|
||||
@ -1879,6 +1890,9 @@ fop_fentrylk_stub (call_frame_t *frame, fop_fentrylk_t fn,
|
||||
|
||||
stub->args.fentrylk.fn = fn;
|
||||
|
||||
if (volume)
|
||||
stub->args.fentrylk.volume = strdup (volume);
|
||||
|
||||
if (fd)
|
||||
stub->args.fentrylk.fd = fd_ref (fd);
|
||||
stub->args.fentrylk.cmd = cmd;
|
||||
@ -2536,6 +2550,7 @@ call_resume_wind (call_stub_t *stub)
|
||||
{
|
||||
stub->args.inodelk.fn (stub->frame,
|
||||
stub->frame->this,
|
||||
stub->args.inodelk.volume,
|
||||
&stub->args.inodelk.loc,
|
||||
stub->args.inodelk.cmd,
|
||||
&stub->args.inodelk.lock);
|
||||
@ -2546,6 +2561,7 @@ call_resume_wind (call_stub_t *stub)
|
||||
{
|
||||
stub->args.finodelk.fn (stub->frame,
|
||||
stub->frame->this,
|
||||
stub->args.finodelk.volume,
|
||||
stub->args.finodelk.fd,
|
||||
stub->args.finodelk.cmd,
|
||||
&stub->args.finodelk.lock);
|
||||
@ -2556,6 +2572,7 @@ call_resume_wind (call_stub_t *stub)
|
||||
{
|
||||
stub->args.entrylk.fn (stub->frame,
|
||||
stub->frame->this,
|
||||
stub->args.entrylk.volume,
|
||||
&stub->args.entrylk.loc,
|
||||
stub->args.entrylk.name,
|
||||
stub->args.entrylk.cmd,
|
||||
@ -2567,6 +2584,7 @@ call_resume_wind (call_stub_t *stub)
|
||||
{
|
||||
stub->args.fentrylk.fn (stub->frame,
|
||||
stub->frame->this,
|
||||
stub->args.fentrylk.volume,
|
||||
stub->args.fentrylk.fd,
|
||||
stub->args.fentrylk.name,
|
||||
stub->args.fentrylk.cmd,
|
||||
@ -3744,17 +3762,26 @@ call_stub_destroy_wind (call_stub_t *stub)
|
||||
|
||||
case GF_FOP_INODELK:
|
||||
{
|
||||
if (stub->args.inodelk.volume)
|
||||
FREE (stub->args.inodelk.volume);
|
||||
|
||||
loc_wipe (&stub->args.inodelk.loc);
|
||||
break;
|
||||
}
|
||||
case GF_FOP_FINODELK:
|
||||
{
|
||||
if (stub->args.finodelk.volume)
|
||||
FREE (stub->args.finodelk.volume);
|
||||
|
||||
if (stub->args.finodelk.fd)
|
||||
fd_unref (stub->args.finodelk.fd);
|
||||
break;
|
||||
}
|
||||
case GF_FOP_ENTRYLK:
|
||||
{
|
||||
if (stub->args.entrylk.volume)
|
||||
FREE (stub->args.entrylk.volume);
|
||||
|
||||
if (stub->args.entrylk.name)
|
||||
FREE (stub->args.entrylk.name);
|
||||
loc_wipe (&stub->args.entrylk.loc);
|
||||
@ -3762,6 +3789,9 @@ call_stub_destroy_wind (call_stub_t *stub)
|
||||
}
|
||||
case GF_FOP_FENTRYLK:
|
||||
{
|
||||
if (stub->args.fentrylk.volume)
|
||||
FREE (stub->args.fentrylk.volume);
|
||||
|
||||
if (stub->args.fentrylk.name)
|
||||
FREE (stub->args.fentrylk.name);
|
||||
|
||||
|
@ -487,6 +487,7 @@ typedef struct {
|
||||
/* inodelk */
|
||||
struct {
|
||||
fop_inodelk_t fn;
|
||||
const char *volume;
|
||||
loc_t loc;
|
||||
int32_t cmd;
|
||||
struct flock lock;
|
||||
@ -500,6 +501,7 @@ typedef struct {
|
||||
/* finodelk */
|
||||
struct {
|
||||
fop_finodelk_t fn;
|
||||
const char *volume;
|
||||
fd_t *fd;
|
||||
int32_t cmd;
|
||||
struct flock lock;
|
||||
@ -514,6 +516,7 @@ typedef struct {
|
||||
struct {
|
||||
fop_entrylk_t fn;
|
||||
loc_t loc;
|
||||
const char *volume;
|
||||
const char *name;
|
||||
entrylk_cmd cmd;
|
||||
entrylk_type type;
|
||||
@ -528,6 +531,7 @@ typedef struct {
|
||||
struct {
|
||||
fop_fentrylk_t fn;
|
||||
fd_t *fd;
|
||||
const char *volume;
|
||||
const char *name;
|
||||
entrylk_cmd cmd;
|
||||
entrylk_type type;
|
||||
@ -1086,20 +1090,22 @@ fop_lk_cbk_stub (call_frame_t *frame,
|
||||
|
||||
call_stub_t *
|
||||
fop_inodelk_stub (call_frame_t *frame, fop_inodelk_t fn,
|
||||
loc_t *loc, int32_t cmd, struct flock *lock);
|
||||
const char *volume, loc_t *loc, int32_t cmd,
|
||||
struct flock *lock);
|
||||
|
||||
call_stub_t *
|
||||
fop_finodelk_stub (call_frame_t *frame, fop_finodelk_t fn,
|
||||
fd_t *fd, int32_t cmd, struct flock *lock);
|
||||
const char *volume, fd_t *fd, int32_t cmd,
|
||||
struct flock *lock);
|
||||
|
||||
call_stub_t *
|
||||
fop_entrylk_stub (call_frame_t *frame, fop_entrylk_t fn,
|
||||
loc_t *loc, const char *basename,
|
||||
const char *volume, loc_t *loc, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type);
|
||||
|
||||
call_stub_t *
|
||||
fop_fentrylk_stub (call_frame_t *frame, fop_fentrylk_t fn,
|
||||
fd_t *fd, const char *basename,
|
||||
const char *volume, fd_t *fd, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type);
|
||||
|
||||
call_stub_t *
|
||||
|
@ -1199,13 +1199,14 @@ default_inodelk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
int32_t
|
||||
default_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
const char *volume, loc_t *loc, int32_t cmd,
|
||||
struct flock *lock)
|
||||
{
|
||||
STACK_WIND (frame,
|
||||
default_inodelk_cbk,
|
||||
FIRST_CHILD(this),
|
||||
FIRST_CHILD(this)->fops->inodelk,
|
||||
loc, cmd, lock);
|
||||
volume, loc, cmd, lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1222,13 +1223,13 @@ default_finodelk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
int32_t
|
||||
default_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, int32_t cmd, struct flock *lock)
|
||||
const char *volume, fd_t *fd, int32_t cmd, struct flock *lock)
|
||||
{
|
||||
STACK_WIND (frame,
|
||||
default_finodelk_cbk,
|
||||
FIRST_CHILD(this),
|
||||
FIRST_CHILD(this)->fops->finodelk,
|
||||
fd, cmd, lock);
|
||||
volume, fd, cmd, lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1244,13 +1245,13 @@ default_entrylk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
int32_t
|
||||
default_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, const char *basename,
|
||||
const char *volume, loc_t *loc, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
STACK_WIND (frame, default_entrylk_cbk,
|
||||
FIRST_CHILD(this),
|
||||
FIRST_CHILD(this)->fops->entrylk,
|
||||
loc, basename, cmd, type);
|
||||
volume, loc, basename, cmd, type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1265,13 +1266,13 @@ default_fentrylk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
int32_t
|
||||
default_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, const char *basename,
|
||||
const char *volume, fd_t *fd, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
STACK_WIND (frame, default_fentrylk_cbk,
|
||||
FIRST_CHILD(this),
|
||||
FIRST_CHILD(this)->fops->fentrylk,
|
||||
fd, basename, cmd, type);
|
||||
volume, fd, basename, cmd, type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -230,17 +230,19 @@ int32_t default_lk (call_frame_t *frame,
|
||||
struct flock *flock);
|
||||
|
||||
int32_t default_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, int32_t cmd, struct flock *flock);
|
||||
const char *volume, loc_t *loc, int32_t cmd,
|
||||
struct flock *flock);
|
||||
|
||||
int32_t default_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, int32_t cmd, struct flock *flock);
|
||||
const char *volume, fd_t *fd, int32_t cmd,
|
||||
struct flock *flock);
|
||||
|
||||
int32_t default_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, const char *basename,
|
||||
const char *volume, loc_t *loc, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type);
|
||||
|
||||
int32_t default_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, const char *basename,
|
||||
const char *volume, fd_t *fd, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type);
|
||||
|
||||
int32_t default_readdir (call_frame_t *frame,
|
||||
|
@ -557,6 +557,7 @@ typedef struct {
|
||||
uint32_t type;
|
||||
struct gf_flock flock;
|
||||
char path[0];
|
||||
char volume[0];
|
||||
} __attribute__((packed)) gf_fop_inodelk_req_t;
|
||||
typedef struct {
|
||||
} __attribute__((packed)) gf_fop_inodelk_rsp_t;
|
||||
@ -567,6 +568,7 @@ typedef struct {
|
||||
uint32_t cmd;
|
||||
uint32_t type;
|
||||
struct gf_flock flock;
|
||||
char volume[0];
|
||||
} __attribute__((packed)) gf_fop_finodelk_req_t;
|
||||
typedef struct {
|
||||
} __attribute__((packed)) gf_fop_finodelk_rsp_t;
|
||||
@ -578,6 +580,7 @@ typedef struct {
|
||||
uint64_t namelen;
|
||||
char path[0];
|
||||
char name[0];
|
||||
char volume[0];
|
||||
} __attribute__((packed)) gf_fop_entrylk_req_t;
|
||||
typedef struct {
|
||||
} __attribute__((packed)) gf_fop_entrylk_rsp_t;
|
||||
@ -589,6 +592,7 @@ typedef struct {
|
||||
uint32_t type;
|
||||
uint64_t namelen;
|
||||
char name[0];
|
||||
char volume[0];
|
||||
} __attribute__((packed)) gf_fop_fentrylk_req_t;
|
||||
typedef struct {
|
||||
} __attribute__((packed)) gf_fop_fentrylk_rsp_t;
|
||||
|
@ -626,23 +626,27 @@ typedef int32_t (*fop_lk_t) (call_frame_t *frame,
|
||||
|
||||
typedef int32_t (*fop_inodelk_t) (call_frame_t *frame,
|
||||
xlator_t *this,
|
||||
const char *volume,
|
||||
loc_t *loc,
|
||||
int32_t cmd,
|
||||
struct flock *flock);
|
||||
|
||||
typedef int32_t (*fop_finodelk_t) (call_frame_t *frame,
|
||||
xlator_t *this,
|
||||
const char *volume,
|
||||
fd_t *fd,
|
||||
int32_t cmd,
|
||||
struct flock *flock);
|
||||
|
||||
typedef int32_t (*fop_entrylk_t) (call_frame_t *frame,
|
||||
xlator_t *this, loc_t *loc,
|
||||
xlator_t *this,
|
||||
const char *volume, loc_t *loc,
|
||||
const char *basename, entrylk_cmd cmd,
|
||||
entrylk_type type);
|
||||
|
||||
typedef int32_t (*fop_fentrylk_t) (call_frame_t *frame,
|
||||
xlator_t *this, fd_t *fd,
|
||||
xlator_t *this,
|
||||
const char *volume, fd_t *fd,
|
||||
const char *basename, entrylk_cmd cmd,
|
||||
entrylk_type type);
|
||||
|
||||
|
@ -504,6 +504,7 @@ sh_missing_entries_finish (call_frame_t *frame, xlator_t *this)
|
||||
STACK_WIND (frame, sh_missing_entries_unlck_cbk,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->entrylk,
|
||||
this->name,
|
||||
&sh->parent_loc, local->loc.name,
|
||||
ENTRYLK_UNLOCK, ENTRYLK_WRLCK);
|
||||
|
||||
@ -1008,6 +1009,7 @@ afr_self_heal_missing_entries (call_frame_t *frame, xlator_t *this)
|
||||
STACK_WIND (frame, sh_missing_entries_lk_cbk,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->entrylk,
|
||||
this->name,
|
||||
&sh->parent_loc, local->loc.name,
|
||||
ENTRYLK_LOCK_NB, ENTRYLK_WRLCK);
|
||||
if (!--call_count)
|
||||
|
@ -231,6 +231,7 @@ afr_sh_data_unlock (call_frame_t *frame, xlator_t *this)
|
||||
(void *) (long) i,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->inodelk,
|
||||
this->name,
|
||||
&local->loc, F_SETLK, &flock);
|
||||
if (!--call_count)
|
||||
break;
|
||||
@ -995,6 +996,7 @@ afr_sh_data_lock (call_frame_t *frame, xlator_t *this)
|
||||
(void *) (long) i,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->inodelk,
|
||||
this->name,
|
||||
&local->loc, F_SETLK, &flock);
|
||||
if (!--call_count)
|
||||
break;
|
||||
|
@ -146,6 +146,7 @@ afr_sh_entry_unlock (call_frame_t *frame, xlator_t *this)
|
||||
(void *) (long) i,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->entrylk,
|
||||
this->name,
|
||||
&local->loc, NULL,
|
||||
ENTRYLK_UNLOCK, ENTRYLK_WRLCK);
|
||||
if (!--call_count)
|
||||
@ -2001,6 +2002,7 @@ afr_sh_entry_lock (call_frame_t *frame, xlator_t *this)
|
||||
(void *) (long) i,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->entrylk,
|
||||
this->name,
|
||||
&local->loc, NULL,
|
||||
ENTRYLK_LOCK_NB, ENTRYLK_WRLCK);
|
||||
if (!--call_count)
|
||||
|
@ -158,6 +158,7 @@ afr_sh_metadata_finish (call_frame_t *frame, xlator_t *this)
|
||||
STACK_WIND (frame, afr_sh_metadata_unlck_cbk,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->inodelk,
|
||||
this->name,
|
||||
&local->loc, F_SETLK, &flock);
|
||||
|
||||
if (!--call_count)
|
||||
@ -755,6 +756,7 @@ afr_sh_metadata_lock (call_frame_t *frame, xlator_t *this)
|
||||
(void *) (long) i,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->inodelk,
|
||||
this->name,
|
||||
&local->loc, F_SETLK, &flock);
|
||||
|
||||
if (!--call_count)
|
||||
|
@ -309,12 +309,14 @@ afr_unlock (call_frame_t *frame, xlator_t *this)
|
||||
STACK_WIND (frame, afr_unlock_common_cbk,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->finodelk,
|
||||
local->fd, F_SETLK, &flock);
|
||||
this->name, local->fd,
|
||||
F_SETLK, &flock);
|
||||
} else {
|
||||
STACK_WIND (frame, afr_unlock_common_cbk,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->inodelk,
|
||||
&local->loc, F_SETLK, &flock);
|
||||
this->name, &local->loc,
|
||||
F_SETLK, &flock);
|
||||
}
|
||||
|
||||
break;
|
||||
@ -324,6 +326,7 @@ afr_unlock (call_frame_t *frame, xlator_t *this)
|
||||
STACK_WIND (frame, afr_unlock_common_cbk,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->entrylk,
|
||||
this->name,
|
||||
&local->transaction.new_parent_loc,
|
||||
local->transaction.new_basename,
|
||||
ENTRYLK_UNLOCK, ENTRYLK_WRLCK);
|
||||
@ -337,14 +340,15 @@ afr_unlock (call_frame_t *frame, xlator_t *this)
|
||||
STACK_WIND (frame, afr_unlock_common_cbk,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->fentrylk,
|
||||
local->fd,
|
||||
this->name, local->fd,
|
||||
local->transaction.basename,
|
||||
ENTRYLK_UNLOCK, ENTRYLK_WRLCK);
|
||||
} else {
|
||||
STACK_WIND (frame, afr_unlock_common_cbk,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->entrylk,
|
||||
&local->transaction.parent_loc,
|
||||
this->name,
|
||||
&local->transaction.parent_loc,
|
||||
local->transaction.basename,
|
||||
ENTRYLK_UNLOCK, ENTRYLK_WRLCK);
|
||||
|
||||
@ -838,14 +842,16 @@ int afr_lock_rec (call_frame_t *frame, xlator_t *this, int child_index)
|
||||
(void *) (long) child_index,
|
||||
priv->children[child_index],
|
||||
priv->children[child_index]->fops->finodelk,
|
||||
local->fd, F_SETLKW, &flock);
|
||||
this->name, local->fd,
|
||||
F_SETLKW, &flock);
|
||||
|
||||
} else {
|
||||
STACK_WIND_COOKIE (frame, afr_lock_cbk,
|
||||
(void *) (long) child_index,
|
||||
priv->children[child_index],
|
||||
priv->children[child_index]->fops->inodelk,
|
||||
&local->loc, F_SETLKW, &flock);
|
||||
this->name, &local->loc,
|
||||
F_SETLKW, &flock);
|
||||
}
|
||||
|
||||
break;
|
||||
@ -878,14 +884,14 @@ int afr_lock_rec (call_frame_t *frame, xlator_t *this, int child_index)
|
||||
(void *) (long) child_index,
|
||||
priv->children[child_index],
|
||||
priv->children[child_index]->fops->entrylk,
|
||||
lower, lower_name,
|
||||
this->name, lower, lower_name,
|
||||
ENTRYLK_LOCK, ENTRYLK_WRLCK);
|
||||
|
||||
STACK_WIND_COOKIE (frame, afr_lock_cbk,
|
||||
(void *) (long) child_index,
|
||||
priv->children[child_index],
|
||||
priv->children[child_index]->fops->entrylk,
|
||||
higher, higher_name,
|
||||
this->name, higher, higher_name,
|
||||
ENTRYLK_LOCK, ENTRYLK_WRLCK);
|
||||
|
||||
break;
|
||||
@ -897,7 +903,7 @@ int afr_lock_rec (call_frame_t *frame, xlator_t *this, int child_index)
|
||||
(void *) (long) child_index,
|
||||
priv->children[child_index],
|
||||
priv->children[child_index]->fops->fentrylk,
|
||||
local->fd,
|
||||
this->name, local->fd,
|
||||
local->transaction.basename,
|
||||
ENTRYLK_LOCK, ENTRYLK_WRLCK);
|
||||
} else {
|
||||
@ -905,7 +911,8 @@ int afr_lock_rec (call_frame_t *frame, xlator_t *this, int child_index)
|
||||
(void *) (long) child_index,
|
||||
priv->children[child_index],
|
||||
priv->children[child_index]->fops->entrylk,
|
||||
&local->transaction.parent_loc,
|
||||
this->name,
|
||||
&local->transaction.parent_loc,
|
||||
local->transaction.basename,
|
||||
ENTRYLK_LOCK, ENTRYLK_WRLCK);
|
||||
}
|
||||
|
@ -1173,8 +1173,8 @@ afr_inodelk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
|
||||
int32_t
|
||||
afr_inodelk (call_frame_t *frame, xlator_t *this, loc_t *loc,
|
||||
int32_t cmd, struct flock *flock)
|
||||
afr_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
const char *volume, loc_t *loc, int32_t cmd, struct flock *flock)
|
||||
{
|
||||
afr_private_t *priv = NULL;
|
||||
afr_local_t *local = NULL;
|
||||
@ -1208,7 +1208,7 @@ afr_inodelk (call_frame_t *frame, xlator_t *this, loc_t *loc,
|
||||
STACK_WIND (frame, afr_inodelk_cbk,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->inodelk,
|
||||
loc, cmd, flock);
|
||||
volume, loc, cmd, flock);
|
||||
|
||||
if (!--call_count)
|
||||
break;
|
||||
@ -1254,8 +1254,8 @@ afr_finodelk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
|
||||
int32_t
|
||||
afr_finodelk (call_frame_t *frame, xlator_t *this, fd_t *fd,
|
||||
int32_t cmd, struct flock *flock)
|
||||
afr_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
const char *volume, fd_t *fd, int32_t cmd, struct flock *flock)
|
||||
{
|
||||
afr_private_t *priv = NULL;
|
||||
afr_local_t *local = NULL;
|
||||
@ -1289,7 +1289,7 @@ afr_finodelk (call_frame_t *frame, xlator_t *this, fd_t *fd,
|
||||
STACK_WIND (frame, afr_finodelk_cbk,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->finodelk,
|
||||
fd, cmd, flock);
|
||||
volume, fd, cmd, flock);
|
||||
|
||||
if (!--call_count)
|
||||
break;
|
||||
@ -1335,7 +1335,8 @@ afr_entrylk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
|
||||
int32_t
|
||||
afr_entrylk (call_frame_t *frame, xlator_t *this, loc_t *loc,
|
||||
afr_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
const char *volume, loc_t *loc,
|
||||
const char *basename, entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
afr_private_t *priv = NULL;
|
||||
@ -1370,7 +1371,7 @@ afr_entrylk (call_frame_t *frame, xlator_t *this, loc_t *loc,
|
||||
STACK_WIND (frame, afr_entrylk_cbk,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->entrylk,
|
||||
loc, basename, cmd, type);
|
||||
volume, loc, basename, cmd, type);
|
||||
|
||||
if (!--call_count)
|
||||
break;
|
||||
@ -1417,7 +1418,8 @@ afr_fentrylk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
|
||||
int32_t
|
||||
afr_fentrylk (call_frame_t *frame, xlator_t *this, fd_t *fd,
|
||||
afr_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
const char *volume, fd_t *fd,
|
||||
const char *basename, entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
afr_private_t *priv = NULL;
|
||||
@ -1452,7 +1454,7 @@ afr_fentrylk (call_frame_t *frame, xlator_t *this, fd_t *fd,
|
||||
STACK_WIND (frame, afr_fentrylk_cbk,
|
||||
priv->children[i],
|
||||
priv->children[i]->fops->fentrylk,
|
||||
fd, basename, cmd, type);
|
||||
volume, fd, basename, cmd, type);
|
||||
|
||||
if (!--call_count)
|
||||
break;
|
||||
|
@ -3163,7 +3163,7 @@ dht_inodelk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
int32_t
|
||||
dht_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
const char *volume, loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
{
|
||||
xlator_t *subvol = NULL;
|
||||
int op_errno = -1;
|
||||
@ -3198,7 +3198,7 @@ dht_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
STACK_WIND (frame,
|
||||
dht_inodelk_cbk,
|
||||
subvol, subvol->fops->inodelk,
|
||||
loc, cmd, lock);
|
||||
volume, loc, cmd, lock);
|
||||
|
||||
return 0;
|
||||
|
||||
@ -3222,7 +3222,7 @@ dht_finodelk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
int32_t
|
||||
dht_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, int32_t cmd, struct flock *lock)
|
||||
const char *volume, fd_t *fd, int32_t cmd, struct flock *lock)
|
||||
{
|
||||
xlator_t *subvol = NULL;
|
||||
int op_errno = -1;
|
||||
@ -3243,7 +3243,7 @@ dht_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
STACK_WIND (frame,
|
||||
dht_finodelk_cbk,
|
||||
subvol, subvol->fops->finodelk,
|
||||
fd, cmd, lock);
|
||||
this->name, fd, cmd, lock);
|
||||
|
||||
return 0;
|
||||
|
||||
@ -3266,7 +3266,7 @@ dht_entrylk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
int32_t
|
||||
dht_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, const char *basename,
|
||||
const char *volume, loc_t *loc, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
xlator_t *subvol = NULL;
|
||||
@ -3300,7 +3300,7 @@ dht_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
STACK_WIND (frame, dht_entrylk_cbk,
|
||||
subvol, subvol->fops->entrylk,
|
||||
loc, basename, cmd, type);
|
||||
volume, loc, basename, cmd, type);
|
||||
|
||||
return 0;
|
||||
|
||||
@ -3322,7 +3322,7 @@ dht_fentrylk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
int32_t
|
||||
dht_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, const char *basename,
|
||||
const char *volume, fd_t *fd, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
xlator_t *subvol = NULL;
|
||||
@ -3342,7 +3342,7 @@ dht_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
STACK_WIND (frame, dht_fentrylk_cbk,
|
||||
subvol, subvol->fops->fentrylk,
|
||||
fd, basename, cmd, type);
|
||||
volume, fd, basename, cmd, type);
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -2933,6 +2933,7 @@ ha_inode_entry_lk_cbk (call_frame_t *frame,
|
||||
int32_t
|
||||
ha_inodelk (call_frame_t *frame,
|
||||
xlator_t *this,
|
||||
const char *volume,
|
||||
loc_t *loc,
|
||||
int32_t cmd,
|
||||
struct flock *lock)
|
||||
@ -2946,13 +2947,15 @@ ha_inodelk (call_frame_t *frame,
|
||||
goto err;
|
||||
}
|
||||
local = frame->local;
|
||||
local->stub = fop_inodelk_stub (frame, ha_inodelk, loc, cmd, lock);
|
||||
local->stub = fop_inodelk_stub (frame, ha_inodelk, volume,
|
||||
loc, cmd, lock);
|
||||
STACK_WIND_COOKIE (frame,
|
||||
ha_inode_entry_lk_cbk,
|
||||
(void *)(long)local->active,
|
||||
HA_ACTIVE_CHILD(this, local),
|
||||
HA_ACTIVE_CHILD(this, local)->fops->inodelk,
|
||||
loc,
|
||||
volume,
|
||||
loc,
|
||||
cmd,
|
||||
lock);
|
||||
return 0;
|
||||
@ -2964,6 +2967,7 @@ err:
|
||||
int32_t
|
||||
ha_entrylk (call_frame_t *frame,
|
||||
xlator_t *this,
|
||||
const char *volume,
|
||||
loc_t *loc,
|
||||
const char *basename,
|
||||
entrylk_cmd cmd,
|
||||
@ -2978,13 +2982,14 @@ ha_entrylk (call_frame_t *frame,
|
||||
goto err;
|
||||
}
|
||||
local = frame->local;
|
||||
local->stub = fop_entrylk_stub (frame, ha_entrylk, loc, basename, cmd, type);
|
||||
local->stub = fop_entrylk_stub (frame, ha_entrylk, volume,
|
||||
loc, basename, cmd, type);
|
||||
STACK_WIND_COOKIE (frame,
|
||||
ha_inode_entry_lk_cbk,
|
||||
(void *)(long)local->active,
|
||||
HA_ACTIVE_CHILD(this, local),
|
||||
HA_ACTIVE_CHILD(this, local)->fops->entrylk,
|
||||
loc, basename, cmd, type);
|
||||
volume, loc, basename, cmd, type);
|
||||
return 0;
|
||||
err:
|
||||
STACK_UNWIND (frame, -1, op_errno);
|
||||
|
@ -1053,7 +1053,7 @@ map_lk (call_frame_t *frame,
|
||||
|
||||
int32_t
|
||||
map_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
const char *volume, loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
{
|
||||
int32_t op_errno = 1;
|
||||
xlator_t *subvol = NULL;
|
||||
@ -1074,7 +1074,7 @@ map_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
default_inodelk_cbk,
|
||||
subvol,
|
||||
subvol->fops->inodelk,
|
||||
loc, cmd, lock);
|
||||
volume, loc, cmd, lock);
|
||||
return 0;
|
||||
err:
|
||||
STACK_UNWIND (frame, -1, op_errno, NULL, NULL);
|
||||
@ -1085,7 +1085,7 @@ map_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
int32_t
|
||||
map_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, int32_t cmd, struct flock *lock)
|
||||
const char *volume, fd_t *fd, int32_t cmd, struct flock *lock)
|
||||
{
|
||||
int32_t op_errno = 1;
|
||||
xlator_t *subvol = NULL;
|
||||
@ -1105,7 +1105,7 @@ map_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
default_finodelk_cbk,
|
||||
subvol,
|
||||
subvol->fops->finodelk,
|
||||
fd, cmd, lock);
|
||||
volume, fd, cmd, lock);
|
||||
return 0;
|
||||
err:
|
||||
STACK_UNWIND (frame, -1, op_errno, NULL, NULL);
|
||||
@ -1115,7 +1115,7 @@ map_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
int32_t
|
||||
map_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, const char *basename,
|
||||
const char *volume, loc_t *loc, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
int32_t op_errno = 1;
|
||||
@ -1136,7 +1136,7 @@ map_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
STACK_WIND (frame, default_entrylk_cbk,
|
||||
subvol,
|
||||
subvol->fops->entrylk,
|
||||
loc, basename, cmd, type);
|
||||
volume, loc, basename, cmd, type);
|
||||
return 0;
|
||||
err:
|
||||
STACK_UNWIND (frame, -1, op_errno, NULL, NULL);
|
||||
@ -1146,7 +1146,7 @@ map_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
int32_t
|
||||
map_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, const char *basename,
|
||||
const char *volume, fd_t *fd, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
int32_t op_errno = 1;
|
||||
@ -1166,7 +1166,7 @@ map_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
STACK_WIND (frame, default_fentrylk_cbk,
|
||||
subvol,
|
||||
subvol->fops->fentrylk,
|
||||
fd, basename, cmd, type);
|
||||
volume, fd, basename, cmd, type);
|
||||
return 0;
|
||||
err:
|
||||
STACK_UNWIND (frame, -1, op_errno, NULL, NULL);
|
||||
|
@ -3894,7 +3894,7 @@ unify_finodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
*/
|
||||
int
|
||||
unify_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, int cmd, struct flock *flock)
|
||||
const char *volume, fd_t *fd, int cmd, struct flock *flock)
|
||||
{
|
||||
UNIFY_CHECK_FD_CTX_AND_UNWIND_ON_ERR (fd);
|
||||
xlator_t *child = NULL;
|
||||
@ -3905,7 +3905,7 @@ unify_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
STACK_WIND (frame, unify_finodelk_cbk,
|
||||
child, child->fops->finodelk,
|
||||
fd, cmd, flock);
|
||||
volume, fd, cmd, flock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -3928,7 +3928,7 @@ unify_fentrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
*/
|
||||
int
|
||||
unify_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, const char *basename,
|
||||
const char *volume, fd_t *fd, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
|
||||
{
|
||||
@ -3941,7 +3941,7 @@ unify_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
STACK_WIND (frame, unify_fentrylk_cbk,
|
||||
child, child->fops->fentrylk,
|
||||
fd, basename, cmd, type);
|
||||
volume, fd, basename, cmd, type);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -3998,7 +3998,7 @@ unify_inodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
*/
|
||||
int
|
||||
unify_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, int cmd, struct flock *flock)
|
||||
const char *volume, loc_t *loc, int cmd, struct flock *flock)
|
||||
{
|
||||
xlator_t *child = NULL;
|
||||
|
||||
@ -4006,7 +4006,7 @@ unify_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
STACK_WIND (frame, unify_inodelk_cbk,
|
||||
child, child->fops->inodelk,
|
||||
loc, cmd, flock);
|
||||
volume, loc, cmd, flock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -4029,7 +4029,7 @@ unify_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
*/
|
||||
int
|
||||
unify_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, const char *basename,
|
||||
const char *volume, loc_t *loc, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
|
||||
{
|
||||
@ -4039,7 +4039,7 @@ unify_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
STACK_WIND (frame, unify_entrylk_cbk,
|
||||
child, child->fops->entrylk,
|
||||
loc, basename, cmd, type);
|
||||
volume, loc, basename, cmd, type);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1414,7 +1414,8 @@ error_gen_inodelk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
int32_t
|
||||
error_gen_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
const char *volume, loc_t *loc, int32_t cmd,
|
||||
struct flock *lock)
|
||||
{
|
||||
int op_errno = 0;
|
||||
op_errno = error_gen(this);
|
||||
@ -1428,7 +1429,7 @@ error_gen_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
error_gen_inodelk_cbk,
|
||||
FIRST_CHILD(this),
|
||||
FIRST_CHILD(this)->fops->inodelk,
|
||||
loc, cmd, lock);
|
||||
volume, loc, cmd, lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1445,7 +1446,8 @@ error_gen_finodelk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
int32_t
|
||||
error_gen_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, int32_t cmd, struct flock *lock)
|
||||
const char *volume, fd_t *fd, int32_t cmd,
|
||||
struct flock *lock)
|
||||
{
|
||||
int op_errno = 0;
|
||||
op_errno = error_gen(this);
|
||||
@ -1459,7 +1461,7 @@ error_gen_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
error_gen_finodelk_cbk,
|
||||
FIRST_CHILD(this),
|
||||
FIRST_CHILD(this)->fops->finodelk,
|
||||
fd, cmd, lock);
|
||||
volume, fd, cmd, lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1475,7 +1477,7 @@ error_gen_entrylk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
int32_t
|
||||
error_gen_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, const char *basename,
|
||||
const char *volume, loc_t *loc, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
int op_errno = 0;
|
||||
@ -1489,7 +1491,7 @@ error_gen_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
STACK_WIND (frame, error_gen_entrylk_cbk,
|
||||
FIRST_CHILD(this),
|
||||
FIRST_CHILD(this)->fops->entrylk,
|
||||
loc, basename, cmd, type);
|
||||
volume, loc, basename, cmd, type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1504,7 +1506,7 @@ error_gen_fentrylk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
int32_t
|
||||
error_gen_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, const char *basename,
|
||||
const char *volume, fd_t *fd, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
int op_errno = 0;
|
||||
@ -1518,7 +1520,7 @@ error_gen_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
STACK_WIND (frame, error_gen_fentrylk_cbk,
|
||||
FIRST_CHILD(this),
|
||||
FIRST_CHILD(this)->fops->fentrylk,
|
||||
fd, basename, cmd, type);
|
||||
volume, fd, basename, cmd, type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1094,15 +1094,15 @@ trace_inodelk_cbk (call_frame_t *frame,
|
||||
|
||||
int32_t
|
||||
trace_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, const char *basename,
|
||||
const char *volume, loc_t *loc, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
ERR_EINVAL_NORETURN (!this || !loc || !basename);
|
||||
|
||||
if (trace_fop_names[GF_FOP_ENTRYLK].enabled) {
|
||||
gf_log (this->name, GF_LOG_NORMAL,
|
||||
"%"PRId64": (loc= {path=%s, ino=%"PRIu64"} basename=%s, cmd=%s, type=%s)",
|
||||
frame->root->unique, loc->path, loc->inode->ino, basename,
|
||||
"%"PRId64": volume=%s, (loc= {path=%s, ino=%"PRIu64"} basename=%s, cmd=%s, type=%s)",
|
||||
frame->root->unique, volume, loc->path, loc->inode->ino, basename,
|
||||
((cmd == ENTRYLK_LOCK) ? "ENTRYLK_LOCK" : "ENTRYLK_UNLOCK"),
|
||||
((type == ENTRYLK_RDLCK) ? "ENTRYLK_RDLCK" : "ENTRYLK_WRLCK"));
|
||||
}
|
||||
@ -1111,21 +1111,21 @@ trace_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
trace_entrylk_cbk,
|
||||
FIRST_CHILD (this),
|
||||
FIRST_CHILD (this)->fops->entrylk,
|
||||
loc, basename, cmd, type);
|
||||
volume, loc, basename, cmd, type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t
|
||||
trace_inodelk (call_frame_t *frame,
|
||||
xlator_t *this,
|
||||
loc_t *loc, int32_t cmd, struct flock *flock)
|
||||
const char *volume, loc_t *loc, int32_t cmd, struct flock *flock)
|
||||
{
|
||||
ERR_EINVAL_NORETURN (!this || !loc);
|
||||
|
||||
if (trace_fop_names[GF_FOP_INODELK].enabled) {
|
||||
gf_log (this->name, GF_LOG_NORMAL,
|
||||
"%"PRId64": (loc {path=%s, ino=%"PRIu64"}, cmd=%s)",
|
||||
frame->root->unique, loc->path, loc->inode->ino,
|
||||
"%"PRId64": volume=%s, (loc {path=%s, ino=%"PRIu64"}, cmd=%s)",
|
||||
frame->root->unique, volume, loc->path, loc->inode->ino,
|
||||
((cmd == F_SETLK)? "F_SETLK" : "unknown"));
|
||||
}
|
||||
|
||||
@ -1133,7 +1133,7 @@ trace_inodelk (call_frame_t *frame,
|
||||
trace_inodelk_cbk,
|
||||
FIRST_CHILD (this),
|
||||
FIRST_CHILD (this)->fops->inodelk,
|
||||
loc, cmd, flock);
|
||||
volume, loc, cmd, flock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1160,14 +1160,14 @@ trace_finodelk_cbk (call_frame_t *frame,
|
||||
int32_t
|
||||
trace_finodelk (call_frame_t *frame,
|
||||
xlator_t *this,
|
||||
fd_t *fd, int32_t cmd, struct flock *flock)
|
||||
const char *volume, fd_t *fd, int32_t cmd, struct flock *flock)
|
||||
{
|
||||
ERR_EINVAL_NORETURN (!this || !fd);
|
||||
|
||||
if (trace_fop_names[GF_FOP_FINODELK].enabled) {
|
||||
gf_log (this->name, GF_LOG_NORMAL,
|
||||
"%"PRId64": (fd=%p, cmd=%s)",
|
||||
frame->root->unique, fd,
|
||||
"%"PRId64": volume=%s, (fd=%p, cmd=%s)",
|
||||
frame->root->unique, volume, fd,
|
||||
((cmd == F_SETLK) ? "F_SETLK" : "unknown"));
|
||||
}
|
||||
|
||||
@ -1175,7 +1175,7 @@ trace_finodelk (call_frame_t *frame,
|
||||
trace_finodelk_cbk,
|
||||
FIRST_CHILD (this),
|
||||
FIRST_CHILD (this)->fops->finodelk,
|
||||
fd, cmd, flock);
|
||||
volume, fd, cmd, flock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,7 @@ delete_locks_of_transport (pl_inode_t *pinode, transport_t *trans)
|
||||
|
||||
int
|
||||
pl_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, int32_t cmd, struct flock *flock)
|
||||
const char *volume, loc_t *loc, int32_t cmd, struct flock *flock)
|
||||
{
|
||||
int32_t op_ret = -1;
|
||||
int32_t op_errno = 0;
|
||||
@ -162,7 +162,7 @@ out:
|
||||
|
||||
int
|
||||
pl_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, int32_t cmd, struct flock *flock)
|
||||
const char *volume, fd_t *fd, int32_t cmd, struct flock *flock)
|
||||
{
|
||||
int32_t op_ret = -1;
|
||||
int32_t op_errno = 0;
|
||||
@ -649,7 +649,7 @@ unlock:
|
||||
|
||||
int
|
||||
pl_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, const char *basename,
|
||||
const char *volume, loc_t *loc, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
int32_t op_ret = -1;
|
||||
@ -759,7 +759,7 @@ out:
|
||||
|
||||
int
|
||||
pl_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, const char *basename,
|
||||
const char *volume, fd_t *fd, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
int32_t op_ret = -1;
|
||||
|
@ -785,20 +785,20 @@ fini (xlator_t *this)
|
||||
|
||||
int
|
||||
pl_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, int32_t cmd, struct flock *flock);
|
||||
const char *volume, loc_t *loc, int32_t cmd, struct flock *flock);
|
||||
|
||||
int
|
||||
pl_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, int32_t cmd, struct flock *flock);
|
||||
const char *volume, fd_t *fd, int32_t cmd, struct flock *flock);
|
||||
|
||||
int
|
||||
pl_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, const char *basename,
|
||||
const char *volume, loc_t *loc, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type);
|
||||
|
||||
int
|
||||
pl_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, const char *basename,
|
||||
const char *volume, fd_t *fd, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type);
|
||||
|
||||
struct xlator_fops fops = {
|
||||
|
@ -1021,7 +1021,7 @@ path_checksum (call_frame_t *frame,
|
||||
|
||||
int32_t
|
||||
path_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, const char *basename,
|
||||
const char *volume, loc_t *loc, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
char *loc_path = (char *)loc->path;
|
||||
@ -1036,7 +1036,7 @@ path_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
STACK_WIND (frame, path_common_cbk,
|
||||
FIRST_CHILD(this),
|
||||
FIRST_CHILD(this)->fops->entrylk,
|
||||
loc, basename, cmd, type);
|
||||
volume, loc, basename, cmd, type);
|
||||
|
||||
loc->path = loc_path;
|
||||
if (tmp_path != loc_path)
|
||||
@ -1047,7 +1047,7 @@ path_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
int32_t
|
||||
path_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
const char *volume, loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
{
|
||||
char *loc_path = (char *)loc->path;
|
||||
char *tmp_path = NULL;
|
||||
@ -1062,7 +1062,7 @@ path_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
path_common_cbk,
|
||||
FIRST_CHILD(this),
|
||||
FIRST_CHILD(this)->fops->inodelk,
|
||||
loc, cmd, lock);
|
||||
volume, loc, cmd, lock);
|
||||
|
||||
loc->path = loc_path;
|
||||
if (tmp_path != loc_path)
|
||||
|
@ -3253,6 +3253,7 @@ unwind:
|
||||
int32_t
|
||||
client_inodelk (call_frame_t *frame,
|
||||
xlator_t *this,
|
||||
const char *volume,
|
||||
loc_t *loc,
|
||||
int32_t cmd,
|
||||
struct flock *flock)
|
||||
@ -3265,6 +3266,7 @@ client_inodelk (call_frame_t *frame,
|
||||
int32_t gf_type = 0;
|
||||
ino_t ino = 0;
|
||||
size_t pathlen = 0;
|
||||
size_t vollen = 0;
|
||||
client_conf_t *conf = this->private;
|
||||
|
||||
if (conf->child) {
|
||||
@ -3273,12 +3275,14 @@ client_inodelk (call_frame_t *frame,
|
||||
default_inodelk_cbk,
|
||||
conf->child,
|
||||
conf->child->fops->inodelk,
|
||||
loc, cmd, flock);
|
||||
volume, loc, cmd, flock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
pathlen = STRLEN_0(loc->path);
|
||||
vollen = STRLEN_0(volume);
|
||||
|
||||
ino = this_ino_get (loc, this, GF_CLIENT_INODE_SELF);
|
||||
|
||||
if (cmd == F_GETLK || cmd == F_GETLK64)
|
||||
@ -3305,13 +3309,14 @@ client_inodelk (call_frame_t *frame,
|
||||
break;
|
||||
}
|
||||
|
||||
hdrlen = gf_hdr_len (req, pathlen);
|
||||
hdr = gf_hdr_new (req, pathlen);
|
||||
hdrlen = gf_hdr_len (req, pathlen + vollen);
|
||||
hdr = gf_hdr_new (req, pathlen + vollen);
|
||||
GF_VALIDATE_OR_GOTO(this->name, hdr, unwind);
|
||||
|
||||
req = gf_param (hdr);
|
||||
|
||||
strcpy (req->path, loc->path);
|
||||
strcpy (req->path + pathlen, volume);
|
||||
|
||||
req->ino = hton64 (ino);
|
||||
|
||||
@ -3349,6 +3354,7 @@ unwind:
|
||||
int32_t
|
||||
client_finodelk (call_frame_t *frame,
|
||||
xlator_t *this,
|
||||
const char *volume,
|
||||
fd_t *fd,
|
||||
int32_t cmd,
|
||||
struct flock *flock)
|
||||
@ -3357,6 +3363,7 @@ client_finodelk (call_frame_t *frame,
|
||||
gf_hdr_common_t *hdr = NULL;
|
||||
gf_fop_finodelk_req_t *req = NULL;
|
||||
size_t hdrlen = 0;
|
||||
size_t vollen = 0;
|
||||
int32_t gf_cmd = 0;
|
||||
int32_t gf_type = 0;
|
||||
int64_t remote_fd = -1;
|
||||
@ -3368,11 +3375,13 @@ client_finodelk (call_frame_t *frame,
|
||||
default_finodelk_cbk,
|
||||
conf->child,
|
||||
conf->child->fops->finodelk,
|
||||
fd, cmd, flock);
|
||||
volume, fd, cmd, flock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
vollen = STRLEN_0(volume);
|
||||
|
||||
ret = this_fd_get (fd, this, &remote_fd);
|
||||
if (ret == -1) {
|
||||
gf_log (this->name, GF_LOG_DEBUG,
|
||||
@ -3406,12 +3415,14 @@ client_finodelk (call_frame_t *frame,
|
||||
break;
|
||||
}
|
||||
|
||||
hdrlen = gf_hdr_len (req, 0);
|
||||
hdr = gf_hdr_new (req, 0);
|
||||
hdrlen = gf_hdr_len (req, vollen);
|
||||
hdr = gf_hdr_new (req, vollen);
|
||||
GF_VALIDATE_OR_GOTO(this->name, hdr, unwind);
|
||||
|
||||
req = gf_param (hdr);
|
||||
|
||||
strcpy (req->volume, volume);
|
||||
|
||||
req->fd = hton64 (remote_fd);
|
||||
|
||||
req->cmd = hton32 (gf_cmd);
|
||||
@ -3436,6 +3447,7 @@ unwind:
|
||||
int32_t
|
||||
client_entrylk (call_frame_t *frame,
|
||||
xlator_t *this,
|
||||
const char *volume,
|
||||
loc_t *loc,
|
||||
const char *name,
|
||||
entrylk_cmd cmd,
|
||||
@ -3444,6 +3456,7 @@ client_entrylk (call_frame_t *frame,
|
||||
gf_hdr_common_t *hdr = NULL;
|
||||
gf_fop_entrylk_req_t *req = NULL;
|
||||
size_t pathlen = 0;
|
||||
size_t vollen = 0;
|
||||
size_t hdrlen = -1;
|
||||
int ret = -1;
|
||||
ino_t ino = 0;
|
||||
@ -3455,19 +3468,21 @@ client_entrylk (call_frame_t *frame,
|
||||
STACK_WIND (frame, default_entrylk_cbk,
|
||||
conf->child,
|
||||
conf->child->fops->entrylk,
|
||||
loc, name, cmd, type);
|
||||
volume, loc, name, cmd, type);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
pathlen = STRLEN_0(loc->path);
|
||||
vollen = STRLEN_0(volume);
|
||||
|
||||
if (name)
|
||||
namelen = STRLEN_0(name);
|
||||
|
||||
ino = this_ino_get (loc, this, GF_CLIENT_INODE_SELF);
|
||||
|
||||
hdrlen = gf_hdr_len (req, pathlen + namelen);
|
||||
hdr = gf_hdr_new (req, pathlen + namelen);
|
||||
hdrlen = gf_hdr_len (req, pathlen + vollen + namelen);
|
||||
hdr = gf_hdr_new (req, pathlen + vollen + namelen);
|
||||
GF_VALIDATE_OR_GOTO(this->name, hdr, unwind);
|
||||
|
||||
req = gf_param (hdr);
|
||||
@ -3478,6 +3493,7 @@ client_entrylk (call_frame_t *frame,
|
||||
strcpy (req->path, loc->path);
|
||||
if (name)
|
||||
strcpy (req->name + pathlen, name);
|
||||
strcpy (req->volume + pathlen + namelen, volume);
|
||||
|
||||
req->cmd = hton32 (cmd);
|
||||
req->type = hton32 (type);
|
||||
@ -3501,6 +3517,7 @@ unwind:
|
||||
int32_t
|
||||
client_fentrylk (call_frame_t *frame,
|
||||
xlator_t *this,
|
||||
const char *volume,
|
||||
fd_t *fd,
|
||||
const char *name,
|
||||
entrylk_cmd cmd,
|
||||
@ -3509,6 +3526,7 @@ client_fentrylk (call_frame_t *frame,
|
||||
gf_hdr_common_t *hdr = NULL;
|
||||
gf_fop_fentrylk_req_t *req = NULL;
|
||||
int64_t remote_fd = -1;
|
||||
size_t vollen = 0;
|
||||
size_t namelen = 0;
|
||||
size_t hdrlen = -1;
|
||||
int ret = -1;
|
||||
@ -3519,7 +3537,7 @@ client_fentrylk (call_frame_t *frame,
|
||||
STACK_WIND (frame, default_fentrylk_cbk,
|
||||
conf->child,
|
||||
conf->child->fops->fentrylk,
|
||||
fd, name, cmd, type);
|
||||
volume, fd, name, cmd, type);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -3527,6 +3545,8 @@ client_fentrylk (call_frame_t *frame,
|
||||
if (name)
|
||||
namelen = STRLEN_0(name);
|
||||
|
||||
vollen = STRLEN_0(volume);
|
||||
|
||||
ret = this_fd_get (fd, this, &remote_fd);
|
||||
if (ret == -1) {
|
||||
gf_log (this->name, GF_LOG_DEBUG,
|
||||
@ -3536,8 +3556,8 @@ client_fentrylk (call_frame_t *frame,
|
||||
return 0;
|
||||
}
|
||||
|
||||
hdrlen = gf_hdr_len (req, namelen);
|
||||
hdr = gf_hdr_new (req, namelen);
|
||||
hdrlen = gf_hdr_len (req, namelen + vollen);
|
||||
hdr = gf_hdr_new (req, namelen + vollen);
|
||||
GF_VALIDATE_OR_GOTO(this->name, hdr, unwind);
|
||||
|
||||
req = gf_param (hdr);
|
||||
@ -3548,6 +3568,8 @@ client_fentrylk (call_frame_t *frame,
|
||||
if (name)
|
||||
strcpy (req->name, name);
|
||||
|
||||
strcpy (req->volume + namelen, volume);
|
||||
|
||||
req->cmd = hton32 (cmd);
|
||||
req->type = hton32 (type);
|
||||
|
||||
|
@ -223,6 +223,7 @@ server_copy_frame (call_frame_t *frame)
|
||||
|
||||
int32_t
|
||||
gf_add_locker (struct _lock_table *table,
|
||||
const char *volume,
|
||||
loc_t *loc,
|
||||
fd_t *fd,
|
||||
pid_t pid)
|
||||
@ -239,6 +240,8 @@ gf_add_locker (struct _lock_table *table,
|
||||
}
|
||||
INIT_LIST_HEAD (&new->lockers);
|
||||
|
||||
new->volume = strdup (volume);
|
||||
|
||||
if (fd == NULL) {
|
||||
loc_copy (&new->loc, loc);
|
||||
dir = S_ISDIR (new->loc.inode->st_mode);
|
||||
@ -263,6 +266,7 @@ out:
|
||||
|
||||
int32_t
|
||||
gf_del_locker (struct _lock_table *table,
|
||||
const char *volume,
|
||||
loc_t *loc,
|
||||
fd_t *fd,
|
||||
pid_t pid)
|
||||
@ -292,12 +296,14 @@ gf_del_locker (struct _lock_table *table,
|
||||
list_for_each_entry_safe (locker, tmp, head, lockers) {
|
||||
if (locker->fd &&
|
||||
fd &&
|
||||
(locker->fd == fd) && (locker->pid == pid)) {
|
||||
(locker->fd == fd) && (locker->pid == pid)
|
||||
&& !strcmp (locker->volume, volume)) {
|
||||
list_move_tail (&locker->lockers, &del);
|
||||
} else if (locker->loc.inode &&
|
||||
loc &&
|
||||
(locker->loc.inode == loc->inode) &&
|
||||
(locker->pid == pid)) {
|
||||
(locker->pid == pid)
|
||||
&& !strcmp (locker->volume, volume)) {
|
||||
list_move_tail (&locker->lockers, &del);
|
||||
}
|
||||
}
|
||||
@ -314,6 +320,7 @@ gf_del_locker (struct _lock_table *table,
|
||||
else
|
||||
loc_wipe (&locker->loc);
|
||||
|
||||
free (locker->volume);
|
||||
free (locker);
|
||||
}
|
||||
|
||||
@ -453,16 +460,20 @@ server_connection_destroy (xlator_t *this, server_connection_t *conn)
|
||||
STACK_WIND (tmp_frame, server_nop_cbk,
|
||||
bound_xl,
|
||||
bound_xl->fops->finodelk,
|
||||
locker->volume,
|
||||
locker->fd, F_SETLK, &flock);
|
||||
fd_unref (locker->fd);
|
||||
} else {
|
||||
STACK_WIND (tmp_frame, server_nop_cbk,
|
||||
bound_xl,
|
||||
bound_xl->fops->inodelk,
|
||||
locker->volume,
|
||||
&(locker->loc), F_SETLK, &flock);
|
||||
loc_wipe (&locker->loc);
|
||||
}
|
||||
|
||||
free (locker->volume);
|
||||
|
||||
list_del_init (&locker->lockers);
|
||||
free (locker);
|
||||
}
|
||||
@ -479,6 +490,7 @@ server_connection_destroy (xlator_t *this, server_connection_t *conn)
|
||||
STACK_WIND (tmp_frame, server_nop_cbk,
|
||||
bound_xl,
|
||||
bound_xl->fops->fentrylk,
|
||||
locker->volume,
|
||||
locker->fd, NULL,
|
||||
ENTRYLK_UNLOCK, ENTRYLK_WRLCK);
|
||||
fd_unref (locker->fd);
|
||||
@ -486,11 +498,14 @@ server_connection_destroy (xlator_t *this, server_connection_t *conn)
|
||||
STACK_WIND (tmp_frame, server_nop_cbk,
|
||||
bound_xl,
|
||||
bound_xl->fops->entrylk,
|
||||
locker->volume,
|
||||
&(locker->loc), NULL,
|
||||
ENTRYLK_UNLOCK, ENTRYLK_WRLCK);
|
||||
loc_wipe (&locker->loc);
|
||||
}
|
||||
|
||||
free (locker->volume);
|
||||
|
||||
list_del_init (&locker->lockers);
|
||||
free (locker);
|
||||
}
|
||||
|
@ -60,13 +60,13 @@ void free_state (server_state_t *state);
|
||||
void server_loc_wipe (loc_t *loc);
|
||||
|
||||
int32_t
|
||||
gf_add_locker (struct _lock_table *table,
|
||||
gf_add_locker (struct _lock_table *table, const char *volume,
|
||||
loc_t *loc,
|
||||
fd_t *fd,
|
||||
pid_t pid);
|
||||
|
||||
int32_t
|
||||
gf_del_locker (struct _lock_table *table,
|
||||
gf_del_locker (struct _lock_table *table, const char *volume,
|
||||
loc_t *loc,
|
||||
fd_t *fd,
|
||||
pid_t pid);
|
||||
|
@ -362,10 +362,10 @@ server_inodelk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
if (op_ret >= 0) {
|
||||
if (state->flock.l_type == F_UNLCK)
|
||||
gf_del_locker (conn->ltable,
|
||||
gf_del_locker (conn->ltable, state->volume,
|
||||
&state->loc, NULL, frame->root->pid);
|
||||
else
|
||||
gf_add_locker (conn->ltable,
|
||||
gf_add_locker (conn->ltable, state->volume,
|
||||
&state->loc, NULL, frame->root->pid);
|
||||
} else if (op_errno != ENOSYS) {
|
||||
gf_log (this->name, GF_LOG_DEBUG,
|
||||
@ -409,11 +409,13 @@ server_finodelk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
if (op_ret >= 0) {
|
||||
if (state->flock.l_type == F_UNLCK)
|
||||
gf_del_locker (conn->ltable,
|
||||
NULL, state->fd, frame->root->pid);
|
||||
gf_del_locker (conn->ltable, state->volume,
|
||||
NULL, state->fd,
|
||||
frame->root->pid);
|
||||
else
|
||||
gf_add_locker (conn->ltable,
|
||||
NULL, state->fd, frame->root->pid);
|
||||
gf_add_locker (conn->ltable, state->volume,
|
||||
NULL, state->fd,
|
||||
frame->root->pid);
|
||||
} else if (op_errno != ENOSYS) {
|
||||
gf_log (this->name, GF_LOG_DEBUG,
|
||||
"%"PRId64": FINODELK %"PRId64" (%"PRId64") ==> %"PRId32" (%s)",
|
||||
@ -465,10 +467,10 @@ server_entrylk_cbk (call_frame_t *frame, void *cookie,
|
||||
|
||||
if (op_ret >= 0) {
|
||||
if (state->cmd == ENTRYLK_UNLOCK)
|
||||
gf_del_locker (conn->ltable,
|
||||
gf_del_locker (conn->ltable, state->volume,
|
||||
&state->loc, NULL, frame->root->pid);
|
||||
else
|
||||
gf_add_locker (conn->ltable,
|
||||
gf_add_locker (conn->ltable, state->volume,
|
||||
&state->loc, NULL, frame->root->pid);
|
||||
} else if (op_errno != ENOSYS) {
|
||||
gf_log (this->name, GF_LOG_DEBUG,
|
||||
@ -511,10 +513,10 @@ server_fentrylk_cbk (call_frame_t *frame, void *cookie,
|
||||
if (op_ret >= 0) {
|
||||
state = CALL_STATE(frame);
|
||||
if (state->cmd == ENTRYLK_UNLOCK)
|
||||
gf_del_locker (conn->ltable,
|
||||
gf_del_locker (conn->ltable, state->volume,
|
||||
NULL, state->fd, frame->root->pid);
|
||||
else
|
||||
gf_add_locker (conn->ltable,
|
||||
gf_add_locker (conn->ltable, state->volume,
|
||||
NULL, state->fd, frame->root->pid);
|
||||
} else if (op_errno != ENOSYS) {
|
||||
gf_log (this->name, GF_LOG_DEBUG,
|
||||
@ -6024,7 +6026,7 @@ server_utimens (call_frame_t *frame,
|
||||
int32_t
|
||||
server_inodelk_resume (call_frame_t *frame,
|
||||
xlator_t *this,
|
||||
loc_t *loc, int32_t cmd,
|
||||
const char *volume, loc_t *loc, int32_t cmd,
|
||||
struct flock *flock)
|
||||
{
|
||||
server_state_t *state = NULL;
|
||||
@ -6046,7 +6048,7 @@ server_inodelk_resume (call_frame_t *frame,
|
||||
server_inodelk_cbk,
|
||||
BOUND_XL(frame),
|
||||
BOUND_XL(frame)->fops->inodelk,
|
||||
loc, cmd, flock);
|
||||
volume, loc, cmd, flock);
|
||||
return 0;
|
||||
|
||||
}
|
||||
@ -6062,6 +6064,7 @@ server_inodelk (call_frame_t *frame,
|
||||
gf_fop_inodelk_req_t *req = NULL;
|
||||
server_state_t *state = NULL;
|
||||
size_t pathlen = 0;
|
||||
size_t vollen = 0;
|
||||
|
||||
req = gf_param (hdr);
|
||||
state = CALL_STATE(frame);
|
||||
@ -6082,8 +6085,10 @@ server_inodelk (call_frame_t *frame,
|
||||
state->type = ntoh32 (req->type);
|
||||
|
||||
pathlen = STRLEN_0(req->path);
|
||||
vollen = STRLEN_0(req->volume + vollen);
|
||||
|
||||
state->path = req->path;
|
||||
state->volume = req->volume + vollen;
|
||||
state->ino = ntoh64 (req->ino);
|
||||
|
||||
gf_flock_to_flock (&req->flock, &state->flock);
|
||||
@ -6107,7 +6112,8 @@ server_inodelk (call_frame_t *frame,
|
||||
|
||||
inodelk_stub = fop_inodelk_stub (frame,
|
||||
server_inodelk_resume,
|
||||
&state->loc, state->cmd, &state->flock);
|
||||
state->volume, &state->loc,
|
||||
state->cmd, &state->flock);
|
||||
|
||||
if ((state->loc.parent == NULL) ||
|
||||
(state->loc.inode == NULL)) {
|
||||
@ -6135,6 +6141,8 @@ server_finodelk (call_frame_t *frame,
|
||||
req = gf_param (hdr);
|
||||
state = CALL_STATE(frame);
|
||||
{
|
||||
state->volume = req->volume;
|
||||
|
||||
state->fd_no = ntoh64 (req->fd);
|
||||
if (state->fd_no >= 0)
|
||||
state->fd = gf_fd_fdptr_get (conn->fdtable,
|
||||
@ -6188,7 +6196,7 @@ server_finodelk (call_frame_t *frame,
|
||||
STACK_WIND (frame, server_finodelk_cbk,
|
||||
BOUND_XL(frame),
|
||||
BOUND_XL(frame)->fops->finodelk,
|
||||
state->fd, state->cmd, &state->flock);
|
||||
state->volume, state->fd, state->cmd, &state->flock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -6196,7 +6204,7 @@ server_finodelk (call_frame_t *frame,
|
||||
int32_t
|
||||
server_entrylk_resume (call_frame_t *frame,
|
||||
xlator_t *this,
|
||||
loc_t *loc, const char *name,
|
||||
const char *volume, loc_t *loc, const char *name,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
server_state_t *state = NULL;
|
||||
@ -6218,7 +6226,7 @@ server_entrylk_resume (call_frame_t *frame,
|
||||
server_entrylk_cbk,
|
||||
BOUND_XL(frame),
|
||||
BOUND_XL(frame)->fops->entrylk,
|
||||
loc, name, cmd, type);
|
||||
volume, loc, name, cmd, type);
|
||||
return 0;
|
||||
|
||||
}
|
||||
@ -6242,6 +6250,7 @@ server_entrylk (call_frame_t *frame,
|
||||
call_stub_t *entrylk_stub = NULL;
|
||||
size_t pathlen = 0;
|
||||
size_t namelen = 0;
|
||||
size_t vollen = 0;
|
||||
|
||||
req = gf_param (hdr);
|
||||
state = CALL_STATE(frame);
|
||||
@ -6254,6 +6263,9 @@ server_entrylk (call_frame_t *frame,
|
||||
if (namelen)
|
||||
state->name = req->name + pathlen;
|
||||
|
||||
vollen = STRLEN_0(req->volume + pathlen + namelen);
|
||||
state->volume = req->volume + pathlen + namelen;
|
||||
|
||||
state->cmd = ntoh32 (req->cmd);
|
||||
state->type = ntoh32 (req->type);
|
||||
}
|
||||
@ -6264,6 +6276,7 @@ server_entrylk (call_frame_t *frame,
|
||||
|
||||
entrylk_stub = fop_entrylk_stub (frame,
|
||||
server_entrylk_resume,
|
||||
state->volume,
|
||||
&state->loc, state->name, state->cmd,
|
||||
state->type);
|
||||
|
||||
@ -6287,6 +6300,7 @@ server_fentrylk (call_frame_t *frame,
|
||||
gf_fop_fentrylk_req_t *req = NULL;
|
||||
server_state_t *state = NULL;
|
||||
size_t namelen = 0;
|
||||
size_t vollen = 0;
|
||||
server_connection_t *conn = NULL;
|
||||
|
||||
conn = SERVER_CONNECTION(frame);
|
||||
@ -6305,6 +6319,9 @@ server_fentrylk (call_frame_t *frame,
|
||||
|
||||
if (namelen)
|
||||
state->name = req->name;
|
||||
|
||||
vollen = STRLEN_0(req->volume + namelen);
|
||||
state->volume = req->volume + namelen;
|
||||
}
|
||||
|
||||
if (state->fd == NULL) {
|
||||
@ -6324,7 +6341,8 @@ server_fentrylk (call_frame_t *frame,
|
||||
STACK_WIND (frame, server_fentrylk_cbk,
|
||||
BOUND_XL(frame),
|
||||
BOUND_XL(frame)->fops->fentrylk,
|
||||
state->fd, state->name, state->cmd, state->type);
|
||||
state->volume, state->fd, state->name,
|
||||
state->cmd, state->type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -42,6 +42,7 @@ typedef struct _server_state server_state_t;
|
||||
|
||||
struct _locker {
|
||||
struct list_head lockers;
|
||||
char *volume;
|
||||
loc_t loc;
|
||||
fd_t *fd;
|
||||
pid_t pid;
|
||||
@ -138,6 +139,7 @@ struct _server_state {
|
||||
struct flock flock;
|
||||
struct timespec tv[2];
|
||||
char *resolved;
|
||||
const char *volume;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2959,7 +2959,7 @@ out:
|
||||
|
||||
int32_t
|
||||
bdb_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
const char *volume, loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
{
|
||||
frame->root->rsp_refs = NULL;
|
||||
|
||||
@ -2973,7 +2973,7 @@ bdb_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
int32_t
|
||||
bdb_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, int32_t cmd, struct flock *lock)
|
||||
const char *volume, fd_t *fd, int32_t cmd, struct flock *lock)
|
||||
{
|
||||
frame->root->rsp_refs = NULL;
|
||||
|
||||
@ -2987,8 +2987,8 @@ bdb_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
int32_t
|
||||
bdb_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, const char *basename, entrylk_cmd cmd,
|
||||
entrylk_type type)
|
||||
const char *volume, loc_t *loc, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
frame->root->rsp_refs = NULL;
|
||||
|
||||
@ -3002,8 +3002,8 @@ bdb_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
int32_t
|
||||
bdb_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, const char *basename, entrylk_cmd cmd,
|
||||
entrylk_type type)
|
||||
const char *volume, fd_t *fd, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
frame->root->rsp_refs = NULL;
|
||||
|
||||
|
@ -3431,7 +3431,7 @@ posix_lk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
int32_t
|
||||
posix_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
const char *volume, loc_t *loc, int32_t cmd, struct flock *lock)
|
||||
{
|
||||
frame->root->rsp_refs = NULL;
|
||||
|
||||
@ -3445,7 +3445,7 @@ posix_inodelk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
int32_t
|
||||
posix_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, int32_t cmd, struct flock *lock)
|
||||
const char *volume, fd_t *fd, int32_t cmd, struct flock *lock)
|
||||
{
|
||||
frame->root->rsp_refs = NULL;
|
||||
|
||||
@ -3460,8 +3460,8 @@ posix_finodelk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
int32_t
|
||||
posix_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
loc_t *loc, const char *basename, entrylk_cmd cmd,
|
||||
entrylk_type type)
|
||||
const char *volume, loc_t *loc, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
frame->root->rsp_refs = NULL;
|
||||
|
||||
@ -3475,8 +3475,8 @@ posix_entrylk (call_frame_t *frame, xlator_t *this,
|
||||
|
||||
int32_t
|
||||
posix_fentrylk (call_frame_t *frame, xlator_t *this,
|
||||
fd_t *fd, const char *basename, entrylk_cmd cmd,
|
||||
entrylk_type type)
|
||||
const char *volume, fd_t *fd, const char *basename,
|
||||
entrylk_cmd cmd, entrylk_type type)
|
||||
{
|
||||
frame->root->rsp_refs = NULL;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user