Skip to content

RFC Backing Store for sysfs

Maneesh Soni lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest6 patches 26 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/6sysfs-kobject.patchinclude/linux/kobject.h lib/kobject.c+84 -14 replies
2/6sysfs-mount.patchfs/super.c fs/sysfs/mount.c init/do_mounts.c+12 -202 replies
3/6sysfs-file.patchfs/sysfs/bin.c fs/sysfs/file.c+36 -490 replies
4/6sysfs-symlink.patchfs/sysfs/symlink.c+29 -120 replies
5/6sysfs-attr_group.patchfs/sysfs/group.c+16 -300 replies
6/6sysfs-dir.patchfs/sysfs/dir.c fs/sysfs/inode.c fs/sysfs/sysfs.h +1 more+475 -500 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [RFC 0/6] Backing Store for sysfs

Hi,

The following patch set(mailed separately) provides a prototype for a backing store mechanism for sysfs. Currently sysfs pins all its dentries and inodes in memory there by wasting kernel lowmem even when it is not mounted.

With this patch set we create sysfs dentry whenever it is required like other real filesystems and, age and free it as per the dcache rules. We now save significant amount of Lowmem by avoiding un-necessary pinning. The following numbers were on a 2-way system with 6 disks and 2 NICs with about 1028 dentries. The numbers are just indicative as they are system wide collected from /proc and are not exclusively for sysfs.

				2.6.0-test6		With patches.

Right after system is booted
---------------------------
dentry_cache (active) 2343 1315
inode_cache (active) 1058 30
LowFree 875096 KB 875900 KB

After mounting sysfs
-------------------
dentry_cache (active) 2350 1321
inode_cache (active) 1058 31
LowFree 875096 KB 875836 KB

After "find /sys"
-----------------
dentry_cache (active) 2520 2544
inode_cache (active) 1058 1050
LowFree 875032 KB 874748 KB

After un-mounting sysfs
-----------------------
dentry_cache (active) 2363 1319
inode_cache (active) 1058 30
LowFree 875032 KB 875836 KB

The main idea is not create the dentry in sysfs_create_xxx calls but create the dentry when it is first lookup. We now have lookup() inode_operation, open and close file_operations for sysfs directory inodes.

The backing store is based on the kobjects which are always there in memory. sysfs lookup is based on hierarchy of kobjects. As the current kobject infrastructure donot provide any means to traverse the kobject's children or siblings, two-way hierarchy lookup was not possible. For this new fields are added to kobject structure. This ended up increasing the size of kobject from 52 bytes to 108 bytes but saving one dentry and inode per kobject.

The details of the patches are in the following mails. For testing please apply all the patches as they are splitted just for ease of review.

Please send me comments on the approach, implementation, missed things and suggestions to improve them.

Thanks,
Maneesh

Signature · 6 lines
Maneesh Soni
Linux Technology Center, 
IBM Software Lab, Bangalore, India
email: [email protected]
Phone: 91-80-5044999 Fax: 91-80-5268553
T/L : 9243696