From mboxrd@z Thu Jan 1 00:00:00 1970 From: majianpeng Subject: [PATCH 1/2] block: Set inode of block_device size to zero when delete gendisk. Date: Wed, 11 Sep 2013 19:00:31 +0800 Message-ID: <201309111900280892484@gmail.com> Reply-To: majianpeng Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: base64 Cc: linux-fsdevel , LKML To: axboe , viro Return-path: Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org V2hlbiByZW1vdmUgZ2VuZGlzaywgc2V0IHRoZSBzaXplIG9mIGlub2RlIG9mIGJsb2NrX2Rldmlj ZSB0byB6ZXJvLg0KVGhpcyBpcyBtYWlubHkgbGV0IHRoZSB2ZnMga25vdyBkaXNrIHJlbW92ZWQu DQoNClNpZ25lZC1vZmYtYnk6IEppYW5wZW5nIE1hIDxtYWppYW5wZW5nQGdtYWlsLmNvbT4NCi0t LQ0KIGJsb2NrL2dlbmhkLmMgfCAxNCArKysrKysrKysrKysrKw0KIDEgZmlsZSBjaGFuZ2VkLCAx NCBpbnNlcnRpb25zKCspDQoNCmRpZmYgLS1naXQgYS9ibG9jay9nZW5oZC5jIGIvYmxvY2svZ2Vu aGQuYw0KaW5kZXggZGFkZjQyYi4uYzNhNTRiNCAxMDA2NDQNCi0tLSBhL2Jsb2NrL2dlbmhkLmMN CisrKyBiL2Jsb2NrL2dlbmhkLmMNCkBAIC02MzQsNiArNjM0LDcgQEAgdm9pZCBkZWxfZ2VuZGlz ayhzdHJ1Y3QgZ2VuZGlzayAqZGlzaykNCiB7DQogCXN0cnVjdCBkaXNrX3BhcnRfaXRlciBwaXRl cjsNCiAJc3RydWN0IGhkX3N0cnVjdCAqcGFydDsNCisJc3RydWN0IGJsb2NrX2RldmljZSAqYmRl djsNCiANCiAJZGlza19kZWxfZXZlbnRzKGRpc2spOw0KIA0KQEAgLTY1NSw2ICs2NTYsMTkgQEAg dm9pZCBkZWxfZ2VuZGlzayhzdHJ1Y3QgZ2VuZGlzayAqZGlzaykNCiAJYmxrX3VucmVnaXN0ZXJf cXVldWUoZGlzayk7DQogCWJsa191bnJlZ2lzdGVyX3JlZ2lvbihkaXNrX2RldnQoZGlzayksIGRp c2stPm1pbm9ycyk7DQogDQorCS8qDQorCSAqIFdoZW4gdXNlZCBidWZmZXItbW9kZSBvbiByYXcg YmxvY2tkZXZpY2UsdGhlIGRpc2sgcmVtb3ZlZC4NCisJICogQnV0IHRoZSB2ZnMgZG9uJ3Qga25v dy5TbyB0ZWxsIHRoZSB2ZnMgc2l6ZSBvZiBkaXNrIGJlY2FtZSB6ZXJvLA0KKwkgKiB0aGUgYnVm ZmVyIHdyaXRlICBjYW4gcmV0dXJuDQorCSAqLw0KKwliZGV2ID0gYmRnZXRfZGlzayhkaXNrLCAw KTsNCisJaWYgKGJkZXYpIHsNCisJCW11dGV4X2xvY2soJmJkZXYtPmJkX2lub2RlLT5pX211dGV4 KTsNCisJCWlfc2l6ZV93cml0ZShiZGV2LT5iZF9pbm9kZSwgMCk7DQorCQltdXRleF91bmxvY2so JmJkZXYtPmJkX2lub2RlLT5pX211dGV4KTsNCisJCWJkcHV0KGJkZXYpOw0KKwl9DQorDQogCXBh cnRfc3RhdF9zZXRfYWxsKCZkaXNrLT5wYXJ0MCwgMCk7DQogCWRpc2stPnBhcnQwLnN0YW1wID0g MDsNCiANCi0tIA0KMS44LjQtcmMwDQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754393Ab3IKLAp (ORCPT ); Wed, 11 Sep 2013 07:00:45 -0400 Received: from mail-pa0-f43.google.com ([209.85.220.43]:48807 "EHLO mail-pa0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753146Ab3IKLAm (ORCPT ); Wed, 11 Sep 2013 07:00:42 -0400 Date: Wed, 11 Sep 2013 19:00:31 +0800 From: majianpeng To: axboe , viro Cc: linux-fsdevel , LKML Reply-To: majianpeng Subject: [PATCH 1/2] block: Set inode of block_device size to zero when delete gendisk. X-Priority: 3 X-GUID: E072949A-D9E5-4B84-A396-DE2E19640EF8 X-Has-Attach: no X-Mailer: Foxmail 7.0.1.93[cn] Mime-Version: 1.0 Message-ID: <201309111900280892484@gmail.com> Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id r8BB175t004179 When remove gendisk, set the size of inode of block_device to zero. This is mainly let the vfs know disk removed. Signed-off-by: Jianpeng Ma --- block/genhd.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/block/genhd.c b/block/genhd.c index dadf42b..c3a54b4 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -634,6 +634,7 @@ void del_gendisk(struct gendisk *disk) { struct disk_part_iter piter; struct hd_struct *part; + struct block_device *bdev; disk_del_events(disk); @@ -655,6 +656,19 @@ void del_gendisk(struct gendisk *disk) blk_unregister_queue(disk); blk_unregister_region(disk_devt(disk), disk->minors); + /* + * When used buffer-mode on raw blockdevice,the disk removed. + * But the vfs don't know.So tell the vfs size of disk became zero, + * the buffer write can return + */ + bdev = bdget_disk(disk, 0); + if (bdev) { + mutex_lock(&bdev->bd_inode->i_mutex); + i_size_write(bdev->bd_inode, 0); + mutex_unlock(&bdev->bd_inode->i_mutex); + bdput(bdev); + } + part_stat_set_all(&disk->part0, 0); disk->part0.stamp = 0; -- 1.8.4-rc0 {.n++%ݶw{.n+{G{ayʇڙ,jfhz_(階ݢj"mG?&~iOzv^m ?I