diff options
author | Peter Oberparleiter <peter.oberparleiter@de.ibm.com> | 2006-07-10 04:44:00 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-10 13:24:14 -0700 |
commit | 25e206b54b9a20e63b6f5194aeebfa13d37e015c (patch) | |
tree | 3b93a095eb1237e8d74f52553b69b666e6044f7d /fs/partitions | |
parent | 7691030bc9732f7d535522dda78cfdd36716def1 (diff) | |
download | kernel_samsung_espresso10-25e206b54b9a20e63b6f5194aeebfa13d37e015c.zip kernel_samsung_espresso10-25e206b54b9a20e63b6f5194aeebfa13d37e015c.tar.gz kernel_samsung_espresso10-25e206b54b9a20e63b6f5194aeebfa13d37e015c.tar.bz2 |
[PATCH] partitions: let partitions inherit policy from disk
Change the partition code in fs/partitions/check.c to initialize a newly
detected partition's policy field with that of the containing block device
(see patch below).
My reasoning is that function set_disk_ro() in block/genhd.c modifies the
policy field (read-only indicator) of a disk and all contained partitions.
When a partition is detected after the call to set_disk_ro(), the policy
field of this partition will currently not inherit the disk's policy field.
This behavior poses a problem in cases where a block device can be
'logically de- and reactivated' like e.g. the s390 DASD driver because
partition detection may run after the policy field has been modified.
Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Acked-by: Al Viro <viro@ftp.linux.org.uk>
Makes-sense-to: Jens Axboe <axboe@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/partitions')
-rw-r--r-- | fs/partitions/check.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/partitions/check.c b/fs/partitions/check.c index 8396340..51c6a74 100644 --- a/fs/partitions/check.c +++ b/fs/partitions/check.c @@ -339,6 +339,7 @@ void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len) p->start_sect = start; p->nr_sects = len; p->partno = part; + p->policy = disk->policy; if (isdigit(disk->kobj.name[strlen(disk->kobj.name)-1])) snprintf(p->kobj.name,KOBJ_NAME_LEN,"%sp%d",disk->kobj.name,part); |