diff options
author | Ming Lei <tom.leiming@gmail.com> | 2009-03-01 08:10:49 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-03-24 19:38:26 -0400 |
commit | f67f129e519fa87f8ebd236b6336fe43f31ee141 (patch) | |
tree | e2832f6d012044f5d05c6130416832235c7d2730 /fs/partitions | |
parent | 4995f8ef9d3aac72745e12419d7fbaa8d01b1d81 (diff) |
Driver core: implement uevent suppress in kobject
This patch implements uevent suppress in kobject and removes it
from struct device, based on the following ideas:
1,Uevent sending should be one attribute of kobject, so suppressing it
in kobject layer is more natural than in device layer. By this way,
we can do it for other objects embedded with kobject.
2,It may save several bytes for each instance of struct device.(On my
omap3(32bit ARM) based box, can save 8bytes per device object)
This patch also introduces dev_set|get_uevent_suppress() helpers to
set and query uevent_suppress attribute in case to help kobject
as private part of struct device in future.
[This version is against the latest driver-core patch set of Greg,please
ignore the last version.]
Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'fs/partitions')
-rw-r--r-- | fs/partitions/check.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/partitions/check.c b/fs/partitions/check.c index 6d720243f5f4..38e337d51ced 100644 --- a/fs/partitions/check.c +++ b/fs/partitions/check.c | |||
@@ -400,7 +400,7 @@ struct hd_struct *add_partition(struct gendisk *disk, int partno, | |||
400 | pdev->devt = devt; | 400 | pdev->devt = devt; |
401 | 401 | ||
402 | /* delay uevent until 'holders' subdir is created */ | 402 | /* delay uevent until 'holders' subdir is created */ |
403 | pdev->uevent_suppress = 1; | 403 | dev_set_uevent_suppress(pdev, 1); |
404 | err = device_add(pdev); | 404 | err = device_add(pdev); |
405 | if (err) | 405 | if (err) |
406 | goto out_put; | 406 | goto out_put; |
@@ -410,7 +410,7 @@ struct hd_struct *add_partition(struct gendisk *disk, int partno, | |||
410 | if (!p->holder_dir) | 410 | if (!p->holder_dir) |
411 | goto out_del; | 411 | goto out_del; |
412 | 412 | ||
413 | pdev->uevent_suppress = 0; | 413 | dev_set_uevent_suppress(pdev, 0); |
414 | if (flags & ADDPART_FLAG_WHOLEDISK) { | 414 | if (flags & ADDPART_FLAG_WHOLEDISK) { |
415 | err = device_create_file(pdev, &dev_attr_whole_disk); | 415 | err = device_create_file(pdev, &dev_attr_whole_disk); |
416 | if (err) | 416 | if (err) |
@@ -422,7 +422,7 @@ struct hd_struct *add_partition(struct gendisk *disk, int partno, | |||
422 | rcu_assign_pointer(ptbl->part[partno], p); | 422 | rcu_assign_pointer(ptbl->part[partno], p); |
423 | 423 | ||
424 | /* suppress uevent if the disk supresses it */ | 424 | /* suppress uevent if the disk supresses it */ |
425 | if (!ddev->uevent_suppress) | 425 | if (!dev_get_uevent_suppress(pdev)) |
426 | kobject_uevent(&pdev->kobj, KOBJ_ADD); | 426 | kobject_uevent(&pdev->kobj, KOBJ_ADD); |
427 | 427 | ||
428 | return p; | 428 | return p; |
@@ -455,7 +455,7 @@ void register_disk(struct gendisk *disk) | |||
455 | dev_set_name(ddev, disk->disk_name); | 455 | dev_set_name(ddev, disk->disk_name); |
456 | 456 | ||
457 | /* delay uevents, until we scanned partition table */ | 457 | /* delay uevents, until we scanned partition table */ |
458 | ddev->uevent_suppress = 1; | 458 | dev_set_uevent_suppress(ddev, 1); |
459 | 459 | ||
460 | if (device_add(ddev)) | 460 | if (device_add(ddev)) |
461 | return; | 461 | return; |
@@ -490,7 +490,7 @@ void register_disk(struct gendisk *disk) | |||
490 | 490 | ||
491 | exit: | 491 | exit: |
492 | /* announce disk after possible partitions are created */ | 492 | /* announce disk after possible partitions are created */ |
493 | ddev->uevent_suppress = 0; | 493 | dev_set_uevent_suppress(ddev, 0); |
494 | kobject_uevent(&ddev->kobj, KOBJ_ADD); | 494 | kobject_uevent(&ddev->kobj, KOBJ_ADD); |
495 | 495 | ||
496 | /* announce possible partitions */ | 496 | /* announce possible partitions */ |