mar-file-system / marfs

MarFS provides a scalable near-POSIX file system by using one or more POSIX file systems as a scalable metadata component and one or more data stores (object, file, etc) as a scalable data component.
Other
96 stars 27 forks source link

version checking in marfs_base.c:str_2_post() - #193

Closed thewacokid closed 7 years ago

thewacokid commented 7 years ago

After digging a bit I found the culprit for our quota system breaking (not accounting for all files). It looks like we updated our version number string in MarFS from "001_004" to "001_006" for the POST xattr. This caused str_2_post to return an error because the MARFS_CONFIG_MINOR variable (which I believe is propagated from the config file) was less than the version listed in the POST xattr. Attempting to set the MarFS version to "1.6" or "1.006" resulted in a config parsing error when instantiating the quota tool (which, in hindsight writing this, probably means I just needed to recompile all of MarFS to pick up the change...). The version currently in the config is "1.0" - perhaps it simply broke whenever we iterated the minor version.

I built a quick hack into the function to return multiple values so I could check if it was simply the version check failing versus a bad parse or some other error. I then detect that version error condition in the quota tool and ignore it. We should just investigate this and ensure things are working as intended.

EDIT: MARFS_CONFIG_MINOR is set in fuse/src/marfs_configuration.h. Dammit.

thewacokid commented 7 years ago

I'm going to revert my hacks. This was because the version of the code compiled for the quota tool was out of sync with the MARFS_CONFIG_MINOR defined in the running code on the filesystem.

Lesson learned - keep the utilities in sync with the running version.