Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drbd: debugfs: add per device data_gen_id

The data generation identifiers used to be exposed via sysfs
at /sys/block/drbdX/drbd/meta_data/data_gen_id (out-of-tree),
for advanced policy scripting.
Bring that information over to debugfs.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>

authored by

Lars Ellenberg and committed by
Philipp Reisner
cc356f85 3d299f48

+22
+22
drivers/block/drbd/drbd_debugfs.c
··· 760 760 return 0; 761 761 } 762 762 763 + static int device_data_gen_id_show(struct seq_file *m, void *ignored) 764 + { 765 + struct drbd_device *device = m->private; 766 + struct drbd_md *md; 767 + enum drbd_uuid_index idx; 768 + 769 + if (!get_ldev_if_state(device, D_FAILED)) 770 + return -ENODEV; 771 + 772 + md = &device->ldev->md; 773 + spin_lock_irq(&md->uuid_lock); 774 + for (idx = UI_CURRENT; idx <= UI_HISTORY_END; idx++) { 775 + seq_printf(m, "0x%016llX\n", md->uuid[idx]); 776 + } 777 + spin_unlock_irq(&md->uuid_lock); 778 + put_ldev(device); 779 + return 0; 780 + } 781 + 763 782 #define drbd_debugfs_device_attr(name) \ 764 783 static int device_ ## name ## _open(struct inode *inode, struct file *file) \ 765 784 { \ ··· 803 784 drbd_debugfs_device_attr(oldest_requests) 804 785 drbd_debugfs_device_attr(act_log_extents) 805 786 drbd_debugfs_device_attr(resync_extents) 787 + drbd_debugfs_device_attr(data_gen_id) 806 788 807 789 void drbd_debugfs_device_add(struct drbd_device *device) 808 790 { ··· 846 826 DCF(oldest_requests); 847 827 DCF(act_log_extents); 848 828 DCF(resync_extents); 829 + DCF(data_gen_id); 830 + #undef DCF 849 831 return; 850 832 851 833 fail: