From: Paul Clements <Paul.Clements@SteelEye.com>
To: Neil Brown <neilb@cse.unsw.edu.au>
Cc: linux-raid@vger.kernel.org
Subject: Re: [PATCH 2.5.68] eliminate deprecated MOD_INC_USE_COUNT/MOD_DEC_USE_COUNT in md.c
Date: Fri, 02 May 2003 18:00:17 -0400 [thread overview]
Message-ID: <3EB2EA71.BA0DC039@SteelEye.com> (raw)
In-Reply-To: 16049.64476.440042.635337@notabene.cse.unsw.edu.au
[-- Attachment #1: Type: text/plain, Size: 880 bytes --]
Neil Brown wrote:
>
> On Wednesday April 23, Paul.Clements@SteelEye.com wrote:
> > Neil Brown wrote:
> It is possible for an array to be half-assembled. To have some drives
> attached, but not to have been started.
> This can happen (for example) if you use mdadm to assemble a raid5
> array without given all of the drives, and without giving --run.
>
> In this case you don't want 'md' to be unloaded, but you haven't
> loaded a personality module yet. So you need to take a reference to
> the md module whenever you start putting an md array together.
Ah...I had missed that...appears that was an existing problem, even with
the MOD_INC_USE_COUNT in place.
So we need to do the ref counting at bind/unbind time, rather than
activation/deactivation time.
So here's the patch...compiled and tested briefly against
2.5.68-bklatest, the ref counting looks correct
--
Paul
[-- Attachment #2: md_mod_ref.diff --]
[-- Type: text/plain, Size: 1348 bytes --]
--- linux-2.5/drivers/md/md.c.2.5.68-bklatest 2003-05-02 11:56:18.000000000 -0400
+++ linux-2.5/drivers/md/md.c 2003-05-02 13:11:57.000000000 -0400
@@ -181,7 +181,6 @@ static void mddev_put(mddev_t *mddev)
list_del(&mddev->all_mddevs);
mddev_map[mdidx(mddev)] = NULL;
kfree(mddev);
- MOD_DEC_USE_COUNT;
}
spin_unlock(&all_mddevs_lock);
}
@@ -203,7 +202,6 @@ static mddev_t * mddev_find(int unit)
mddev_map[unit] = new;
list_add(&new->all_mddevs, &all_mddevs);
spin_unlock(&all_mddevs_lock);
- MOD_INC_USE_COUNT;
return new;
}
spin_unlock(&all_mddevs_lock);
@@ -1016,7 +1014,12 @@ static int bind_rdev_to_array(mdk_rdev_t
if (find_rdev_nr(mddev, rdev->desc_nr))
return -EBUSY;
}
-
+
+ /* get a module ref if this is the first disk in the array */
+ if (list_empty(&mddev->disks))
+ if (!try_module_get(THIS_MODULE))
+ return -EBUSY;
+
list_add(&rdev->same_set, &mddev->disks);
rdev->mddev = mddev;
printk(KERN_INFO "md: bind<%s>\n", bdev_partition_name(rdev->bdev));
@@ -1031,6 +1034,11 @@ static void unbind_rdev_from_array(mdk_r
}
list_del_init(&rdev->same_set);
printk(KERN_INFO "md: unbind<%s>\n", bdev_partition_name(rdev->bdev));
+
+ /* drop module ref if this array has no more disks */
+ if (list_empty(&rdev->mddev->disks))
+ module_put(THIS_MODULE);
+
rdev->mddev = NULL;
}
next prev parent reply other threads:[~2003-05-02 22:00 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-22 19:19 [PATCH 2.5.68] eliminate deprecated MOD_INC_USE_COUNT/MOD_DEC_USE_COUNT in md.c Paul Clements
2003-04-23 0:00 ` Neil Brown
2003-04-23 16:07 ` Paul Clements
2003-05-02 5:02 ` Neil Brown
2003-05-02 22:00 ` Paul Clements [this message]
2003-05-09 21:19 ` Daniel McNeil
2003-05-10 4:16 ` Paul Clements
2003-05-12 7:13 ` Paul Clements
2003-05-12 18:23 ` Daniel McNeil
2003-04-23 17:52 ` [PATCH 2.5.68] eliminate interdependency between fs/partitions and md driver and enable persistent superblocks/raidautorun with modular md Paul Clements
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=3EB2EA71.BA0DC039@SteelEye.com \
--to=paul.clements@steeleye.com \
--cc=linux-raid@vger.kernel.org \
--cc=neilb@cse.unsw.edu.au \
/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;
as well as URLs for NNTP newsgroup(s).