From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933218AbcBBP1W (ORCPT ); Tue, 2 Feb 2016 10:27:22 -0500 Received: from barbershop.grep.be ([89.106.240.122]:32851 "EHLO barbershop.grep.be" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932304AbcBBP1Q (ORCPT ); Tue, 2 Feb 2016 10:27:16 -0500 Date: Tue, 2 Feb 2016 16:27:00 +0100 From: Wouter Verhelst To: Markus Pargmann , nbd-general , lkml Subject: [PATCH v2] nbd: Issue a uevent when disconnecting Message-ID: <20160202152700.GA7562@grep.be> References: <1453566230-5786-1-git-send-email-w@uter.be> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1453566230-5786-1-git-send-email-w@uter.be> X-Speed: Gates' Law: Every 18 months, the speed of software halves. Organization: none User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There already is a uevent by default when closing a device upon connect of the device. However, the same isn't true on disconnect. This makes it hard for userspace to keep track of whether a device is connected, since we are notified when the connection is created, but not when it is removed again. Explicitly issue a "change" uevent to remedy. [v2: incorporate feedback from udev maintainer and make sure that we issue a uevent upon connect as well as disconnect, rather than connect only] Signed-off-by: Wouter Verhelst --- drivers/block/nbd.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index e4c5cc1..04d9563 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -417,6 +417,8 @@ static int nbd_thread_recv(struct nbd_device *nbd) spin_unlock_irqrestore(&nbd->tasks_lock, flags); ret = device_create_file(disk_to_dev(nbd->disk), &pid_attr); + kobject_uevent(&disk_to_dev(nbd->disk)->kobj, KOBJ_CHANGE); + if (ret) { dev_err(disk_to_dev(nbd->disk), "device_create_file failed!\n"); @@ -438,6 +440,7 @@ static int nbd_thread_recv(struct nbd_device *nbd) } device_remove_file(disk_to_dev(nbd->disk), &pid_attr); + kobject_uevent(&disk_to_dev(nbd->disk)->kobj, KOBJ_CHANGE); spin_lock_irqsave(&nbd->tasks_lock, flags); nbd->task_recv = NULL; -- 2.7.0