2006-03-04 00:44:36

by Junichi Nomura

[permalink] [raw]
Subject: [PATCH 0/6] dm/md sysfs dependency tree (rev.3)

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.


2006-03-04 00:56:14

by Junichi Nomura

[permalink] [raw]
Subject: [PATCH 1/6] kobject_add_dir

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.


Attachments:
01-kobject_add_dir.patch (1.71 kB)

2006-03-04 00:56:40

by Junichi Nomura

[permalink] [raw]
Subject: [PATCH 3/6] bd_claim_by_kobject

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.


Attachments:
03-bd_claim_by_kobj.patch (7.12 kB)

2006-03-04 00:56:37

by Junichi Nomura

[permalink] [raw]
Subject: [PATCH 4/6] bd_claim_by_disk

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.


Attachments:
04-bd_claim_by_disk.patch (940.00 B)

2006-03-04 00:56:13

by Junichi Nomura

[permalink] [raw]
Subject: [PATCH 2/6] add holders/slaves subdirectory to /sys/block

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.


Attachments:
02-add_subdirs.patch (2.76 kB)

2006-03-04 00:57:21

by Junichi Nomura

[permalink] [raw]
Subject: [PATCH 6/6] dm to use bd_claim_by_disk

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.


Attachments:
06-dm_deptree.patch (2.84 kB)

2006-03-04 00:57:09

by Junichi Nomura

[permalink] [raw]
Subject: [PATCH 5/6] md to use bd_claim_by_disk

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.


Attachments:
05-md_deptree.patch (1.02 kB)

2006-03-06 15:57:05

by Alasdair G Kergon

[permalink] [raw]
Subject: Re: [PATCH 6/6] dm to use bd_claim_by_disk

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]

2006-03-06 16:59:00

by Junichi Nomura

[permalink] [raw]
Subject: Re: [PATCH 6/6] dm to use bd_claim_by_disk

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.


Attachments:
06-dm_deptree-2.patch (2.82 kB)