case MDS_SYNC: /* used in unmounting */
case OBD_PING:
case MDS_REINT:
- case UPDATE_OBJ:
+ case OUT_UPDATE:
case SEQ_QUERY:
case FLD_QUERY:
case LDLM_ENQUEUE:
RETURN(-EACCES);
}
} else {
- if (req->rq_auth_uid == INVALID_UID) {
+ if (!uid_valid(make_kuid(&init_user_ns, req->rq_auth_uid))) {
CDEBUG(D_SEC, "client %s -> target %s: user is not "
"authenticated!\n", client, tgt_name(tgt));
RETURN(-EACCES);
EXPORT_SYMBOL(tgt_obd_handlers);
int tgt_sync(const struct lu_env *env, struct lu_target *tgt,
- struct dt_object *obj)
+ struct dt_object *obj, __u64 start, __u64 end)
{
int rc = 0;
rc = dt_sync(env, tgt->lut_bottom);
} else if (dt_version_get(env, obj) >
tgt->lut_obd->obd_last_committed) {
- rc = dt_object_sync(env, obj);
+ rc = dt_object_sync(env, obj, start, end);
}
RETURN(rc);
(tgt->lut_sync_lock_cancel == ALWAYS_SYNC_ON_CANCEL ||
(tgt->lut_sync_lock_cancel == BLOCKING_SYNC_ON_CANCEL &&
lock->l_flags & LDLM_FL_CBPENDING))) {
+ __u64 start = 0;
+ __u64 end = OBD_OBJECT_EOF;
+
rc = lu_env_init(&env, LCT_DT_THREAD);
if (unlikely(rc != 0))
RETURN(rc);
if (!dt_object_exists(obj))
GOTO(err_put, rc = -ENOENT);
- rc = tgt_sync(&env, tgt, obj);
+ if (lock->l_resource->lr_type == LDLM_EXTENT) {
+ start = lock->l_policy_data.l_extent.start;
+ end = lock->l_policy_data.l_extent.end;
+ }
+
+ rc = tgt_sync(&env, tgt, obj, start, end);
if (rc < 0) {
CERROR("%s: syncing "DFID" ("LPU64"-"LPU64") on lock "
"cancel: rc = %d\n",
};
EXPORT_SYMBOL(tgt_sec_ctx_handlers);
-static int (*tgt_lfsck_start)(const struct lu_env *env,
- struct dt_device *key,
- struct lfsck_start_param *lsp) = NULL;
-
-void tgt_register_lfsck_start(int (*start)(const struct lu_env *,
- struct dt_device *,
- struct lfsck_start_param *))
-{
- tgt_lfsck_start = start;
-}
-EXPORT_SYMBOL(tgt_register_lfsck_start);
-
int (*tgt_lfsck_in_notify)(const struct lu_env *env,
struct dt_device *key,
struct lfsck_request *lr) = NULL;
if (lr == NULL)
RETURN(-EPROTO);
- switch (lr->lr_event) {
- case LE_START: {
- struct lfsck_start start;
- struct lfsck_start_param lsp;
-
- start.ls_valid = lr->lr_valid;
- start.ls_speed_limit = lr->lr_speed;
- start.ls_version = lr->lr_version;
- start.ls_active = lr->lr_active;
- start.ls_flags = lr->lr_param;
- start.ls_async_windows = lr->lr_async_windows;
-
- lsp.lsp_namespace = tsi->tsi_exp->exp_obd->obd_namespace;
- lsp.lsp_start = &start;
- lsp.lsp_index = lr->lr_index;
- if (lr->lr_flags & LEF_TO_OST)
- lsp.lsp_index_valid = 1;
- else
- lsp.lsp_index_valid = 0;
- rc = tgt_lfsck_start(env, key, &lsp);
- break;
- }
- case LE_STOP:
- case LE_PHASE1_DONE:
- case LE_PHASE2_DONE:
- rc = tgt_lfsck_in_notify(env, key, lr);
- break;
- default:
- CERROR("%s: unsupported lfsck_event: rc = %d\n",
- tgt_name(tsi->tsi_tgt), lr->lr_event);
- rc = -EOPNOTSUPP;
- break;
- }
+ rc = tgt_lfsck_in_notify(env, key, lr);
RETURN(rc);
}