All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alasdair G Kergon <agk@redhat.com>
To: Joe Thornber <ejt@redhat.com>
Cc: dm-devel@redhat.com
Subject: Re: [PATCH 8/8] [dm-cache] cache target
Date: Tue, 12 Feb 2013 16:40:40 +0000	[thread overview]
Message-ID: <20130212164040.GI3228@agk-dp.fab.redhat.com> (raw)
In-Reply-To: <20130212152733.GH12499@agk-dp.fab.redhat.com>

On Tue, Feb 12, 2013 at 03:27:33PM +0000, Alasdair G Kergon wrote:
> updated code taken from the all-caches branch of 
> git://github.com/jthornber/linux-2.6
 
File: dm-cache-policy.c

> #include "dm.h"

> #include <linux/list.h>
Already pulled in via dm.h

> static struct dm_cache_policy_type *__get_policy(const char *name)
> {
> 	struct dm_cache_policy_type *t = __find_policy(name);
> 
> 	if (!t) {

Could we move this up a level and avoid the inverted unlock/lock
(which only seems to confuse automated lock analysis)?
   __find_policy(); if not found, request_module and __find_policy again ?

> 		spin_unlock(&register_lock);
> 		request_module("dm-cache-%s", name);
> 		spin_lock(&register_lock);
> 		t = __find_policy(name);
> 	}

> int dm_cache_policy_register(struct dm_cache_policy_type *type)
> {
> 	int r;
> 
> 	/* One size fits all for now */
> 	if (type->hint_size != 0 && type->hint_size != 4)

This should never happen unless coding error or corruption => DMWARN?

> 		return -EINVAL;


> void dm_cache_policy_destroy(struct dm_cache_policy *p)
> {
> 	struct dm_cache_policy_type *t = p->private;
> 
> 	put_policy(t);

module_put should be AFTER destroy or the code could get unloaded while destroy
is still running?

[Still to check the ref counting is sufficient: to understand why this is
a bit simpler than dm-path-selector which also handles modules plugging into
modules and went through a few iterations fixing ref problems]

> 	p->destroy(p);
> }

Alasdair

  reply	other threads:[~2013-02-12 16:40 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-13 20:19 Another cache target Joe Thornber
2012-12-13 20:19 ` [PATCH 1/8] [persistent-data] Fix a bug in btree_del, and another bug that was compensating for it Joe Thornber
2012-12-13 20:19 ` [PATCH 2/8] [persistent-data] dm_btree_walk Joe Thornber
2012-12-13 20:19 ` [PATCH 3/8] [persistent-data] tweak an error message Joe Thornber
2012-12-13 20:19 ` [PATCH 4/8] [dm-bio-prison] Change the bio-prison interface so the memory for the cells is passed in Joe Thornber
2013-01-14 10:02   ` Alasdair G Kergon
2013-01-14 14:06     ` thornber
2013-01-14 14:22       ` Alasdair G Kergon
2013-01-21 23:32   ` Alasdair G Kergon
2013-01-22 11:31     ` thornber
2013-01-22 12:10       ` Alasdair G Kergon
2012-12-13 20:19 ` [PATCH 5/8] [dm-thin] Fix a race condition between discard bios and ordinary bios Joe Thornber
2012-12-14 15:52   ` Mike Snitzer
2013-01-22  0:03   ` Alasdair G Kergon
2013-01-24  2:35   ` Alasdair G Kergon
2013-01-24 13:23     ` thornber
2013-02-06  0:11       ` Mikulas Patocka
2013-02-07 11:20         ` thornber
2012-12-13 20:19 ` [PATCH 6/8] [persistent-data] Add a transactional array Joe Thornber
2013-01-22 21:18   ` Alasdair G Kergon
2013-01-23 12:07     ` thornber
2013-01-25 20:11   ` Alasdair G Kergon
2013-01-28 13:06     ` thornber
2013-01-28 20:25       ` Alasdair G Kergon
2013-01-28 14:57     ` thornber
2013-01-28 20:22       ` Alasdair G Kergon
2012-12-13 20:19 ` [PATCH 7/8] [persistent-data] transactional bitset Joe Thornber
2013-01-22 21:59   ` Alasdair G Kergon
2012-12-13 20:19 ` [PATCH 8/8] [dm-cache] cache target Joe Thornber
2012-12-14  0:17   ` Darrick J. Wong
2012-12-14 10:09     ` thornber
2013-02-12 15:27   ` Alasdair G Kergon
2013-02-12 16:40     ` Alasdair G Kergon [this message]
2013-02-12 17:29       ` Alasdair G Kergon
2013-02-14 13:57       ` Joe Thornber
2013-02-14 14:05     ` Joe Thornber
2013-02-14 21:06       ` Alasdair G Kergon
2012-12-13 21:57 ` Another " Mike Snitzer
2012-12-14  1:16   ` Darrick J. Wong
2012-12-14  2:19     ` Mike Snitzer
2012-12-14  2:27       ` Mike Snitzer
2012-12-14  2:42         ` Darrick J. Wong
2012-12-14  4:23           ` Mike Snitzer
2012-12-14  2:34       ` Darrick J. Wong
2012-12-14 10:24         ` thornber
2012-12-14 12:11           ` thornber
2012-12-14 21:51             ` Darrick J. Wong
2012-12-15  8:23               ` Joe Thornber
2012-12-18  1:49                 ` Darrick J. Wong
2012-12-18  2:31                   ` Alasdair G Kergon
2013-01-08  0:19                 ` Darrick J. Wong
2013-01-08 13:55                   ` thornber
2012-12-22 18:50       ` Mark Hills
2012-12-17 16:54     ` Heinz Mauelshagen
2012-12-18 15:44       ` basic cache policy module fix [was: Re: Another cache target] Mike Snitzer
2012-12-20  1:14         ` Darrick J. Wong
2012-12-20 12:57           ` Heinz Mauelshagen
2012-12-20 13:24             ` Mike Snitzer
2012-12-20 16:10               ` Darrick J. Wong
2012-12-20 17:02                 ` Heinz Mauelshagen

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=20130212164040.GI3228@agk-dp.fab.redhat.com \
    --to=agk@redhat.com \
    --cc=dm-devel@redhat.com \
    --cc=ejt@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.