Whamcloud - gitweb
LU-6913 test: fix conf-sanity test_30b defect
[fs/lustre-release.git] / lustre / obdclass / dt_object.c
index 8a7372c..07f2c7c 100644 (file)
@@ -60,7 +60,6 @@ struct lu_context_key dt_key = {
         .lct_init = dt_global_key_init,
         .lct_fini = dt_global_key_fini
 };
-EXPORT_SYMBOL(dt_key);
 
 /* no lock is necessary to protect the list, because call-backs
  * are added during system startup. Please refer to "struct dt_device".
@@ -80,56 +79,77 @@ EXPORT_SYMBOL(dt_txn_callback_del);
 int dt_txn_hook_start(const struct lu_env *env,
                       struct dt_device *dev, struct thandle *th)
 {
-        int rc = 0;
-        struct dt_txn_callback *cb;
+       int rc = 0;
+       struct dt_txn_callback *cb;
 
-        if (th->th_local)
-                return 0;
+       if (th->th_local)
+               return 0;
 
        list_for_each_entry(cb, &dev->dd_txn_callbacks, dtc_linkage) {
-                if (cb->dtc_txn_start == NULL ||
-                    !(cb->dtc_tag & env->le_ctx.lc_tags))
-                        continue;
-                rc = cb->dtc_txn_start(env, th, cb->dtc_cookie);
-                if (rc < 0)
-                        break;
-        }
-        return rc;
+               struct thandle *dtc_th = th;
+
+               if (cb->dtc_txn_start == NULL ||
+                   !(cb->dtc_tag & env->le_ctx.lc_tags))
+                       continue;
+
+               /* Usually dt_txn_hook_start is called from bottom device,
+                * and if the thandle has th_top, then we need use top
+                * thandle for the callback in the top thandle layer */
+               if (th->th_top != NULL)
+                       dtc_th = th->th_top;
+
+               rc = cb->dtc_txn_start(env, dtc_th, cb->dtc_cookie);
+               if (rc < 0)
+                       break;
+       }
+       return rc;
 }
 EXPORT_SYMBOL(dt_txn_hook_start);
 
-int dt_txn_hook_stop(const struct lu_env *env, struct thandle *txn)
+int dt_txn_hook_stop(const struct lu_env *env, struct thandle *th)
 {
-        struct dt_device       *dev = txn->th_dev;
-        struct dt_txn_callback *cb;
-        int                     rc = 0;
+       struct dt_device       *dev = th->th_dev;
+       struct dt_txn_callback *cb;
+       int                     rc = 0;
 
-        if (txn->th_local)
-                return 0;
+       if (th->th_local)
+               return 0;
 
        list_for_each_entry(cb, &dev->dd_txn_callbacks, dtc_linkage) {
-                if (cb->dtc_txn_stop == NULL ||
-                    !(cb->dtc_tag & env->le_ctx.lc_tags))
-                        continue;
-                rc = cb->dtc_txn_stop(env, txn, cb->dtc_cookie);
-                if (rc < 0)
-                        break;
-        }
-        return rc;
+               struct thandle *dtc_th = th;
+
+               if (cb->dtc_txn_stop == NULL ||
+                   !(cb->dtc_tag & env->le_ctx.lc_tags))
+                       continue;
+
+               /* Usually dt_txn_hook_stop is called from bottom device,
+                * and if the thandle has th_top, then we need use top
+                * thandle for the callback in the top thandle layer */
+               if (th->th_top != NULL)
+                       dtc_th = th->th_top;
+
+               rc = cb->dtc_txn_stop(env, dtc_th, cb->dtc_cookie);
+               if (rc < 0)
+                       break;
+       }
+       return rc;
 }
 EXPORT_SYMBOL(dt_txn_hook_stop);
 
-void dt_txn_hook_commit(struct thandle *txn)
+void dt_txn_hook_commit(struct thandle *th)
 {
        struct dt_txn_callback *cb;
 
-       if (txn->th_local)
+       if (th->th_local)
                return;
 
-       list_for_each_entry(cb, &txn->th_dev->dd_txn_callbacks,
+       list_for_each_entry(cb, &th->th_dev->dd_txn_callbacks,
                            dtc_linkage) {
+               /* Right now, the bottom device (OSD) will use this hook
+                * commit to notify OSP, so we do not check and replace
+                * the thandle to top thandle now */
                if (cb->dtc_txn_commit)
-                       cb->dtc_txn_commit(txn, cb->dtc_cookie);
+                       cb->dtc_txn_commit(th, cb->dtc_cookie);
        }
 }
 EXPORT_SYMBOL(dt_txn_hook_commit);
@@ -204,10 +224,10 @@ EXPORT_SYMBOL(dt_mode_to_dft);
 int dt_lookup_dir(const struct lu_env *env, struct dt_object *dir,
                   const char *name, struct lu_fid *fid)
 {
-        if (dt_try_as_dir(env, dir))
-                return dt_lookup(env, dir, (struct dt_rec *)fid,
-                                 (const struct dt_key *)name, BYPASS_CAPA);
-        return -ENOTDIR;
+       if (dt_try_as_dir(env, dir))
+               return dt_lookup(env, dir, (struct dt_rec *)fid,
+                                (const struct dt_key *)name);
+       return -ENOTDIR;
 }
 EXPORT_SYMBOL(dt_lookup_dir);
 
@@ -238,7 +258,7 @@ struct dt_object *dt_locate_at(const struct lu_env *env,
 EXPORT_SYMBOL(dt_locate_at);
 
 /**
- * find a object named \a entry in given \a dfh->dfh_o directory.
+ * find an object named \a entry in given \a dfh->dfh_o directory.
  */
 static int dt_find_entry(const struct lu_env *env, const char *entry, void *data)
 {
@@ -320,7 +340,6 @@ dt_store_resolve(const struct lu_env *env, struct dt_device *dt,
         }
         return obj;
 }
-EXPORT_SYMBOL(dt_store_resolve);
 
 static struct dt_object *dt_reg_open(const struct lu_env *env,
                                      struct dt_device *dt,
@@ -365,7 +384,6 @@ struct dt_object *dt_store_open(const struct lu_env *env,
         }
         return file;
 }
-EXPORT_SYMBOL(dt_store_open);
 
 struct dt_object *dt_find_or_create(const struct lu_env *env,
                                     struct dt_device *dt,
@@ -451,8 +469,8 @@ void dt_global_fini(void)
 int dt_read(const struct lu_env *env, struct dt_object *dt,
             struct lu_buf *buf, loff_t *pos)
 {
-        LASSERTF(dt != NULL, "dt is NULL when we want to read record\n");
-        return dt->do_body_ops->dbo_read(env, dt, buf, pos, BYPASS_CAPA);
+       LASSERTF(dt != NULL, "dt is NULL when we want to read record\n");
+       return dt->do_body_ops->dbo_read(env, dt, buf, pos);
 }
 EXPORT_SYMBOL(dt_read);
 
@@ -476,8 +494,7 @@ int dt_record_read(const struct lu_env *env, struct dt_object *dt,
 
        LASSERTF(dt != NULL, "dt is NULL when we want to read record\n");
 
-       size = dt->do_body_ops->dbo_read(env, dt, buf, pos, BYPASS_CAPA);
-
+       size = dt->do_body_ops->dbo_read(env, dt, buf, pos);
        if (size < 0)
                return size;
        return (size == (ssize_t)buf->lb_len) ? 0 : -EFAULT;
@@ -494,8 +511,7 @@ int dt_record_write(const struct lu_env *env, struct dt_object *dt,
        LASSERT(dt->do_body_ops);
        LASSERT(dt->do_body_ops->dbo_write);
 
-       size = dt->do_body_ops->dbo_write(env, dt, buf, pos, th, BYPASS_CAPA, 1);
-
+       size = dt->do_body_ops->dbo_write(env, dt, buf, pos, th, 1);
        if (size < 0)
                return size;
        return (size == (ssize_t)buf->lb_len) ? 0 : -EFAULT;
@@ -527,7 +543,7 @@ void dt_version_set(const struct lu_env *env, struct dt_object *o,
         vbuf.lb_buf = &version;
         vbuf.lb_len = sizeof(version);
 
-        rc = dt_xattr_set(env, o, &vbuf, xname, 0, th, BYPASS_CAPA);
+       rc = dt_xattr_set(env, o, &vbuf, xname, 0, th);
         if (rc < 0)
                 CDEBUG(D_INODE, "Can't set version, rc %d\n", rc);
         return;
@@ -544,7 +560,7 @@ dt_obj_version_t dt_version_get(const struct lu_env *env, struct dt_object *o)
         LASSERT(o);
         vbuf.lb_buf = &version;
         vbuf.lb_len = sizeof(version);
-        rc = dt_xattr_get(env, o, &vbuf, xname, BYPASS_CAPA);
+       rc = dt_xattr_get(env, o, &vbuf, xname);
         if (rc != sizeof(version)) {
                 CDEBUG(D_INODE, "Can't get version, rc %d\n", rc);
                 version = 0;
@@ -802,7 +818,7 @@ int dt_index_walk(const struct lu_env *env, struct dt_object *obj,
        /* Iterate through index and fill containers from @rdpg */
        iops = &obj->do_index_ops->dio_it;
        LASSERT(iops != NULL);
-       it = iops->init(env, obj, rdpg->rp_attrs, BYPASS_CAPA);
+       it = iops->init(env, obj, rdpg->rp_attrs);
        if (IS_ERR(it))
                RETURN(PTR_ERR(it));
 
@@ -956,7 +972,7 @@ out:
 }
 EXPORT_SYMBOL(dt_index_read);
 
-#ifdef LPROCFS
+#ifdef CONFIG_PROC_FS
 int lprocfs_dt_blksize_seq_show(struct seq_file *m, void *v)
 {
        struct dt_device *dt = m->private;
@@ -1050,4 +1066,4 @@ int lprocfs_dt_filesfree_seq_show(struct seq_file *m, void *v)
 }
 EXPORT_SYMBOL(lprocfs_dt_filesfree_seq_show);
 
-#endif /* LPROCFS */
+#endif /* CONFIG_PROC_FS */