public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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

  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