From 29567f45f322d151c07c68d91a2f282d28b9a0d0 Mon Sep 17 00:00:00 2001 From: Timothy Day Date: Thu, 4 Jul 2024 17:59:19 +0000 Subject: [PATCH] LU-17848 dt: allow declare functions to be optional If an OSD (or other dt implementer) doesn't have anything to declare, don't force it to implement a declare function for an operation. Clean up some examples of useless declare functions in osp and lfsck. Test-Parameters: trivial Test-Parameters: trivial fstype=zfs Signed-off-by: Timothy Day Change-Id: I0d7e9f491ff2a8f6e4f3bf315a10437cd42c2351 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/55632 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: James Simmons Reviewed-by: Oleg Drokin --- lustre/include/dt_object.h | 56 ++++++++++++++++++++++++++++++++++----------- lustre/lfsck/lfsck_layout.c | 19 --------------- lustre/osp/osp_object.c | 19 --------------- 3 files changed, 43 insertions(+), 51 deletions(-) diff --git a/lustre/include/dt_object.h b/lustre/include/dt_object.h index b100b0a..1e49979 100644 --- a/lustre/include/dt_object.h +++ b/lustre/include/dt_object.h @@ -2257,8 +2257,11 @@ static inline int dt_declare_record_write(const struct lu_env *env, { LASSERT(dt); LASSERT(dt->do_body_ops); - LASSERT(dt->do_body_ops->dbo_declare_write); LASSERT(th); + + if (!dt->do_body_ops->dbo_declare_write) + return 0; + return dt->do_body_ops->dbo_declare_write(env, dt, buf, pos, th); } @@ -2271,11 +2274,13 @@ static inline int dt_declare_create(const struct lu_env *env, { LASSERT(dt); LASSERT(dt->do_ops); - LASSERT(dt->do_ops->do_declare_create); if (CFS_FAULT_CHECK(OBD_FAIL_DT_DECLARE_CREATE)) return cfs_fail_err; + if (!dt->do_ops->do_declare_create) + return 0; + return dt->do_ops->do_declare_create(env, dt, attr, hint, dof, th); } @@ -2302,11 +2307,13 @@ static inline int dt_declare_destroy(const struct lu_env *env, { LASSERT(dt); LASSERT(dt->do_ops); - LASSERT(dt->do_ops->do_declare_destroy); if (CFS_FAULT_CHECK(OBD_FAIL_DT_DECLARE_DESTROY)) return cfs_fail_err; + if (!dt->do_ops->do_declare_destroy) + return 0; + return dt->do_ops->do_declare_destroy(env, dt, th); } @@ -2415,11 +2422,13 @@ static inline int dt_declare_attr_set(const struct lu_env *env, { LASSERT(dt); LASSERT(dt->do_ops); - LASSERT(dt->do_ops->do_declare_attr_set); if (CFS_FAULT_CHECK(OBD_FAIL_DT_DECLARE_ATTR_SET)) return cfs_fail_err; + if (!dt->do_ops->do_declare_attr_set) + return 0; + return dt->do_ops->do_declare_attr_set(env, dt, la, th); } @@ -2441,11 +2450,13 @@ static inline int dt_declare_ref_add(const struct lu_env *env, { LASSERT(dt); LASSERT(dt->do_ops); - LASSERT(dt->do_ops->do_declare_ref_add); if (CFS_FAULT_CHECK(OBD_FAIL_DT_DECLARE_REF_ADD)) return cfs_fail_err; + if (!dt->do_ops->do_declare_ref_add) + return 0; + return dt->do_ops->do_declare_ref_add(env, dt, th); } @@ -2467,11 +2478,13 @@ static inline int dt_declare_ref_del(const struct lu_env *env, { LASSERT(dt); LASSERT(dt->do_ops); - LASSERT(dt->do_ops->do_declare_ref_del); if (CFS_FAULT_CHECK(OBD_FAIL_DT_DECLARE_REF_DEL)) return cfs_fail_err; + if (!dt->do_ops->do_declare_ref_del) + return 0; + return dt->do_ops->do_declare_ref_del(env, dt, th); } @@ -2525,8 +2538,11 @@ static inline int dt_declare_write_commit(const struct lu_env *env, { LASSERT(d); LASSERT(d->do_body_ops); - LASSERT(d->do_body_ops->dbo_declare_write_commit); LASSERT(th); + + if (!d->do_body_ops->dbo_declare_write_commit) + return 0; + return d->do_body_ops->dbo_declare_write_commit(env, d, lnb, n, th); } @@ -2557,7 +2573,10 @@ static inline int dt_declare_write(const struct lu_env *env, { LASSERT(dt); LASSERT(dt->do_body_ops); - LASSERT(dt->do_body_ops->dbo_declare_write); + + if (!dt->do_body_ops->dbo_declare_write) + return 0; + return dt->do_body_ops->dbo_declare_write(env, dt, buf, pos, th); } @@ -2577,7 +2596,10 @@ static inline int dt_declare_punch(const struct lu_env *env, { LASSERT(dt); LASSERT(dt->do_body_ops); - LASSERT(dt->do_body_ops->dbo_declare_punch); + + if (!dt->do_body_ops->dbo_declare_punch) + return 0; + return dt->do_body_ops->dbo_declare_punch(env, dt, start, end, th); } @@ -2725,11 +2747,13 @@ static inline int dt_declare_insert(const struct lu_env *env, { LASSERT(dt); LASSERT(dt->do_index_ops); - LASSERT(dt->do_index_ops->dio_declare_insert); if (CFS_FAULT_CHECK(OBD_FAIL_DT_DECLARE_INSERT)) return cfs_fail_err; + if (!dt->do_index_ops->dio_declare_insert) + return 0; + return dt->do_index_ops->dio_declare_insert(env, dt, rec, key, th); } @@ -2756,11 +2780,13 @@ static inline int dt_declare_xattr_del(const struct lu_env *env, { LASSERT(dt); LASSERT(dt->do_ops); - LASSERT(dt->do_ops->do_declare_xattr_del); if (CFS_FAULT_CHECK(OBD_FAIL_DT_DECLARE_XATTR_DEL)) return cfs_fail_err; + if (!dt->do_ops->do_declare_xattr_del) + return 0; + return dt->do_ops->do_declare_xattr_del(env, dt, name, th); } @@ -2786,11 +2812,13 @@ static inline int dt_declare_xattr_set(const struct lu_env *env, { LASSERT(dt); LASSERT(dt->do_ops); - LASSERT(dt->do_ops->do_declare_xattr_set); if (CFS_FAULT_CHECK(OBD_FAIL_DT_DECLARE_XATTR_SET)) return cfs_fail_err; + if (!dt->do_ops->do_declare_xattr_set) + return 0; + return dt->do_ops->do_declare_xattr_set(env, dt, buf, name, fl, th); } @@ -2868,11 +2896,13 @@ static inline int dt_declare_delete(const struct lu_env *env, { LASSERT(dt); LASSERT(dt->do_index_ops); - LASSERT(dt->do_index_ops->dio_declare_delete); if (CFS_FAULT_CHECK(OBD_FAIL_DT_DECLARE_DELETE)) return cfs_fail_err; + if (!dt->do_index_ops->dio_declare_delete) + return 0; + return dt->do_index_ops->dio_declare_delete(env, dt, key, th); } diff --git a/lustre/lfsck/lfsck_layout.c b/lustre/lfsck/lfsck_layout.c index af7409f..7bc6282 100644 --- a/lustre/lfsck/lfsck_layout.c +++ b/lustre/lfsck/lfsck_layout.c @@ -7300,15 +7300,6 @@ static int lfsck_orphan_index_lookup(const struct lu_env *env, return -EOPNOTSUPP; } -static int lfsck_orphan_index_declare_insert(const struct lu_env *env, - struct dt_object *dt, - const struct dt_rec *rec, - const struct dt_key *key, - struct thandle *handle) -{ - return -EOPNOTSUPP; -} - static int lfsck_orphan_index_insert(const struct lu_env *env, struct dt_object *dt, const struct dt_rec *rec, @@ -7318,14 +7309,6 @@ static int lfsck_orphan_index_insert(const struct lu_env *env, return -EOPNOTSUPP; } -static int lfsck_orphan_index_declare_delete(const struct lu_env *env, - struct dt_object *dt, - const struct dt_key *key, - struct thandle *handle) -{ - return -EOPNOTSUPP; -} - static int lfsck_orphan_index_delete(const struct lu_env *env, struct dt_object *dt, const struct dt_key *key, @@ -7772,9 +7755,7 @@ static int lfsck_orphan_it_load(const struct lu_env *env, static const struct dt_index_operations lfsck_orphan_index_ops = { .dio_lookup = lfsck_orphan_index_lookup, - .dio_declare_insert = lfsck_orphan_index_declare_insert, .dio_insert = lfsck_orphan_index_insert, - .dio_declare_delete = lfsck_orphan_index_declare_delete, .dio_delete = lfsck_orphan_index_delete, .dio_it = { .init = lfsck_orphan_it_init, diff --git a/lustre/osp/osp_object.c b/lustre/osp/osp_object.c index 74da125..716dfb0 100644 --- a/lustre/osp/osp_object.c +++ b/lustre/osp/osp_object.c @@ -1743,15 +1743,6 @@ static int osp_orphan_index_lookup(const struct lu_env *env, return -EOPNOTSUPP; } -static int osp_orphan_index_declare_insert(const struct lu_env *env, - struct dt_object *dt, - const struct dt_rec *rec, - const struct dt_key *key, - struct thandle *handle) -{ - return -EOPNOTSUPP; -} - static int osp_orphan_index_insert(const struct lu_env *env, struct dt_object *dt, const struct dt_rec *rec, @@ -1761,14 +1752,6 @@ static int osp_orphan_index_insert(const struct lu_env *env, return -EOPNOTSUPP; } -static int osp_orphan_index_declare_delete(const struct lu_env *env, - struct dt_object *dt, - const struct dt_key *key, - struct thandle *handle) -{ - return -EOPNOTSUPP; -} - static int osp_orphan_index_delete(const struct lu_env *env, struct dt_object *dt, const struct dt_key *key, @@ -2215,9 +2198,7 @@ static int osp_orphan_it_load(const struct lu_env *env, const struct dt_it *di, static const struct dt_index_operations osp_orphan_index_ops = { .dio_lookup = osp_orphan_index_lookup, - .dio_declare_insert = osp_orphan_index_declare_insert, .dio_insert = osp_orphan_index_insert, - .dio_declare_delete = osp_orphan_index_declare_delete, .dio_delete = osp_orphan_index_delete, .dio_it = { .init = osp_it_init, -- 1.8.3.1