From: Kefu Chai Date: Thu, 18 Feb 2021 04:27:06 +0000 (+0800) Subject: mgr/BaseMgrModule: use without_gil() helper X-Git-Tag: v17.1.0~2843^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cc151a74668f7dd2be79a41b6b01df373fdd3f47;p=ceph.git mgr/BaseMgrModule: use without_gil() helper Signed-off-by: Kefu Chai --- diff --git a/src/mgr/BaseMgrModule.cc b/src/mgr/BaseMgrModule.cc index f1ebb94ae93c..c1d42aa9b46d 100644 --- a/src/mgr/BaseMgrModule.cc +++ b/src/mgr/BaseMgrModule.cc @@ -357,12 +357,10 @@ ceph_set_health_checks(BaseMgrModule *self, PyObject *args) out_checks.dump(&jf); jf.flush(*_dout); *_dout << dendl; - - PyThreadState *tstate = PyEval_SaveThread(); - self->py_modules->set_health_checks(self->this_module->get_name(), - std::move(out_checks)); - PyEval_RestoreThread(tstate); - + without_gil([&] { + self->py_modules->set_health_checks(self->this_module->get_name(), + std::move(out_checks)); + }); Py_RETURN_NONE; } @@ -492,10 +490,9 @@ ceph_set_module_option(BaseMgrModule *self, PyObject *args) if (value) { val = value; } - PyThreadState *tstate = PyEval_SaveThread(); - self->py_modules->set_config(module, key, val); - PyEval_RestoreThread(tstate); - + without_gil([&] { + self->py_modules->set_config(module, key, val); + }); Py_RETURN_NONE; } @@ -532,10 +529,9 @@ ceph_store_set(BaseMgrModule *self, PyObject *args) if (value) { val = value; } - PyThreadState *tstate = PyEval_SaveThread(); - self->py_modules->set_store(self->this_module->get_name(), key, val); - PyEval_RestoreThread(tstate); - + without_gil([&] { + self->py_modules->set_store(self->this_module->get_name(), key, val); + }); Py_RETURN_NONE; } @@ -587,11 +583,9 @@ ceph_cluster_log(BaseMgrModule *self, PyObject *args) if (!PyArg_ParseTuple(args, "sis:ceph_cluster_log", &channel, &prio, &message)) { return nullptr; } - - PyThreadState *tstate = PyEval_SaveThread(); - self->py_modules->cluster_log(channel, (clog_type)prio, message); - PyEval_RestoreThread(tstate); - + without_gil([&] { + self->py_modules->cluster_log(channel, (clog_type)prio, message); + }); Py_RETURN_NONE; } @@ -678,14 +672,12 @@ ceph_set_uri(BaseMgrModule *self, PyObject *args) &svc_str)) { return nullptr; } - // We call down into PyModules even though we have a MgrPyModule // reference here, because MgrPyModule's fields are protected // by PyModules' lock. - PyThreadState *tstate = PyEval_SaveThread(); - self->py_modules->set_uri(self->this_module->get_name(), svc_str); - PyEval_RestoreThread(tstate); - + without_gil([&] { + self->py_modules->set_uri(self->this_module->get_name(), svc_str); + }); Py_RETURN_NONE; } @@ -698,11 +690,9 @@ ceph_set_wear_level(BaseMgrModule *self, PyObject *args) &devid, &wear_level)) { return nullptr; } - - PyThreadState *tstate = PyEval_SaveThread(); - self->py_modules->set_device_wear_level(devid, wear_level); - PyEval_RestoreThread(tstate); - + without_gil([&] { + self->py_modules->set_device_wear_level(devid, wear_level); + }); Py_RETURN_NONE; } @@ -727,11 +717,9 @@ ceph_update_progress_event(BaseMgrModule *self, PyObject *args) &evid, &desc, &progress, &add_to_ceph_s)) { return nullptr; } - - PyThreadState *tstate = PyEval_SaveThread(); - self->py_modules->update_progress_event(evid, desc, progress, add_to_ceph_s); - PyEval_RestoreThread(tstate); - + without_gil([&] { + self->py_modules->update_progress_event(evid, desc, progress, add_to_ceph_s); + }); Py_RETURN_NONE; } @@ -743,21 +731,18 @@ ceph_complete_progress_event(BaseMgrModule *self, PyObject *args) &evid)) { return nullptr; } - - PyThreadState *tstate = PyEval_SaveThread(); - self->py_modules->complete_progress_event(evid); - PyEval_RestoreThread(tstate); - + without_gil([&] { + self->py_modules->complete_progress_event(evid); + }); Py_RETURN_NONE; } static PyObject* ceph_clear_all_progress_events(BaseMgrModule *self, PyObject *args) { - PyThreadState *tstate = PyEval_SaveThread(); - self->py_modules->clear_all_progress_events(); - PyEval_RestoreThread(tstate); - + without_gil([&] { + self->py_modules->clear_all_progress_events(); + }); Py_RETURN_NONE; } @@ -1357,9 +1342,9 @@ ceph_is_authorized(BaseMgrModule *self, PyObject *args) arguments[arg_key] = arg_value; } - PyThreadState *tstate = PyEval_SaveThread(); - bool r = self->this_module->is_authorized(arguments); - PyEval_RestoreThread(tstate); + bool r = without_gil([&] { + return self->this_module->is_authorized(arguments); + }); if (r) { Py_RETURN_TRUE; @@ -1374,9 +1359,9 @@ ceph_register_client(BaseMgrModule *self, PyObject *args) if (!PyArg_ParseTuple(args, "s:ceph_register_client", &addrs)) { return nullptr; } - PyThreadState *tstate = PyEval_SaveThread(); - self->py_modules->register_client(self->this_module->get_name(), addrs); - PyEval_RestoreThread(tstate); + without_gil([&] { + self->py_modules->register_client(self->this_module->get_name(), addrs); + }); Py_RETURN_NONE; } @@ -1387,9 +1372,9 @@ ceph_unregister_client(BaseMgrModule *self, PyObject *args) if (!PyArg_ParseTuple(args, "s:ceph_unregister_client", &addrs)) { return nullptr; } - PyThreadState *tstate = PyEval_SaveThread(); - self->py_modules->unregister_client(self->this_module->get_name(), addrs); - PyEval_RestoreThread(tstate); + without_gil([&] { + self->py_modules->unregister_client(self->this_module->get_name(), addrs); + }); Py_RETURN_NONE; }