super.c (279afbad4e54acbd61bf88a54a73af3bbfdeb5dd) super.c (a25c32bedeff3573b53572b87bcafe10ec5b75a9)
1/*
2 * bcache setup/teardown code, and some metadata io - read a superblock and
3 * figure out what to do with it.
4 *
5 * Copyright 2010, 2011 Kent Overstreet <kent.overstreet@gmail.com>
6 * Copyright 2012 Google, Inc.
7 */
8

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

820 sectors += bdev_sectors(dc->bdev);
821
822 c->cached_dev_sectors = sectors;
823}
824
825void bch_cached_dev_run(struct cached_dev *dc)
826{
827 struct bcache_device *d = &dc->disk;
1/*
2 * bcache setup/teardown code, and some metadata io - read a superblock and
3 * figure out what to do with it.
4 *
5 * Copyright 2010, 2011 Kent Overstreet <kent.overstreet@gmail.com>
6 * Copyright 2012 Google, Inc.
7 */
8

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

820 sectors += bdev_sectors(dc->bdev);
821
822 c->cached_dev_sectors = sectors;
823}
824
825void bch_cached_dev_run(struct cached_dev *dc)
826{
827 struct bcache_device *d = &dc->disk;
828 char *env[] = {
829 "DRIVER=bcache",
830 kasprintf(GFP_KERNEL, "CACHED_UUID=%pU", dc->sb.uuid),
831 NULL
832 };
828
829 if (atomic_xchg(&dc->running, 1))
830 return;
831
832 if (!d->c &&
833 BDEV_STATE(&dc->sb) != BDEV_STATE_NONE) {
834 struct closure cl;
835 closure_init_stack(&cl);
836
837 SET_BDEV_STATE(&dc->sb, BDEV_STATE_STALE);
838 bch_write_bdev_super(dc, &cl);
839 closure_sync(&cl);
840 }
841
842 add_disk(d->disk);
843 bd_link_disk_holder(dc->bdev, dc->disk.disk);
833
834 if (atomic_xchg(&dc->running, 1))
835 return;
836
837 if (!d->c &&
838 BDEV_STATE(&dc->sb) != BDEV_STATE_NONE) {
839 struct closure cl;
840 closure_init_stack(&cl);
841
842 SET_BDEV_STATE(&dc->sb, BDEV_STATE_STALE);
843 bch_write_bdev_super(dc, &cl);
844 closure_sync(&cl);
845 }
846
847 add_disk(d->disk);
848 bd_link_disk_holder(dc->bdev, dc->disk.disk);
844#if 0
845 char *env[] = { "SYMLINK=label" , NULL };
849 /* won't show up in the uevent file, use udevadm monitor -e instead
850 * only class / kset properties are persistent */
846 kobject_uevent_env(&disk_to_dev(d->disk)->kobj, KOBJ_CHANGE, env);
851 kobject_uevent_env(&disk_to_dev(d->disk)->kobj, KOBJ_CHANGE, env);
847#endif
852 kfree(env[1]);
853
848 if (sysfs_create_link(&d->kobj, &disk_to_dev(d->disk)->kobj, "dev") ||
849 sysfs_create_link(&disk_to_dev(d->disk)->kobj, &d->kobj, "bcache"))
850 pr_debug("error creating sysfs link");
851}
852
853static void cached_dev_detach_finish(struct work_struct *w)
854{
855 struct cached_dev *dc = container_of(w, struct cached_dev, detach);

--- 1167 unchanged lines hidden ---
854 if (sysfs_create_link(&d->kobj, &disk_to_dev(d->disk)->kobj, "dev") ||
855 sysfs_create_link(&disk_to_dev(d->disk)->kobj, &d->kobj, "bcache"))
856 pr_debug("error creating sysfs link");
857}
858
859static void cached_dev_detach_finish(struct work_struct *w)
860{
861 struct cached_dev *dc = container_of(w, struct cached_dev, detach);

--- 1167 unchanged lines hidden ---