Commit a58e88bf authored by Coly Li's avatar Coly Li Committed by Jens Axboe
Browse files

bcache: share register sysfs with async register



Previously the experimental async registration uses a separate sysfs
file register_async. Now the async registration code seems working well
for a while, we can do furtuher testing with it now.

This patch changes the async bcache registration shares the same sysfs
file /sys/fs/bcache/register (and register_quiet). Async registration
will be default behavior if BCACHE_ASYNC_REGISTRATION is set in kernel
configure. By default, BCACHE_ASYNC_REGISTRATION is not configured yet.

Signed-off-by: default avatarColy Li <colyli@suse.de>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent dc4d137e
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -2448,7 +2448,6 @@ static ssize_t bch_pending_bdevs_cleanup(struct kobject *k,

kobj_attribute_write(register,		register_bcache);
kobj_attribute_write(register_quiet,	register_bcache);
kobj_attribute_write(register_async,	register_bcache);
kobj_attribute_write(pendings_cleanup,	bch_pending_bdevs_cleanup);

static bool bch_is_open_backing(struct block_device *bdev)
@@ -2571,6 +2570,11 @@ static ssize_t register_bcache(struct kobject *k, struct kobj_attribute *attr,
	struct cache_sb_disk *sb_disk;
	struct block_device *bdev;
	ssize_t ret;
	bool async_registration = false;

#ifdef CONFIG_BCACHE_ASYNC_REGISTRATION
	async_registration = true;
#endif

	ret = -EBUSY;
	err = "failed to reference bcache module";
@@ -2624,7 +2628,8 @@ static ssize_t register_bcache(struct kobject *k, struct kobj_attribute *attr,
		goto out_blkdev_put;

	err = "failed to register device";
	if (attr == &ksysfs_register_async) {

	if (async_registration) {
		/* register in asynchronous way */
		struct async_reg_args *args =
			kzalloc(sizeof(struct async_reg_args), GFP_KERNEL);
@@ -2887,9 +2892,6 @@ static int __init bcache_init(void)
	static const struct attribute *files[] = {
		&ksysfs_register.attr,
		&ksysfs_register_quiet.attr,
#ifdef CONFIG_BCACHE_ASYNC_REGISTRATION
		&ksysfs_register_async.attr,
#endif
		&ksysfs_pendings_cleanup.attr,
		NULL
	};