diff options
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/loop.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 8546d123b9a7..a90e83c9be96 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c | |||
@@ -835,6 +835,8 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, | |||
835 | 835 | ||
836 | set_capacity(lo->lo_disk, size); | 836 | set_capacity(lo->lo_disk, size); |
837 | bd_set_size(bdev, size << 9); | 837 | bd_set_size(bdev, size << 9); |
838 | /* let user-space know about the new size */ | ||
839 | kobject_uevent(&disk_to_dev(bdev->bd_disk)->kobj, KOBJ_CHANGE); | ||
838 | 840 | ||
839 | set_blocksize(bdev, lo_blocksize); | 841 | set_blocksize(bdev, lo_blocksize); |
840 | 842 | ||
@@ -858,6 +860,7 @@ out_clr: | |||
858 | set_capacity(lo->lo_disk, 0); | 860 | set_capacity(lo->lo_disk, 0); |
859 | invalidate_bdev(bdev); | 861 | invalidate_bdev(bdev); |
860 | bd_set_size(bdev, 0); | 862 | bd_set_size(bdev, 0); |
863 | kobject_uevent(&disk_to_dev(bdev->bd_disk)->kobj, KOBJ_CHANGE); | ||
861 | mapping_set_gfp_mask(mapping, lo->old_gfp_mask); | 864 | mapping_set_gfp_mask(mapping, lo->old_gfp_mask); |
862 | lo->lo_state = Lo_unbound; | 865 | lo->lo_state = Lo_unbound; |
863 | out_putf: | 866 | out_putf: |
@@ -944,8 +947,11 @@ static int loop_clr_fd(struct loop_device *lo, struct block_device *bdev) | |||
944 | if (bdev) | 947 | if (bdev) |
945 | invalidate_bdev(bdev); | 948 | invalidate_bdev(bdev); |
946 | set_capacity(lo->lo_disk, 0); | 949 | set_capacity(lo->lo_disk, 0); |
947 | if (bdev) | 950 | if (bdev) { |
948 | bd_set_size(bdev, 0); | 951 | bd_set_size(bdev, 0); |
952 | /* let user-space know about this change */ | ||
953 | kobject_uevent(&disk_to_dev(bdev->bd_disk)->kobj, KOBJ_CHANGE); | ||
954 | } | ||
949 | mapping_set_gfp_mask(filp->f_mapping, gfp); | 955 | mapping_set_gfp_mask(filp->f_mapping, gfp); |
950 | lo->lo_state = Lo_unbound; | 956 | lo->lo_state = Lo_unbound; |
951 | /* This is safe: open() is still holding a reference. */ | 957 | /* This is safe: open() is still holding a reference. */ |
@@ -1189,6 +1195,8 @@ static int loop_set_capacity(struct loop_device *lo, struct block_device *bdev) | |||
1189 | sz <<= 9; | 1195 | sz <<= 9; |
1190 | mutex_lock(&bdev->bd_mutex); | 1196 | mutex_lock(&bdev->bd_mutex); |
1191 | bd_set_size(bdev, sz); | 1197 | bd_set_size(bdev, sz); |
1198 | /* let user-space know about the new size */ | ||
1199 | kobject_uevent(&disk_to_dev(bdev->bd_disk)->kobj, KOBJ_CHANGE); | ||
1192 | mutex_unlock(&bdev->bd_mutex); | 1200 | mutex_unlock(&bdev->bd_mutex); |
1193 | 1201 | ||
1194 | out: | 1202 | out: |