linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] btrfs: handle add/remove of sysfs links when devices are added/removed
@ 2014-05-23 20:07 Jeff Mahoney
  2014-05-26  9:51 ` Anand Jain
  0 siblings, 1 reply; 2+ messages in thread
From: Jeff Mahoney @ 2014-05-23 20:07 UTC (permalink / raw)
  To: linux-btrfs, David Sterba


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 <jeffm@suse.com>
---
 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);

-- 
Jeff Mahoney
SUSE Labs

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-05-26  9:48 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-23 20:07 [PATCH] btrfs: handle add/remove of sysfs links when devices are added/removed Jeff Mahoney
2014-05-26  9:51 ` Anand Jain

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).