Hello,
This is an updated version of dm/md sysfs dependency tree patch set.
For example, if dm-0 maps to sda, we'll have following symlinks;
/sys/block/dm-0/slaves/sda --> /sys/block/sda
/sys/block/sda/holders/dm-0 --> /sys/block/dm-0
Thanks for Alasdair, Neil and Greg for reviews and comments.
I think the patches get much better shape than before.
I'm happy to hear any other comments for these patches.
Patches included are:
1. [PATCH 1/6] kobject_add_dir
Adding kobject_add_dir() function which creates
a subdirectory for a given kobject.
2. [PATCH 2/6] add holders/slaves subdirectory to /sys/block
Creating "slaves" and "holders" directories in /sys/block/<disk>,
creating "holders" directory under /sys/block/<disk>/<partition>
3. [PATCH 3/6] bd_claim_by_kobject
Adding bd_claim_by_kobject() function which takes kobject as
additional signature of holder device and creates sysfs symlinks
between holder device and claimed device.
bd_release_from_kobject() is a counter part of bd_claim_by_kobject.
4. [PATCH 4/6] bd_claim_by_disk
Variants which take gendisk instead of kobject
and do kobject_{get,put}(&gendisk->kobj).
5. [PATCH 5/6] md to use bd_claim_by_disk
Use bd_claim_by_disk.
6. [PATCH 6/6] dm to use bd_claim_by_disk
Use bd_claim_by_disk.
Patches from 1 to 5 work both on 2.6.16-rc5 and 2.6.16-rc5-mm2.
I hope them to be included in mm if there's no problem.
Patch 6 depends on dm-table-store-md.patch in
http://www.kernel.org/pub/linux/kernel/people/agk/patches/2.6/editing/.
The dm-table-store-md.patch might theoretically require some
locking/release-ordering fixes in dm core which is under
investigation though it's separate issue.
Thanks,
--
Jun'ichi Nomura, NEC Solutions (America), Inc.
This patch is part of dm/md sysfs dependency tree.
This adds kobject_add_dir() function which creates a subdirectory
for a given kobject.
Thanks,
--
Jun'ichi Nomura, NEC Solutions (America), Inc.
This patch is part of dm/md sysfs dependency tree.
This adds bd_claim_by_kobject() function which takes kobject as
additional signature of holder device and creates sysfs symlinks
between holder device and claimed device.
bd_release_from_kobject() is a counter part of bd_claim_by_kobject.
Thanks,
--
Jun'ichi Nomura, NEC Solutions (America), Inc.
This patch is part of dm/md sysfs dependency tree.
This adds variants of bd_claim_by_kobject which takes gendisk instead
of kobject and do kobject_{get,put}(&gendisk->slave_dir).
Thanks,
--
Jun'ichi Nomura, NEC Solutions (America), Inc.
This patch is part of dm/md sysfs dependency tree.
With this patch, "slaves" and "holders" directories are
created in /sys/block/<disk> and
"holders" directory is created in /sys/block/<disk>/<partition>.
Thanks,
--
Jun'ichi Nomura, NEC Solutions (America), Inc.
This patch is part of dm/md sysfs dependency tree.
Following symlinks are created if dm-0 maps to sda:
/sys/block/dm-0/slaves/sda --> /sys/block/sda
/sys/block/sda/holders/dm-0 --> /sys/block/dm-0
This patch depends on dm-table-store-md.patch in
http://www.kernel.org/pub/linux/kernel/people/agk/patches/2.6/editing/
Thanks,
--
Jun'ichi Nomura, NEC Solutions (America), Inc.
This patch is part of dm/md sysfs dependency tree.
Following symlinks are created if md0 is built from sda and sdb
/sys/block/md0/slaves/sda --> /sys/block/sda
/sys/block/md0/slaves/sdb --> /sys/block/sdb
/sys/block/sda/holders/md0 --> /sys/block/md0
/sys/block/sdb/holders/md0 --> /sys/block/md0
Thanks,
--
Jun'ichi Nomura, NEC Solutions (America), Inc.
On Fri, Mar 03, 2006 at 07:58:32PM -0500, Jun'ichi Nomura wrote:
> This patch is part of dm/md sysfs dependency tree.
> +static int open_dev(struct dm_dev *d, dev_t dev, struct gendisk *holder)
> +static int upgrade_mode(struct dm_dev *dd, int new_mode, struct gendisk *holder)
> +static void close_dev(struct dm_dev *d, struct gendisk *holder)
Please pass the dm structure, struct mapped_device, around between dm functions
internally where you can, instead of struct gendisk. (Every time the new
parameter is passed it's wrapped with dm_disk(), so move the dm_disk() inside.)
Alasdair
--
[email protected]
Hi Alasdair,
Alasdair G Kergon wrote:
>>+static int open_dev(struct dm_dev *d, dev_t dev, struct gendisk *holder)
>>+static int upgrade_mode(struct dm_dev *dd, int new_mode, struct gendisk *holder)
>>+static void close_dev(struct dm_dev *d, struct gendisk *holder)
>
> Please pass the dm structure, struct mapped_device, around between dm functions
> internally where you can, instead of struct gendisk. (Every time the new
> parameter is passed it's wrapped with dm_disk(), so move the dm_disk() inside.)
Thank you for the comment. I changed them and updated the patch.
Could you check whether there is any other wrong thing?
Thanks,
--
Jun'ichi Nomura, NEC Solutions (America), Inc.