From patchwork Fri May 23 20:07:39 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Mahoney X-Patchwork-Id: 4235771 Return-Path: X-Original-To: patchwork-linux-btrfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 995C1BF90B for ; Fri, 23 May 2014 20:07:47 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id D6297203AE for ; Fri, 23 May 2014 20:07:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F376220351 for ; Fri, 23 May 2014 20:07:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751311AbaEWUHm (ORCPT ); Fri, 23 May 2014 16:07:42 -0400 Received: from cantor2.suse.de ([195.135.220.15]:37637 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750985AbaEWUHm (ORCPT ); Fri, 23 May 2014 16:07:42 -0400 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 04CDFAC77 for ; Fri, 23 May 2014 20:07:41 +0000 (UTC) Message-ID: <537FAA8B.3060402@suse.com> Date: Fri, 23 May 2014 16:07:39 -0400 From: Jeff Mahoney User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.5.0 MIME-Version: 1.0 To: linux-btrfs , David Sterba Subject: [PATCH] btrfs: handle add/remove of sysfs links when devices are added/removed X-Enigmail-Version: 1.6 Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP btrfs currently publishes device membership via sysfs based on the devices present when the file system is mounted. That publishing is not updated when devices are added or removed while mounted. This patch handles those events. Signed-off-by: Jeff Mahoney --- fs/btrfs/volumes.c | 11 +++++++++++ 1 file changed, 11 insertions(+) --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -1704,6 +1704,9 @@ int btrfs_rm_device(struct btrfs_root *r ret = 0; + sysfs_remove_link(root->fs_info->device_dir_kobj, + part_to_dev(bdev->bd_part)->kobj.name); + /* Notify udev that device has changed */ if (bdev) btrfs_kobject_uevent(bdev, KOBJ_CHANGE); @@ -2038,6 +2041,12 @@ int btrfs_init_new_device(struct btrfs_r goto error; } + ret = sysfs_create_link(root->fs_info->device_dir_kobj, + &part_to_dev(bdev->bd_part)->kobj, + part_to_dev(bdev->bd_part)->kobj.name); + if (ret) + goto error; + lock_chunks(root); q = bdev_get_queue(bdev); @@ -2152,6 +2161,8 @@ error_trans: unlock_chunks(root); btrfs_end_transaction(trans, root); rcu_string_free(device->name); + sysfs_remove_link(root->fs_info->device_dir_kobj, + part_to_dev(bdev->bd_part)->kobj.name); kfree(device); error: blkdev_put(bdev, FMODE_EXCL);