Linux filesystem configuration infrastructure
Hi, I have a simple filesystem that I did for learning purpose https://github.com/psankar/simplefs Now, I would like to add a few settings to my filesystem (such as the number of blocks that should be allocated in an extent by default, maximum fragmentation score after which defrag should be automatically handled etc.) I would like to have the ability to not just set these settings, but export them to a file and restore these settings later. Is there some kind of a settings infrastructure code that is available in the linux kernel or should I be developing something specific to my filesystem ? I would also like to have some kind of validation system also as part of the settings interface. For example: If a setting can accept only ints, trying to set a string to that should be disabled, min and max values (range) for values of settings, etc. I googled and found that sysctl interface and the sysfs interfaces seem to be doing something similar. But I was not sure which to pick as the wikipedia pages were not as elaborate as I would like. So my question is: Is there a settings infrastructure provided by the linux kernel and is any filesystem (or any other kernel components) that make use of such a settings infrastrucutre ? Thanks. -- Sankar P http://psankar.blogspot.com
On Mon, Aug 04, 2014 at 10:20:35AM +0530, Sankar P wrote:
Hi,
I have a simple filesystem that I did for learning purpose https://github.com/psankar/simplefs
Now, I would like to add a few settings to my filesystem (such as the number of blocks that should be allocated in an extent by default, maximum fragmentation score after which defrag should be automatically handled etc.) I would like to have the ability to not just set these settings, but export them to a file and restore these settings later. Is there some kind of a settings infrastructure code that is available in the linux kernel
configfs, but usually a filesystem doesn't need anything so complex, just use the "normal" mount option way and you should be fine.
I would also like to have some kind of validation system also as part of the settings interface. For example: If a setting can accept only ints, trying to set a string to that should be disabled, min and max values (range) for values of settings, etc.
Again, configfs is good for "complex" configurations. Good luck, greg k-h
Hello, On Mon 04-08-14 10:20:35, Sankar P wrote:
I have a simple filesystem that I did for learning purpose https://github.com/psankar/simplefs
Now, I would like to add a few settings to my filesystem (such as the number of blocks that should be allocated in an extent by default, maximum fragmentation score after which defrag should be automatically handled etc.) I would like to have the ability to not just set these settings, but export them to a file and restore these settings later. Is there some kind of a settings infrastructure code that is available in the linux kernel or should I be developing something specific to my filesystem ?
I would also like to have some kind of validation system also as part of the settings interface. For example: If a setting can accept only ints, trying to set a string to that should be disabled, min and max values (range) for values of settings, etc.
I googled and found that sysctl interface and the sysfs interfaces seem to be doing something similar. But I was not sure which to pick as the wikipedia pages were not as elaborate as I would like.
So my question is: Is there a settings infrastructure provided by the linux kernel and is any filesystem (or any other kernel components) that make use of such a settings infrastrucutre ? Yes, sysfs or debugfs is the right interface. You can have a look at e.g. ext4 which handles quite some sysfs attributes in fs/ext4/super.c (look at ext4_ktype and structures and functions referenced from there).
Honza -- Jan Kara <jack@suse.cz> SUSE Labs, CR
On Mon, 04 Aug 2014 10:20:35 +0530, Sankar P said:
Now, I would like to add a few settings to my filesystem (such as the number of blocks that should be allocated in an extent by default, maximum fragmentation score after which defrag should be automatically handled etc.) I would like to have the ability to not just set these settings, but export them to a file and restore these settings later.
See the source code for tune2fs, which sets the parameters for extN file systems. The most noteworthy point is that the settings are saved *on the filesystem*, so that it can be mounted and handled correctly from the start, without waiting for further configuration (consider - what happens if the "default number of blocks per extent" is 8, and you try to read the first 9 blocks of an extent written when the setting was a non-default 16, before you've configured the setting)
participants (4)
-
Greg KH -
Jan Kara -
Sankar P -
Valdis.Kletnieks@vt.edu