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
LU-3963 osd-zfs: convert to linux list api
[fs/lustre-release.git]
/
lustre
/
osd-zfs
/
osd_handler.c
diff --git
a/lustre/osd-zfs/osd_handler.c
b/lustre/osd-zfs/osd_handler.c
index
1025be9
..
66efdc9
100644
(file)
--- a/
lustre/osd-zfs/osd_handler.c
+++ b/
lustre/osd-zfs/osd_handler.c
@@
-148,7
+148,7
@@
static void osd_trans_commit_cb(void *cb_data, int error)
dt_txn_hook_commit(th);
/* call per-transaction callbacks if any */
dt_txn_hook_commit(th);
/* call per-transaction callbacks if any */
-
cfs_
list_for_each_entry_safe(dcb, tmp, &oh->ot_dcb_list, dcb_linkage)
+ list_for_each_entry_safe(dcb, tmp, &oh->ot_dcb_list, dcb_linkage)
dcb->dcb_func(NULL, th, dcb, error);
/* Unlike ldiskfs, zfs updates space accounting at commit time.
dcb->dcb_func(NULL, th, dcb, error);
/* Unlike ldiskfs, zfs updates space accounting at commit time.
@@
-173,7
+173,7
@@
static int osd_trans_cb_add(struct thandle *th, struct dt_txn_commit_cb *dcb)
struct osd_thandle *oh;
oh = container_of0(th, struct osd_thandle, ot_super);
struct osd_thandle *oh;
oh = container_of0(th, struct osd_thandle, ot_super);
-
cfs_
list_add(&dcb->dcb_linkage, &oh->ot_dcb_list);
+ list_add(&dcb->dcb_linkage, &oh->ot_dcb_list);
return 0;
}
return 0;
}
@@
-297,8
+297,8
@@
static struct thandle *osd_trans_create(const struct lu_env *env,
}
oh->ot_tx = tx;
}
oh->ot_tx = tx;
-
CFS_
INIT_LIST_HEAD(&oh->ot_dcb_list);
-
CFS_
INIT_LIST_HEAD(&oh->ot_sa_list);
+ INIT_LIST_HEAD(&oh->ot_dcb_list);
+ INIT_LIST_HEAD(&oh->ot_sa_list);
sema_init(&oh->ot_sa_lock, 1);
memset(&oh->ot_quota_trans, 0, sizeof(oh->ot_quota_trans));
th = &oh->ot_super;
sema_init(&oh->ot_sa_lock, 1);
memset(&oh->ot_quota_trans, 0, sizeof(oh->ot_quota_trans));
th = &oh->ot_super;
@@
-516,7
+516,8
@@
static int osd_mount(const struct lu_env *env,
struct osd_device *o, struct lustre_cfg *cfg)
{
struct dsl_dataset *ds;
struct osd_device *o, struct lustre_cfg *cfg)
{
struct dsl_dataset *ds;
- char *dev = lustre_cfg_string(cfg, 1);
+ char *mntdev = lustre_cfg_string(cfg, 1);
+ char *svname = lustre_cfg_string(cfg, 4);
dmu_buf_t *rootdb;
dsl_pool_t *dp;
int rc;
dmu_buf_t *rootdb;
dsl_pool_t *dp;
int rc;
@@
-525,12
+526,16
@@
static int osd_mount(const struct lu_env *env,
if (o->od_objset.os != NULL)
RETURN(0);
if (o->od_objset.os != NULL)
RETURN(0);
- if (strlen(dev) >= sizeof(o->od_mntdev))
+ if (mntdev == NULL || svname == NULL)
+ RETURN(-EINVAL);
+
+ rc = strlcpy(o->od_mntdev, mntdev, sizeof(o->od_mntdev));
+ if (rc >= sizeof(o->od_mntdev))
RETURN(-E2BIG);
RETURN(-E2BIG);
-
strcpy(o->od_mntdev, dev
);
- strncpy(o->od_svname, lustre_cfg_string(cfg, 4),
-
sizeof(o->od_svname) - 1
);
+
rc = strlcpy(o->od_svname, svname, sizeof(o->od_svname)
);
+ if (rc >= sizeof(o->od_svname))
+
RETURN(-E2BIG
);
if (server_name_is_ost(o->od_svname))
o->od_is_ost = 1;
if (server_name_is_ost(o->od_svname))
o->od_is_ost = 1;
@@
-717,8
+722,10
@@
static struct lu_device *osd_device_fini(const struct lu_env *env,
if (rc)
CERROR("%s: dsl_prop_unregister xattr error %d\n",
o->od_svname, rc);
if (rc)
CERROR("%s: dsl_prop_unregister xattr error %d\n",
o->od_svname, rc);
- arc_remove_prune_callback(o->arc_prune_cb);
- o->arc_prune_cb = NULL;
+ if (o->arc_prune_cb != NULL) {
+ arc_remove_prune_callback(o->arc_prune_cb);
+ o->arc_prune_cb = NULL;
+ }
osd_sync(env, lu2dt_dev(d));
txg_wait_callbacks(spa_get_dsl(dmu_objset_spa(o->od_objset.os)));
}
osd_sync(env, lu2dt_dev(d));
txg_wait_callbacks(spa_get_dsl(dmu_objset_spa(o->od_objset.os)));
}
@@
-761,12
+768,13
@@
static int osd_process_config(const struct lu_env *env,
break;
case LCFG_PARAM: {
LASSERT(&o->od_dt_dev);
break;
case LCFG_PARAM: {
LASSERT(&o->od_dt_dev);
- rc = class_process_proc_param(PARAM_OSD, lprocfs_osd_obd_vars,
- cfg, &o->od_dt_dev);
+ rc = class_process_proc_seq_param(PARAM_OSD,
+ lprocfs_osd_obd_vars, cfg,
+ &o->od_dt_dev);
if (rc > 0 || rc == -ENOSYS)
if (rc > 0 || rc == -ENOSYS)
- rc = class_process_proc_param(PARAM_OST,
- lprocfs_osd_obd_vars,
- cfg, &o->od_dt_dev);
+ rc = class_process_proc_
seq_
param(PARAM_OST,
+
lprocfs_osd_obd_vars,
+
cfg, &o->od_dt_dev);
break;
}
default:
break;
}
default:
@@
-872,6
+880,14
@@
static void osd_type_stop(struct lu_device_type *t)
{
}
{
}
+int osd_fid_alloc(const struct lu_env *env, struct obd_export *exp,
+ struct lu_fid *fid, struct md_op_data *op_data)
+{
+ struct osd_device *osd = osd_dev(exp->exp_obd->obd_lu_dev);
+
+ return seq_client_alloc_fid(env, osd->od_cl_seq, fid);
+}
+
static struct lu_device_type_operations osd_device_type_ops = {
.ldto_init = osd_type_init,
.ldto_fini = osd_type_fini,
static struct lu_device_type_operations osd_device_type_ops = {
.ldto_init = osd_type_init,
.ldto_fini = osd_type_fini,
@@
-897,7
+913,8
@@
static struct lu_device_type osd_device_type = {
static struct obd_ops osd_obd_device_ops = {
.o_owner = THIS_MODULE,
.o_connect = osd_obd_connect,
static struct obd_ops osd_obd_device_ops = {
.o_owner = THIS_MODULE,
.o_connect = osd_obd_connect,
- .o_disconnect = osd_obd_disconnect
+ .o_disconnect = osd_obd_disconnect,
+ .o_fid_alloc = osd_fid_alloc
};
int __init osd_init(void)
};
int __init osd_init(void)
@@
-912,11
+929,11
@@
int __init osd_init(void)
if (rc)
return rc;
if (rc)
return rc;
- rc = class_register_type(&osd_obd_device_ops, NULL, NULL,
+ rc = class_register_type(&osd_obd_device_ops, NULL,
true,
NULL,
#ifndef HAVE_ONLY_PROCFS_SEQ
#ifndef HAVE_ONLY_PROCFS_SEQ
-
lprocfs_osd_module_vars
,
+
NULL
,
#endif
#endif
- LUSTRE_OSD_ZFS_NAME, &osd_device_type);
+
LUSTRE_OSD_ZFS_NAME, &osd_device_type);
if (rc)
lu_kmem_fini(osd_caches);
return rc;
if (rc)
lu_kmem_fini(osd_caches);
return rc;