Messages in this thread |  | | | Date | Thu, 29 Oct 2009 17:28:14 +0100 | | From | Tejun Heo <> | | Subject | Re: [PATCH 2/3] Sysfs: Allow directories to be populated dynamically |
| |
Matthew Wilcox wrote: > On Thu, Oct 29, 2009 at 05:20:00PM +0100, Tejun Heo wrote: >> This will increase the size of struct sysfs_dirent by three pointers >> which is considerable. Bloating the size of sysfs_dirent can waste >> large amount of memory on machines with a lot of disks. > > No it won't. It's in a union with sysfs_inode_attrs which contains a > struct iattr, which is at least 52 bytes.
struct sysfs_dirent { atomic_t s_count; atomic_t s_active; struct sysfs_dirent *s_parent; struct sysfs_dirent *s_sibling; const char *s_name; union { struct sysfs_elem_dir s_dir; struct sysfs_elem_symlink s_symlink; struct sysfs_elem_attr s_attr; struct sysfs_elem_bin_attr s_bin_attr; }; unsigned int s_flags; ino_t s_ino; umode_t s_mode; struct sysfs_inode_attrs *s_iattr; ^^ }; >> The implementation looks quite scary to me. Is this the only way to >> do this? It it because trying to create individual entries for msix >> will end up creating too many sysfs entries? If so, how many are we >> talking about? > > While that's the original motivation, shrinking the amount of memory > taken by sysfs overall is a worthwhile achievement, don't you think?
It feels a bit too convoluted to me. sysfs is already pretty convoluted and adding yet more convolution would require pretty good justification, so I'm curious about the numbers.
Thanks.
-- tejun
|  |