sys.c (1215B)
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * sys.c 4 * 5 * OCFS2 cluster sysfs interface 6 * 7 * Copyright (C) 2005 Oracle. All rights reserved. 8 */ 9 10#include <linux/kernel.h> 11#include <linux/module.h> 12#include <linux/kobject.h> 13#include <linux/sysfs.h> 14#include <linux/fs.h> 15 16#include "ocfs2_nodemanager.h" 17#include "masklog.h" 18#include "sys.h" 19 20 21static ssize_t version_show(struct kobject *kobj, struct kobj_attribute *attr, 22 char *buf) 23{ 24 return snprintf(buf, PAGE_SIZE, "%u\n", O2NM_API_VERSION); 25} 26static struct kobj_attribute attr_version = 27 __ATTR(interface_revision, S_IRUGO, version_show, NULL); 28 29static struct attribute *o2cb_attrs[] = { 30 &attr_version.attr, 31 NULL, 32}; 33 34static struct attribute_group o2cb_attr_group = { 35 .attrs = o2cb_attrs, 36}; 37 38static struct kset *o2cb_kset; 39 40void o2cb_sys_shutdown(void) 41{ 42 mlog_sys_shutdown(); 43 kset_unregister(o2cb_kset); 44} 45 46int o2cb_sys_init(void) 47{ 48 int ret; 49 50 o2cb_kset = kset_create_and_add("o2cb", NULL, fs_kobj); 51 if (!o2cb_kset) 52 return -ENOMEM; 53 54 ret = sysfs_create_group(&o2cb_kset->kobj, &o2cb_attr_group); 55 if (ret) 56 goto error; 57 58 ret = mlog_sys_init(o2cb_kset); 59 if (ret) 60 goto error; 61 return 0; 62error: 63 kset_unregister(o2cb_kset); 64 return ret; 65}