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 --- |