From patchwork Mon Nov 25 19:46:49 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dennis Zhou X-Patchwork-Id: 11260791 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 86D5D14C0 for ; Mon, 25 Nov 2019 19:47:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 681AA2075C for ; Mon, 25 Nov 2019 19:47:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574711240; bh=PcesYbd0MUerW5thvZj0y28cayLZfNiAcaK+j8f+PTU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:In-Reply-To: References:List-ID:From; b=qjnEb2foFLdnE2h2tn4yfKkF0uv+KrTndBYHLG4eGty3ZKswIP7bPrQ5t826rTgeO ewCgmgbiEzRqFFjp+9Xh4SSWmILrduFrChXfMD7EFLUuh31Lz1jSKq07Fgrp99Nn2Q TXcwXRI4wsSv9QUBi7giB5ggxc89kxJUZG+xuWAA= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727126AbfKYTrT (ORCPT ); Mon, 25 Nov 2019 14:47:19 -0500 Received: from mail-qt1-f193.google.com ([209.85.160.193]:32803 "EHLO mail-qt1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727121AbfKYTrS (ORCPT ); Mon, 25 Nov 2019 14:47:18 -0500 Received: by mail-qt1-f193.google.com with SMTP id y39so18607746qty.0 for ; Mon, 25 Nov 2019 11:47:17 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=1hqK1ji8GJMZyNJzHdTRClKXccRDS+c6leUcVy6PfBU=; b=DjYlAMxF+cyJpAkqwDkkh10JtBA+3OIq78Z6zqG9OZkEfcQRPsBH5wgWBvjBA4ncVH N5m4Grpf/2UVepSwLgyFpno87JHQfDkBM46EbUj2kuujm3slRpYW6gM2ffpkAipXybts LXF4oUJzFY5GEx+gtTEVku0KPzjZzystBx4fEq5eafyKAL+kOgM5xO98VRDXph/805LH 3r703neoaHqvNc8VHIfW+K+FadokrRp7TcHk+OhGyLCgddolhPTqKW+Eej85kOdJSK2I bAyjFKfwNmhDTBMGIUBsZkVJ24OwXtAvmH/RlCupWCuybvrK8pwkwkTsfkg7m4rm98hB 9kag== X-Gm-Message-State: APjAAAUB4V/w46yszVYy48+KJL5cE+FADYnPW56XjF7ZCO16s0cgH4R5 qzl78hyNHOLGI0VkZ2QOr5Y= X-Google-Smtp-Source: APXvYqzaNYra6F8J6jAvAIYuY9PscG7F5VPsNhrL1AYGyNLs0O4Hzi+slGF1WiH4atNfsfD6HX1oAQ== X-Received: by 2002:ac8:424e:: with SMTP id r14mr12814754qtm.193.1574711237547; Mon, 25 Nov 2019 11:47:17 -0800 (PST) Received: from dennisz-mbp.thefacebook.com ([163.114.130.128]) by smtp.gmail.com with ESMTPSA id o13sm4481033qto.96.2019.11.25.11.47.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 25 Nov 2019 11:47:16 -0800 (PST) From: Dennis Zhou To: David Sterba , Chris Mason , Josef Bacik , Omar Sandoval Cc: kernel-team@fb.com, linux-btrfs@vger.kernel.org, Dennis Zhou Subject: [PATCH 09/22] btrfs: make UUID/debug have its own kobject Date: Mon, 25 Nov 2019 14:46:49 -0500 Message-Id: <994dc62a7da0b6867b06c76f5b6b009bca0bac95.1574709825.git.dennis@kernel.org> X-Mailer: git-send-email 2.13.5 In-Reply-To: References: In-Reply-To: References: Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org Btrfs only allowed attributes to be exposed in debug/. Let's let other groups be created by making debug its own kobject. This also makes the per-fs debug options separate from the global features mount attributes. This seems to be needed as sysfs_create_files() requires const struct attribute * while sysfs_create_group() can take struct attribute *. This seems nicer as per file system, you'll probably use to_fs_info(). Signed-off-by: Dennis Zhou Reviewed-by: Josef Bacik --- fs/btrfs/ctree.h | 4 ++++ fs/btrfs/sysfs.c | 20 ++++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 68340d65a8b6..0c5cd5e6c2c5 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h @@ -927,6 +927,10 @@ struct btrfs_fs_info { spinlock_t ref_verify_lock; struct rb_root block_tree; #endif + +#ifdef CONFIG_BTRFS_DEBUG + struct kobject *debug_kobj; +#endif }; static inline struct btrfs_fs_info *btrfs_sb(struct super_block *sb) diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c index 58d089354bc1..beae5c8146fb 100644 --- a/fs/btrfs/sysfs.c +++ b/fs/btrfs/sysfs.c @@ -344,6 +344,10 @@ static const struct attribute_group btrfs_static_feature_attr_group = { * /sys/fs/btrfs/debug - applies to module or all filesystems * /sys/fs/btrfs/UUID - applies only to the given filesystem */ +static const struct attribute *btrfs_debug_mount_attrs[] = { + NULL, +}; + static struct attribute *btrfs_debug_feature_attrs[] = { NULL }; @@ -772,8 +776,12 @@ void btrfs_sysfs_remove_mounted(struct btrfs_fs_info *fs_info) kobject_put(fs_info->space_info_kobj); } #ifdef CONFIG_BTRFS_DEBUG - sysfs_remove_group(&fs_info->fs_devices->fsid_kobj, - &btrfs_debug_feature_attr_group); + if (fs_info->debug_kobj) { + sysfs_remove_files(fs_info->debug_kobj, + btrfs_debug_mount_attrs); + kobject_del(fs_info->debug_kobj); + kobject_put(fs_info->debug_kobj); + } #endif addrm_unknown_feature_attrs(fs_info, false); sysfs_remove_group(&fs_info->fs_devices->fsid_kobj, &btrfs_feature_attr_group); @@ -1115,8 +1123,12 @@ int btrfs_sysfs_add_mounted(struct btrfs_fs_info *fs_info) goto failure; #ifdef CONFIG_BTRFS_DEBUG - error = sysfs_create_group(fsid_kobj, - &btrfs_debug_feature_attr_group); + fs_info->debug_kobj = kobject_create_and_add("debug", fsid_kobj); + if (!fs_info->debug_kobj) + goto failure; + + error = sysfs_create_files(fs_info->debug_kobj, + btrfs_debug_mount_attrs); if (error) goto failure; #endif