super.c (95d002e0a34cb0f238abb39987f9980f325d8332) super.c (792732d9852c0e4505aceff4631ea2168fd02480)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * bcache setup/teardown code, and some metadata io - read a superblock and
4 * figure out what to do with it.
5 *
6 * Copyright 2010, 2011 Kent Overstreet <kent.overstreet@gmail.com>
7 * Copyright 2012 Google, Inc.
8 */

--- 892 unchanged lines hidden (view full) ---

901 wait_for_kthread_stop();
902 return 0;
903}
904
905
906void bch_cached_dev_run(struct cached_dev *dc)
907{
908 struct bcache_device *d = &dc->disk;
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * bcache setup/teardown code, and some metadata io - read a superblock and
4 * figure out what to do with it.
5 *
6 * Copyright 2010, 2011 Kent Overstreet <kent.overstreet@gmail.com>
7 * Copyright 2012 Google, Inc.
8 */

--- 892 unchanged lines hidden (view full) ---

901 wait_for_kthread_stop();
902 return 0;
903}
904
905
906void bch_cached_dev_run(struct cached_dev *dc)
907{
908 struct bcache_device *d = &dc->disk;
909 char buf[SB_LABEL_SIZE + 1];
909 char *buf = kmemdup_nul(dc->sb.label, SB_LABEL_SIZE, GFP_KERNEL);
910 char *env[] = {
911 "DRIVER=bcache",
912 kasprintf(GFP_KERNEL, "CACHED_UUID=%pU", dc->sb.uuid),
910 char *env[] = {
911 "DRIVER=bcache",
912 kasprintf(GFP_KERNEL, "CACHED_UUID=%pU", dc->sb.uuid),
913 kasprintf(GFP_KERNEL, "CACHED_LABEL=%s", buf ? : ""),
913 NULL,
914 NULL,
914 NULL,
915 };
916
915 };
916
917 memcpy(buf, dc->sb.label, SB_LABEL_SIZE);
918 buf[SB_LABEL_SIZE] = '\0';
919 env[2] = kasprintf(GFP_KERNEL, "CACHED_LABEL=%s", buf);
920
921 if (atomic_xchg(&dc->running, 1)) {
922 kfree(env[1]);
923 kfree(env[2]);
917 if (atomic_xchg(&dc->running, 1)) {
918 kfree(env[1]);
919 kfree(env[2]);
920 kfree(buf);
924 return;
925 }
926
927 if (!d->c &&
928 BDEV_STATE(&dc->sb) != BDEV_STATE_NONE) {
929 struct closure cl;
930
931 closure_init_stack(&cl);

--- 7 unchanged lines hidden (view full) ---

939 bd_link_disk_holder(dc->bdev, dc->disk.disk);
940 /*
941 * won't show up in the uevent file, use udevadm monitor -e instead
942 * only class / kset properties are persistent
943 */
944 kobject_uevent_env(&disk_to_dev(d->disk)->kobj, KOBJ_CHANGE, env);
945 kfree(env[1]);
946 kfree(env[2]);
921 return;
922 }
923
924 if (!d->c &&
925 BDEV_STATE(&dc->sb) != BDEV_STATE_NONE) {
926 struct closure cl;
927
928 closure_init_stack(&cl);

--- 7 unchanged lines hidden (view full) ---

936 bd_link_disk_holder(dc->bdev, dc->disk.disk);
937 /*
938 * won't show up in the uevent file, use udevadm monitor -e instead
939 * only class / kset properties are persistent
940 */
941 kobject_uevent_env(&disk_to_dev(d->disk)->kobj, KOBJ_CHANGE, env);
942 kfree(env[1]);
943 kfree(env[2]);
944 kfree(buf);
947
948 if (sysfs_create_link(&d->kobj, &disk_to_dev(d->disk)->kobj, "dev") ||
949 sysfs_create_link(&disk_to_dev(d->disk)->kobj, &d->kobj, "bcache"))
950 pr_debug("error creating sysfs link");
951
952 dc->status_update_thread = kthread_run(cached_dev_status_update,
953 dc, "bcache_status_update");
954 if (IS_ERR(dc->status_update_thread)) {

--- 1558 unchanged lines hidden ---
945
946 if (sysfs_create_link(&d->kobj, &disk_to_dev(d->disk)->kobj, "dev") ||
947 sysfs_create_link(&disk_to_dev(d->disk)->kobj, &d->kobj, "bcache"))
948 pr_debug("error creating sysfs link");
949
950 dc->status_update_thread = kthread_run(cached_dev_status_update,
951 dc, "bcache_status_update");
952 if (IS_ERR(dc->status_update_thread)) {

--- 1558 unchanged lines hidden ---