Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fd0d04ba authored by Oleg Drokin's avatar Oleg Drokin Committed by Greg Kroah-Hartman
Browse files

staging/lustre/llite: Preparation to move /proc/fs/lustre/llite to sysfs



Add necessary infrastructure, add support for mountpoint
registration in /proc/fs/lustre/llite

Signed-off-by: default avatarOleg Drokin <green@linuxhacker.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 8b828445
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -518,6 +518,9 @@ struct ll_sb_info {
	struct rmtacl_ctl_table   ll_rct;
	struct eacl_table	 ll_et;
	__kernel_fsid_t		  ll_fsid;
	struct kobject		 ll_kobj; /* sysfs object */
	struct super_block	*ll_sb; /* struct super_block (for sysfs code)*/
	struct completion	 ll_kobj_unregister;
};

#define LL_DEFAULT_MAX_RW_CHUNK      (32 * 1024 * 1024)
@@ -639,6 +642,7 @@ struct lov_stripe_md;
extern spinlock_t inode_lock;

extern struct proc_dir_entry *proc_lustre_fs_root;
extern struct kset *llite_kset;

static inline struct inode *ll_info2i(struct ll_inode_info *lli)
{
+5 −2
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@

struct kmem_cache *ll_file_data_slab;
struct proc_dir_entry *proc_lustre_fs_root;
struct kset *llite_kset;

static LIST_HEAD(ll_super_blocks);
static DEFINE_SPINLOCK(ll_sb_lock);
@@ -66,7 +67,7 @@ static DEFINE_SPINLOCK(ll_sb_lock);
#define log2(n) ffz(~(n))
#endif

static struct ll_sb_info *ll_init_sbi(void)
static struct ll_sb_info *ll_init_sbi(struct super_block *sb)
{
	struct ll_sb_info *sbi = NULL;
	unsigned long pages;
@@ -134,6 +135,8 @@ static struct ll_sb_info *ll_init_sbi(void)
	atomic_set(&sbi->ll_agl_total, 0);
	sbi->ll_flags |= LL_SBI_AGL_ENABLED;

	sbi->ll_sb = sb;

	return sbi;
}

@@ -919,7 +922,7 @@ int ll_fill_super(struct super_block *sb, struct vfsmount *mnt)
	try_module_get(THIS_MODULE);

	/* client additional sb info */
	lsi->lsi_llsbi = sbi = ll_init_sbi();
	lsi->lsi_llsbi = sbi = ll_init_sbi(sb);
	if (!sbi) {
		module_put(THIS_MODULE);
		kfree(cfg);
+26 −0
Original line number Diff line number Diff line
@@ -872,6 +872,23 @@ static struct lprocfs_vars lprocfs_llite_obd_vars[] = {

#define MAX_STRING_SIZE 128

static struct attribute *llite_attrs[] = {
	NULL,
};

static void llite_sb_release(struct kobject *kobj)
{
	struct ll_sb_info *sbi = container_of(kobj, struct ll_sb_info,
					      ll_kobj);
	complete(&sbi->ll_kobj_unregister);
}

static struct kobj_type llite_ktype = {
	.default_attrs	= llite_attrs,
	.sysfs_ops	= &lustre_sysfs_ops,
	.release	= llite_sb_release,
};

static const struct llite_file_opcode {
	__u32       opcode;
	__u32       type;
@@ -1064,6 +1081,13 @@ int lprocfs_register_mountpoint(struct proc_dir_entry *parent,
	if (err)
		goto out;

	sbi->ll_kobj.kset = llite_kset;
	init_completion(&sbi->ll_kobj_unregister);
	err = kobject_init_and_add(&sbi->ll_kobj, &llite_ktype, NULL,
				   "%s", name);
	if (err)
		goto out;

	/* MDC info */
	obd = class_name2obd(mdc);

@@ -1124,6 +1148,8 @@ void lprocfs_unregister_mountpoint(struct ll_sb_info *sbi)
{
	if (sbi->ll_proc_root) {
		lprocfs_remove(&sbi->ll_proc_root);
		kobject_put(&sbi->ll_kobj);
		wait_for_completion(&sbi->ll_kobj_unregister);
		lprocfs_free_stats(&sbi->ll_ra_stats);
		lprocfs_free_stats(&sbi->ll_stats);
	}
+10 −1
Original line number Diff line number Diff line
@@ -138,6 +138,12 @@ static int __init init_lustre_lite(void)

	proc_lustre_fs_root = entry;

	llite_kset = kset_create_and_add("llite", NULL, lustre_kobj);
	if (!llite_kset) {
		rc = -ENOMEM;
		goto out_proc;
	}

	cfs_get_random_bytes(seed, sizeof(seed));

	/* Nodes with small feet have little entropy. The NID for this
@@ -155,7 +161,7 @@ static int __init init_lustre_lite(void)
	setup_timer(&ll_capa_timer, ll_capa_timer_callback, 0);
	rc = ll_capa_thread_start();
	if (rc != 0)
		goto out_proc;
		goto out_sysfs;

	rc = vvp_global_init();
	if (rc != 0)
@@ -176,6 +182,8 @@ static int __init init_lustre_lite(void)
out_capa:
	del_timer(&ll_capa_timer);
	ll_capa_thread_stop();
out_sysfs:
	kset_unregister(llite_kset);
out_proc:
	lprocfs_remove(&proc_lustre_fs_root);
out_cache:
@@ -201,6 +209,7 @@ static void __exit exit_lustre_lite(void)
	lustre_register_client_process_config(NULL);

	lprocfs_remove(&proc_lustre_fs_root);
	kset_unregister(llite_kset);

	ll_xattr_fini();
	vvp_global_fini();