From: green@linuxhacker.ru
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
devel@driverdev.osuosl.org,
Andreas Dilger <andreas.dilger@intel.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Lustre Development List <lustre-devel@lists.lustre.org>,
Oleg Drokin <green@linuxhacker.ru>
Subject: [PATCH 11/45] staging/lustre/osc: Remove commented out osc_page_protected()
Date: Tue, 16 Feb 2016 00:46:43 -0500 [thread overview]
Message-ID: <1455601637-3847710-12-git-send-email-green@linuxhacker.ru> (raw)
In-Reply-To: <1455601637-3847710-1-git-send-email-green@linuxhacker.ru>
From: Oleg Drokin <green@linuxhacker.ru>
The complicated version of osc_page_protected and osc_page_is_dlocked
are unsafe and were commented out for ages, so probably no point in
carrying them on.
Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
---
drivers/staging/lustre/lustre/osc/osc_page.c | 99 ----------------------------
1 file changed, 99 deletions(-)
diff --git a/drivers/staging/lustre/lustre/osc/osc_page.c b/drivers/staging/lustre/lustre/osc/osc_page.c
index 8943f0a..99d5b56 100644
--- a/drivers/staging/lustre/lustre/osc/osc_page.c
+++ b/drivers/staging/lustre/lustre/osc/osc_page.c
@@ -51,111 +51,12 @@ static int osc_lru_reserve(const struct lu_env *env, struct osc_object *obj,
* @{
*/
-/*
- * Comment out osc_page_protected because it may sleep inside the
- * the client_obd_list_lock.
- * client_obd_list_lock -> osc_ap_completion -> osc_completion ->
- * -> osc_page_protected -> osc_page_is_dlocked -> osc_match_base
- * -> ldlm_lock_match -> sptlrpc_import_check_ctx -> sleep.
- */
-#if 0
-static int osc_page_is_dlocked(const struct lu_env *env,
- const struct osc_page *opg,
- enum cl_lock_mode mode, int pending, int unref)
-{
- struct cl_page *page;
- struct osc_object *obj;
- struct osc_thread_info *info;
- struct ldlm_res_id *resname;
- struct lustre_handle *lockh;
- ldlm_policy_data_t *policy;
- ldlm_mode_t dlmmode;
- __u64 flags;
-
- might_sleep();
-
- info = osc_env_info(env);
- resname = &info->oti_resname;
- policy = &info->oti_policy;
- lockh = &info->oti_handle;
- page = opg->ops_cl.cpl_page;
- obj = cl2osc(opg->ops_cl.cpl_obj);
-
- flags = LDLM_FL_TEST_LOCK | LDLM_FL_BLOCK_GRANTED;
- if (pending)
- flags |= LDLM_FL_CBPENDING;
-
- dlmmode = osc_cl_lock2ldlm(mode) | LCK_PW;
- osc_lock_build_res(env, obj, resname);
- osc_index2policy(policy, page->cp_obj, page->cp_index, page->cp_index);
- return osc_match_base(osc_export(obj), resname, LDLM_EXTENT, policy,
- dlmmode, &flags, NULL, lockh, unref);
-}
-
-/**
- * Checks an invariant that a page in the cache is covered by a lock, as
- * needed.
- */
-static int osc_page_protected(const struct lu_env *env,
- const struct osc_page *opg,
- enum cl_lock_mode mode, int unref)
-{
- struct cl_object_header *hdr;
- struct cl_lock *scan;
- struct cl_page *page;
- struct cl_lock_descr *descr;
- int result;
-
- LINVRNT(!opg->ops_temp);
-
- page = opg->ops_cl.cpl_page;
- if (page->cp_owner != NULL &&
- cl_io_top(page->cp_owner)->ci_lockreq == CILR_NEVER)
- /*
- * If IO is done without locks (liblustre, or lloop), lock is
- * not required.
- */
- result = 1;
- else
- /* otherwise check for a DLM lock */
- result = osc_page_is_dlocked(env, opg, mode, 1, unref);
- if (result == 0) {
- /* maybe this page is a part of a lockless io? */
- hdr = cl_object_header(opg->ops_cl.cpl_obj);
- descr = &osc_env_info(env)->oti_descr;
- descr->cld_mode = mode;
- descr->cld_start = page->cp_index;
- descr->cld_end = page->cp_index;
- spin_lock(&hdr->coh_lock_guard);
- list_for_each_entry(scan, &hdr->coh_locks, cll_linkage) {
- /*
- * Lock-less sub-lock has to be either in HELD state
- * (when io is actively going on), or in CACHED state,
- * when top-lock is being unlocked:
- * cl_io_unlock()->cl_unuse()->...->lov_lock_unuse().
- */
- if ((scan->cll_state == CLS_HELD ||
- scan->cll_state == CLS_CACHED) &&
- cl_lock_ext_match(&scan->cll_descr, descr)) {
- struct osc_lock *olck;
-
- olck = osc_lock_at(scan);
- result = osc_lock_is_lockless(olck);
- break;
- }
- }
- spin_unlock(&hdr->coh_lock_guard);
- }
- return result;
-}
-#else
static int osc_page_protected(const struct lu_env *env,
const struct osc_page *opg,
enum cl_lock_mode mode, int unref)
{
return 1;
}
-#endif
/*****************************************************************************
*
--
2.1.0
next prev parent reply other threads:[~2016-02-16 6:01 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-16 5:46 [PATCH 00/45] Lustre cleanups green
2016-02-16 5:46 ` [PATCH 01/45] staging/lustre/ptlrpc: Get rid of /proc references in comments green
2016-02-16 5:46 ` [PATCH 02/45] staging/lustre/obdclass: " green
2016-02-16 5:46 ` [PATCH 03/45] staging/lustre/libcfs: " green
2016-02-16 5:46 ` [PATCH 04/45] staging/lustre/llite: " green
2016-02-16 5:46 ` [PATCH 05/45] staging/lustre/lov: " green
2016-02-16 5:46 ` [PATCH 06/45] staging/lustre: Remove unused function oti_init green
2016-02-16 5:46 ` [PATCH 07/45] staging/lustre: Remove unused osc_on_mdt function green
2016-02-16 5:46 ` [PATCH 08/45] staging/lustre: Remove server code from client_obd_setup() green
2016-02-16 5:46 ` [PATCH 09/45] staging/lustre: Remove server code from class_get_type() green
2016-02-16 5:46 ` [PATCH 10/45] staging/lustre: Remove commented out lock_lock_multi_match green
2016-02-16 5:46 ` green [this message]
2016-02-16 5:46 ` [PATCH 12/45] staging/lustre/libcfs: Adjust NULL comparison codestyle green
2016-02-16 5:46 ` [PATCH 13/45] staging/lustre/lov: " green
2016-02-16 5:46 ` [PATCH 14/45] staging/lustre/llite: " green
2016-02-16 5:46 ` [PATCH 15/45] staging/lustre/ldlm: " green
2016-02-16 5:46 ` [PATCH 16/45] staging/lustre/lmv: " green
2016-02-16 5:46 ` [PATCH 17/45] staging/lustre/fid: " green
2016-02-16 5:46 ` [PATCH 18/45] staging/lustre/fld: " green
2016-02-16 5:46 ` [PATCH 19/45] staging/lustre/lclient: " green
2016-02-16 5:46 ` [PATCH 20/45] staging/lustre/include: " green
2016-02-16 5:46 ` [PATCH 21/45] staging/lustre/mdc: " green
2016-02-16 5:46 ` [PATCH 22/45] staging/lustre/mgc: " green
2016-02-16 5:46 ` [PATCH 23/45] staging/lustre/obdclass: " green
2016-02-16 5:46 ` [PATCH 24/45] staging/lustre/obdecho: " green
2016-02-16 5:46 ` [PATCH 25/45] staging/lustre/osc: " green
2016-02-16 5:46 ` [PATCH 26/45] staging/lustre/ptlrpc: " green
2016-02-16 5:46 ` [PATCH 27/45] staging/lustre: Remove the "write to FSF to get a copy of GPL" wording green
2016-02-16 5:47 ` [PATCH 28/45] staging/lustre/libcfs: Cleanup: parenthesis alignment adjustments green
2016-02-16 5:47 ` [PATCH 29/45] staging/lustre/libcfs: Move EXPORT_SYMBOLs under function/variable green
2016-02-16 5:47 ` [PATCH 30/45] staging/lustre/libcfs: style change to add missing spaces for operations green
2016-02-16 5:47 ` [PATCH 31/45] staging/lustre/libcfs: reformat cfs_tcd_for_each_type_lock define green
2016-02-16 5:47 ` [PATCH 32/45] staging/lustre/libcfs: Remove stray spaces after function name green
2016-02-16 5:47 ` [PATCH 33/45] staging/lustre/libcfs: Shortened too long lines green
2016-02-16 5:47 ` [PATCH 34/45] staging/lustre/libcfs: Remove unused cfs_tcd_owns_tage() function green
2016-02-16 5:47 ` [PATCH 35/45] staging/lustre/libcfs: Move private tracefile structs out of header green
2016-02-16 5:47 ` [PATCH 36/45] staging/lustre/libcfs: Update comments style to match kernel green
2016-02-16 5:47 ` [PATCH 37/45] staging/lustre/libcfs: Remove useless returns in void functions green
2016-02-16 5:47 ` [PATCH 38/45] staging/lustre/libcfs: Remove empty lines after/before braces green
2016-02-16 5:47 ` [PATCH 39/45] staging/lustre: Update cfs_cpu_notify switch statement with a comment green
2016-02-16 5:47 ` [PATCH 40/45] staging/lustre: Get rid of cfs_trace_buf_type_t typedef green
2016-02-16 5:47 ` [PATCH 41/45] staging/lustre/libcfs: Get rid of multiple assignments green
2016-02-16 5:47 ` [PATCH 42/45] staging/lustre: Remove space after cast in cfs_crypto_hash_final() green
2016-02-16 5:47 ` [PATCH 43/45] staging/lustre/libcfs: Replace use of printk with pr_<level> green
2016-02-16 5:55 ` Joe Perches
2016-02-16 16:12 ` Oleg Drokin
2016-02-20 22:34 ` Greg Kroah-Hartman
2016-02-16 5:47 ` [PATCH 44/45] staging/lustre: Convert cfs_trace_daemon_command to use kstrtoul green
2016-02-16 5:47 ` [PATCH 45/45] staging/lustre: Convert cfs_str2num_check " green
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1455601637-3847710-12-git-send-email-green@linuxhacker.ru \
--to=green@linuxhacker.ru \
--cc=andreas.dilger@intel.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lustre-devel@lists.lustre.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox