Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
several fixes: expiry timer adjusted.
[fs/lustre-release.git]
/
lustre
/
obdecho
/
echo_client.c
diff --git
a/lustre/obdecho/echo_client.c
b/lustre/obdecho/echo_client.c
index
67935cb
..
f16a1ed
100644
(file)
--- a/
lustre/obdecho/echo_client.c
+++ b/
lustre/obdecho/echo_client.c
@@
-29,6
+29,7
@@
#include <linux/iobuf.h>
#endif
#include <asm/div64.h>
#include <linux/iobuf.h>
#endif
#include <asm/div64.h>
+#include <linux/smp_lock.h>
#else
#include <liblustre.h>
#endif
#else
#include <liblustre.h>
#endif
@@
-65,7
+66,7
@@
echo_printk_object (char *msg, struct ec_object *eco)
static struct ec_object *
echo_find_object_locked (struct obd_device *obd, obd_id id)
{
static struct ec_object *
echo_find_object_locked (struct obd_device *obd, obd_id id)
{
- struct echo_client_obd *ec = &obd->u.echo
_client
;
+ struct echo_client_obd *ec = &obd->u.echo
cli
;
struct ec_object *eco = NULL;
struct list_head *el;
struct ec_object *eco = NULL;
struct list_head *el;
@@
-97,7
+98,7
@@
static int
echo_copyin_lsm (struct obd_device *obd, struct lov_stripe_md *lsm,
void *ulsm, int ulsm_nob)
{
echo_copyin_lsm (struct obd_device *obd, struct lov_stripe_md *lsm,
void *ulsm, int ulsm_nob)
{
- struct echo_client_obd *ec = &obd->u.echo
_client
;
+ struct echo_client_obd *ec = &obd->u.echo
cli
;
int nob;
if (ulsm_nob < sizeof (*lsm))
int nob;
if (ulsm_nob < sizeof (*lsm))
@@
-125,7
+126,7
@@
echo_copyin_lsm (struct obd_device *obd, struct lov_stripe_md *lsm,
static struct ec_object *
echo_allocate_object (struct obd_device *obd)
{
static struct ec_object *
echo_allocate_object (struct obd_device *obd)
{
- struct echo_client_obd *ec = &obd->u.echo
_client
;
+ struct echo_client_obd *ec = &obd->u.echo
cli
;
struct ec_object *eco;
int rc;
struct ec_object *eco;
int rc;
@@
-152,7
+153,7
@@
static void
echo_free_object (struct ec_object *eco)
{
struct obd_device *obd = eco->eco_device;
echo_free_object (struct ec_object *eco)
{
struct obd_device *obd = eco->eco_device;
- struct echo_client_obd *ec = &obd->u.echo
_client
;
+ struct echo_client_obd *ec = &obd->u.echo
cli
;
LASSERT (eco->eco_refcount == 0);
obd_free_memmd(ec->ec_exp, &eco->eco_lsm);
LASSERT (eco->eco_refcount == 0);
obd_free_memmd(ec->ec_exp, &eco->eco_lsm);
@@
-163,7
+164,7
@@
static int echo_create_object(struct obd_device *obd, int on_target,
struct obdo *oa, void *ulsm, int ulsm_nob,
struct obd_trans_info *oti)
{
struct obdo *oa, void *ulsm, int ulsm_nob,
struct obd_trans_info *oti)
{
- struct echo_client_obd *ec = &obd->u.echo
_client
;
+ struct echo_client_obd *ec = &obd->u.echo
cli
;
struct ec_object *eco2;
struct ec_object *eco;
struct lov_stripe_md *lsm;
struct ec_object *eco2;
struct ec_object *eco;
struct lov_stripe_md *lsm;
@@
-207,6
+208,7
@@
static int echo_create_object(struct obd_device *obd, int on_target,
lsm->lsm_oinfo[i].loi_ost_idx =
(idx + i) % ec->ec_nstripes;
lsm->lsm_oinfo[i].loi_ost_idx =
(idx + i) % ec->ec_nstripes;
+ lsm->lsm_oinfo[i].loi_ost_gen = 1;
}
} else {
OBD_ALLOC(eco, sizeof(*eco));
}
} else {
OBD_ALLOC(eco, sizeof(*eco));
@@
-218,10
+220,9
@@
static int echo_create_object(struct obd_device *obd, int on_target,
oa->o_id = ++last_object_id;
if (on_target) {
oa->o_id = ++last_object_id;
if (on_target) {
- /* XXX get some filter group constants */
- oa->o_gr = 2;
+ oa->o_gr = FILTER_GROUP_ECHO;
oa->o_valid |= OBD_MD_FLGROUP;
oa->o_valid |= OBD_MD_FLGROUP;
- rc = obd_create(ec->ec_exp, oa, &lsm, oti);
+ rc = obd_create(ec->ec_exp, oa,
NULL, 0,
&lsm, oti);
if (rc != 0)
goto failed;
if (rc != 0)
goto failed;
@@
-269,7
+270,7
@@
static int
echo_get_object (struct ec_object **ecop, struct obd_device *obd,
struct obdo *oa)
{
echo_get_object (struct ec_object **ecop, struct obd_device *obd,
struct obdo *oa)
{
- struct echo_client_obd *ec = &obd->u.echo
_client
;
+ struct echo_client_obd *ec = &obd->u.echo
cli
;
struct ec_object *eco;
struct ec_object *eco2;
int rc;
struct ec_object *eco;
struct ec_object *eco2;
int rc;
@@
-354,7
+355,7
@@
static void
echo_put_object (struct ec_object *eco)
{
struct obd_device *obd = eco->eco_device;
echo_put_object (struct ec_object *eco)
{
struct obd_device *obd = eco->eco_device;
- struct echo_client_obd *ec = &obd->u.echo
_client
;
+ struct echo_client_obd *ec = &obd->u.echo
cli
;
/* Release caller's ref on the object.
* delete => mark for deletion when last ref goes
/* Release caller's ref on the object.
* delete => mark for deletion when last ref goes
@@
-480,8
+481,10
@@
echo_client_page_debug_check(struct lov_stripe_md *lsm,
rc2 = block_debug_check("test_brw",
addr + delta, OBD_ECHO_BLOCK_SIZE,
stripe_off, stripe_id);
rc2 = block_debug_check("test_brw",
addr + delta, OBD_ECHO_BLOCK_SIZE,
stripe_off, stripe_id);
- if (rc2 != 0)
+ if (rc2 != 0) {
+ CERROR ("Error in echo object "LPX64"\n", id);
rc = rc2;
rc = rc2;
+ }
}
kunmap(page);
}
kunmap(page);
@@
-492,7
+495,7
@@
static int echo_client_kbrw(struct obd_device *obd, int rw, struct obdo *oa,
struct lov_stripe_md *lsm, obd_off offset,
obd_size count, struct obd_trans_info *oti)
{
struct lov_stripe_md *lsm, obd_off offset,
obd_size count, struct obd_trans_info *oti)
{
- struct echo_client_obd *ec = &obd->u.echo
_client
;
+ struct echo_client_obd *ec = &obd->u.echo
cli
;
obd_count npages;
struct brw_page *pga;
struct brw_page *pgp;
obd_count npages;
struct brw_page *pga;
struct brw_page *pgp;
@@
-502,10
+505,10
@@
static int echo_client_kbrw(struct obd_device *obd, int rw, struct obdo *oa,
int verify = 0;
int gfp_mask;
int verify = 0;
int gfp_mask;
- /* oa_id == ECHO_PERSISTENT_OBJID => speed test (no verification).
- * oa & 1 => use HIGHMEM */
+ verify = ((oa->o_id) != ECHO_PERSISTENT_OBJID &&
+ (oa->o_valid & OBD_MD_FLFLAGS) != 0 &&
+ (oa->o_flags & OBD_FL_DEBUG_CHECK) != 0);
- verify = (oa->o_id) != ECHO_PERSISTENT_OBJID;
gfp_mask = ((oa->o_id & 2) == 0) ? GFP_KERNEL : GFP_HIGHUSER;
LASSERT(rw == OBD_BRW_WRITE || rw == OBD_BRW_READ);
gfp_mask = ((oa->o_id & 2) == 0) ? GFP_KERNEL : GFP_HIGHUSER;
LASSERT(rw == OBD_BRW_WRITE || rw == OBD_BRW_READ);
@@
-535,7
+538,7
@@
static int echo_client_kbrw(struct obd_device *obd, int rw, struct obdo *oa,
goto out;
pgp->count = PAGE_SIZE;
goto out;
pgp->count = PAGE_SIZE;
- pgp->
off
= off;
+ pgp->
disk_offset = pgp->page_offset
= off;
pgp->flag = 0;
if (verify)
pgp->flag = 0;
if (verify)
@@
-556,7
+559,8
@@
static int echo_client_kbrw(struct obd_device *obd, int rw, struct obdo *oa,
if (verify) {
int vrc;
vrc = echo_client_page_debug_check(lsm, pgp->pg, oa->o_id,
if (verify) {
int vrc;
vrc = echo_client_page_debug_check(lsm, pgp->pg, oa->o_id,
- pgp->off, pgp->count);
+ pgp->page_offset,
+ pgp->count);
if (vrc != 0 && rc == 0)
rc = vrc;
}
if (vrc != 0 && rc == 0)
rc = vrc;
}
@@
-573,7
+577,7
@@
static int echo_client_ubrw(struct obd_device *obd, int rw,
obd_off offset, obd_size count, char *buffer,
struct obd_trans_info *oti)
{
obd_off offset, obd_size count, char *buffer,
struct obd_trans_info *oti)
{
- struct echo_client_obd *ec = &obd->u.echo
_client
;
+ struct echo_client_obd *ec = &obd->u.echo
cli
;
obd_count npages;
struct brw_page *pga;
struct brw_page *pgp;
obd_count npages;
struct brw_page *pga;
struct brw_page *pgp;
@@
-615,7
+619,7
@@
static int echo_client_ubrw(struct obd_device *obd, int rw,
for (i = 0, off = offset, pgp = pga;
i < npages;
i++, off += PAGE_SIZE, pgp++) {
for (i = 0, off = offset, pgp = pga;
i < npages;
i++, off += PAGE_SIZE, pgp++) {
- pgp->
off
= off;
+ pgp->
disk_offset = pgp->page_offset
= off;
pgp->pg = kiobuf->maplist[i];
pgp->count = PAGE_SIZE;
pgp->flag = 0;
pgp->pg = kiobuf->maplist[i];
pgp->count = PAGE_SIZE;
pgp->flag = 0;
@@
-658,6
+662,10
@@
struct echo_async_page {
struct list_head eap_item;
};
struct list_head eap_item;
};
+#define EAP_FROM_COOKIE(c) \
+ (LASSERT(((struct echo_async_page *)(c))->eap_magic == EAP_MAGIC), \
+ (struct echo_async_page *)(c))
+
struct echo_async_state {
spinlock_t eas_lock;
obd_off eas_next_offset;
struct echo_async_state {
spinlock_t eas_lock;
obd_off eas_next_offset;
@@
-681,14
+689,6
@@
static int eas_should_wake(struct echo_async_state *eas)
return rc;
};
return rc;
};
-struct echo_async_page *eap_from_cookie(void *cookie)
-{
- struct echo_async_page *eap = cookie;
- if (eap->eap_magic != EAP_MAGIC)
- return ERR_PTR(-EINVAL);
- return eap;
-};
-
static int ec_ap_make_ready(void *data, int cmd)
{
/* our pages are issued ready */
static int ec_ap_make_ready(void *data, int cmd)
{
/* our pages are issued ready */
@@
-703,26
+703,23
@@
static int ec_ap_refresh_count(void *data, int cmd)
}
static void ec_ap_fill_obdo(void *data, int cmd, struct obdo *oa)
{
}
static void ec_ap_fill_obdo(void *data, int cmd, struct obdo *oa)
{
- struct echo_async_page *eap;
- eap = eap_from_cookie(data);
- if (IS_ERR(eap))
- return;
+ struct echo_async_page *eap = EAP_FROM_COOKIE(data);
memcpy(oa, &eap->eap_eas->eas_oa, sizeof(*oa));
}
static void ec_ap_completion(void *data, int cmd, struct obdo *oa, int rc)
{
memcpy(oa, &eap->eap_eas->eas_oa, sizeof(*oa));
}
static void ec_ap_completion(void *data, int cmd, struct obdo *oa, int rc)
{
- struct echo_async_page *eap =
eap_from_cookie
(data);
+ struct echo_async_page *eap =
EAP_FROM_COOKIE
(data);
struct echo_async_state *eas;
unsigned long flags;
struct echo_async_state *eas;
unsigned long flags;
- if (IS_ERR(eap))
- return;
eas = eap->eap_eas;
if (cmd == OBD_BRW_READ &&
eas = eap->eap_eas;
if (cmd == OBD_BRW_READ &&
- eas->eas_oa.o_id != ECHO_PERSISTENT_OBJID)
+ eas->eas_oa.o_id != ECHO_PERSISTENT_OBJID &&
+ (eas->eas_oa.o_valid & OBD_MD_FLFLAGS) != 0 &&
+ (eas->eas_oa.o_flags & OBD_FL_DEBUG_CHECK) != 0)
echo_client_page_debug_check(eas->eas_lsm, eap->eap_page,
eas->eas_oa.o_id, eap->eap_off,
PAGE_SIZE);
echo_client_page_debug_check(eas->eas_lsm, eap->eap_page,
eas->eas_oa.o_id, eap->eap_off,
PAGE_SIZE);
@@
-847,7
+844,9
@@
static int echo_client_async_page(struct obd_export *exp, int rw,
break;
}
break;
}
- if (oa->o_id != ECHO_PERSISTENT_OBJID)
+ if (oa->o_id != ECHO_PERSISTENT_OBJID &&
+ (oa->o_valid & OBD_MD_FLFLAGS) != 0 &&
+ (oa->o_flags & OBD_FL_DEBUG_CHECK) != 0)
echo_client_page_debug_setup(lsm, eap->eap_page, rw,
oa->o_id,
eap->eap_off, PAGE_SIZE);
echo_client_page_debug_setup(lsm, eap->eap_page, rw,
oa->o_id,
eap->eap_off, PAGE_SIZE);
@@
-940,7
+939,8
@@
static int echo_client_prep_commit(struct obd_export *exp, int rw,
memset(oti, 0, sizeof(*oti));
ioo.ioo_bufcnt = npages;
memset(oti, 0, sizeof(*oti));
ioo.ioo_bufcnt = npages;
- ret = obd_preprw(rw, exp, oa, 1, &ioo, npages, rnb, lnb, oti);
+ ret = obd_preprw(rw, exp, oa, 1, &ioo, npages, rnb, lnb,
+ oti, NULL);
if (ret != 0)
GOTO(out, ret);
if (ret != 0)
GOTO(out, ret);
@@
-951,9
+951,12
@@
static int echo_client_prep_commit(struct obd_export *exp, int rw,
if (page == NULL && lnb[i].rc == 0)
continue;
if (page == NULL && lnb[i].rc == 0)
continue;
- if (oa->o_id == ECHO_PERSISTENT_OBJID)
+ if (oa->o_id == ECHO_PERSISTENT_OBJID ||
+ (oa->o_valid & OBD_MD_FLFLAGS) == 0 ||
+ (oa->o_flags & OBD_FL_DEBUG_CHECK) == 0)
continue;
continue;
+
if (rw == OBD_BRW_WRITE)
echo_client_page_debug_setup(lsm, page, rw,
oa->o_id,
if (rw == OBD_BRW_WRITE)
echo_client_page_debug_setup(lsm, page, rw,
oa->o_id,
@@
-983,7
+986,7
@@
int echo_client_brw_ioctl(int rw, struct obd_export *exp,
struct obd_ioctl_data *data)
{
struct obd_device *obd = class_exp2obd(exp);
struct obd_ioctl_data *data)
{
struct obd_device *obd = class_exp2obd(exp);
- struct echo_client_obd *ec = &obd->u.echo
_client
;
+ struct echo_client_obd *ec = &obd->u.echo
cli
;
struct obd_trans_info dummy_oti;
struct ec_object *eco;
int rc;
struct obd_trans_info dummy_oti;
struct ec_object *eco;
int rc;
@@
-997,7
+1000,7
@@
int echo_client_brw_ioctl(int rw, struct obd_export *exp,
data->ioc_obdo1.o_valid &= ~OBD_MD_FLHANDLE;
data->ioc_obdo1.o_valid |= OBD_MD_FLGROUP;
data->ioc_obdo1.o_valid &= ~OBD_MD_FLHANDLE;
data->ioc_obdo1.o_valid |= OBD_MD_FLGROUP;
- data->ioc_obdo1.o_gr =
2
;
+ data->ioc_obdo1.o_gr =
FILTER_GROUP_ECHO
;
switch((long)data->ioc_pbuf1) {
case 1:
switch((long)data->ioc_pbuf1) {
case 1:
@@
-1037,7
+1040,7
@@
echo_ldlm_callback (struct ldlm_lock *lock, struct ldlm_lock_desc *new,
void *data, int flag)
{
struct ec_object *eco = (struct ec_object *)data;
void *data, int flag)
{
struct ec_object *eco = (struct ec_object *)data;
- struct echo_client_obd *ec = &(eco->eco_device->u.echo
_client
);
+ struct echo_client_obd *ec = &(eco->eco_device->u.echo
cli
);
struct lustre_handle lockh;
struct list_head *el;
int found = 0;
struct lustre_handle lockh;
struct list_head *el;
int found = 0;
@@
-1082,7
+1085,7
@@
echo_client_enqueue(struct obd_export *exp, struct obdo *oa,
int mode, obd_off offset, obd_size nob)
{
struct obd_device *obd = exp->exp_obd;
int mode, obd_off offset, obd_size nob)
{
struct obd_device *obd = exp->exp_obd;
- struct echo_client_obd *ec = &obd->u.echo
_client
;
+ struct echo_client_obd *ec = &obd->u.echo
cli
;
struct lustre_handle *ulh = obdo_handle (oa);
struct ec_object *eco;
struct ec_lock *ecl;
struct lustre_handle *ulh = obdo_handle (oa);
struct ec_object *eco;
struct ec_lock *ecl;
@@
-1143,7
+1146,7
@@
static int
echo_client_cancel(struct obd_export *exp, struct obdo *oa)
{
struct obd_device *obd = exp->exp_obd;
echo_client_cancel(struct obd_export *exp, struct obdo *oa)
{
struct obd_device *obd = exp->exp_obd;
- struct echo_client_obd *ec = &obd->u.echo
_client
;
+ struct echo_client_obd *ec = &obd->u.echo
cli
;
struct lustre_handle *ulh = obdo_handle (oa);
struct ec_lock *ecl = NULL;
int found = 0;
struct lustre_handle *ulh = obdo_handle (oa);
struct ec_lock *ecl = NULL;
int found = 0;
@@
-1194,10
+1197,12
@@
echo_client_iocontrol(unsigned int cmd, struct obd_export *exp,
int i;
ENTRY;
int i;
ENTRY;
+ unlock_kernel();
+
memset(&dummy_oti, 0, sizeof(dummy_oti));
obd = exp->exp_obd;
memset(&dummy_oti, 0, sizeof(dummy_oti));
obd = exp->exp_obd;
- ec = &obd->u.echo
_client
;
+ ec = &obd->u.echo
cli
;
switch (cmd) {
case OBD_IOC_CREATE: /* may create echo object */
switch (cmd) {
case OBD_IOC_CREATE: /* may create echo object */
@@
-1216,7
+1221,7
@@
echo_client_iocontrol(unsigned int cmd, struct obd_export *exp,
rc = echo_get_object (&eco, obd, &data->ioc_obdo1);
if (rc == 0) {
oa = &data->ioc_obdo1;
rc = echo_get_object (&eco, obd, &data->ioc_obdo1);
if (rc == 0) {
oa = &data->ioc_obdo1;
- oa->o_gr =
2
;
+ oa->o_gr =
FILTER_GROUP_ECHO
;
oa->o_valid |= OBD_MD_FLGROUP;
rc = obd_destroy(ec->ec_exp, oa, eco->eco_lsm,
&dummy_oti);
oa->o_valid |= OBD_MD_FLGROUP;
rc = obd_destroy(ec->ec_exp, oa, eco->eco_lsm,
&dummy_oti);
@@
-1242,7
+1247,7
@@
echo_client_iocontrol(unsigned int cmd, struct obd_export *exp,
rc = echo_get_object (&eco, obd, &data->ioc_obdo1);
if (rc == 0) {
rc = obd_setattr(ec->ec_exp, &data->ioc_obdo1,
rc = echo_get_object (&eco, obd, &data->ioc_obdo1);
if (rc == 0) {
rc = obd_setattr(ec->ec_exp, &data->ioc_obdo1,
- eco->eco_lsm, NULL);
+ eco->eco_lsm, NULL
, NULL
);
echo_put_object(eco);
}
GOTO(out, rc);
echo_put_object(eco);
}
GOTO(out, rc);
@@
-1312,6
+1317,8
@@
echo_client_iocontrol(unsigned int cmd, struct obd_export *exp,
ldlm_lock_decref(&ack_lock->lock, ack_lock->mode);
}
ldlm_lock_decref(&ack_lock->lock, ack_lock->mode);
}
+ lock_kernel();
+
return rc;
}
return rc;
}
@@
-1319,22
+1326,22
@@
static int
echo_client_setup(struct obd_device *obddev, obd_count len, void *buf)
{
struct lustre_cfg* lcfg = buf;
echo_client_setup(struct obd_device *obddev, obd_count len, void *buf)
{
struct lustre_cfg* lcfg = buf;
- struct echo_client_obd *ec = &obddev->u.echo
_client
;
+ struct echo_client_obd *ec = &obddev->u.echo
cli
;
struct obd_device *tgt;
struct lustre_handle conn = {0, };
struct obd_uuid echo_uuid = { "ECHO_UUID" };
int rc;
ENTRY;
struct obd_device *tgt;
struct lustre_handle conn = {0, };
struct obd_uuid echo_uuid = { "ECHO_UUID" };
int rc;
ENTRY;
- if (
lcfg->lcfg_inllen1
< 1) {
+ if (
LUSTRE_CFG_BUFLEN(lcfg, 1)
< 1) {
CERROR("requires a TARGET OBD name\n");
RETURN(-EINVAL);
}
CERROR("requires a TARGET OBD name\n");
RETURN(-EINVAL);
}
- tgt = class_name2obd(l
cfg->lcfg_inlbuf1
);
+ tgt = class_name2obd(l
ustre_cfg_string(lcfg, 1)
);
if (!tgt || !tgt->obd_attached || !tgt->obd_set_up) {
CERROR("device not attached or not set up (%s)\n",
if (!tgt || !tgt->obd_attached || !tgt->obd_set_up) {
CERROR("device not attached or not set up (%s)\n",
- l
cfg->lcfg_inlbuf1
);
+ l
ustre_cfg_string(lcfg, 1)
);
RETURN(-EINVAL);
}
RETURN(-EINVAL);
}
@@
-1342,9
+1349,9
@@
echo_client_setup(struct obd_device *obddev, obd_count len, void *buf)
INIT_LIST_HEAD (&ec->ec_objects);
ec->ec_unique = 0;
INIT_LIST_HEAD (&ec->ec_objects);
ec->ec_unique = 0;
- rc = obd_connect(&conn, tgt, &echo_uuid);
+ rc = obd_connect(&conn, tgt, &echo_uuid
, NULL, FILTER_GROUP_ECHO
);
if (rc) {
if (rc) {
- CERROR("fail to connect to device %s\n", l
cfg->lcfg_inlbuf1
);
+ CERROR("fail to connect to device %s\n", l
ustre_cfg_string(lcfg, 1)
);
return (rc);
}
ec->ec_exp = class_conn2export(&conn);
return (rc);
}
ec->ec_exp = class_conn2export(&conn);
@@
-1356,7
+1363,7
@@
static int echo_client_cleanup(struct obd_device *obddev, int flags)
{
struct list_head *el;
struct ec_object *eco;
{
struct list_head *el;
struct ec_object *eco;
- struct echo_client_obd *ec = &obddev->u.echo
_client
;
+ struct echo_client_obd *ec = &obddev->u.echo
cli
;
int rc;
ENTRY;
int rc;
ENTRY;
@@
-1384,7
+1391,10
@@
static int echo_client_cleanup(struct obd_device *obddev, int flags)
}
static int echo_client_connect(struct lustre_handle *conn,
}
static int echo_client_connect(struct lustre_handle *conn,
- struct obd_device *src, struct obd_uuid *cluuid)
+ struct obd_device *src,
+ struct obd_uuid *cluuid,
+ struct obd_connect_data *data,
+ unsigned long flags)
{
struct obd_export *exp;
int rc;
{
struct obd_export *exp;
int rc;
@@
-1399,7
+1409,8
@@
static int echo_client_connect(struct lustre_handle *conn,
RETURN (rc);
}
RETURN (rc);
}
-static int echo_client_disconnect(struct obd_export *exp, int flags)
+static int echo_client_disconnect(struct obd_export *exp,
+ unsigned long flags)
{
struct obd_device *obd;
struct echo_client_obd *ec;
{
struct obd_device *obd;
struct echo_client_obd *ec;
@@
-1411,7
+1422,7
@@
static int echo_client_disconnect(struct obd_export *exp, int flags)
GOTO(out, rc = -EINVAL);
obd = exp->exp_obd;
GOTO(out, rc = -EINVAL);
obd = exp->exp_obd;
- ec = &obd->u.echo
_client
;
+ ec = &obd->u.echo
cli
;
/* no more contention on export's lock list */
while (!list_empty (&exp->exp_ec_data.eced_locks)) {
/* no more contention on export's lock list */
while (!list_empty (&exp->exp_ec_data.eced_locks)) {
@@
-1449,7
+1460,7
@@
int echo_client_init(void)
struct lprocfs_static_vars lvars;
lprocfs_init_vars(echo, &lvars);
struct lprocfs_static_vars lvars;
lprocfs_init_vars(echo, &lvars);
- return class_register_type(&echo_obd_ops, lvars.module_vars,
+ return class_register_type(&echo_obd_ops,
NULL,
lvars.module_vars,
OBD_ECHO_CLIENT_DEVICENAME);
}
OBD_ECHO_CLIENT_DEVICENAME);
}