[PATCH] btrfs: handle add/remove of sysfs links when devices are added/removed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxx>
---
 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
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux