[Ocfs2-devel] /etc/mkfs.ocfs2.conf support
Goldwyn Rodrigues
rgoldwyn at gmail.com
Sat Jan 26 22:29:26 PST 2008
On Fri, Jan 25, 2008 at 04:10:15PM -0800, Joel Becker wrote:
> On Wed, Jan 23, 2008 at 03:17:30PM +0530, Goldwyn Rodrigues wrote:
> > Changes to support mkfs.ocfs2.conf
> > Mostly picked from e2fsprogs
>
> Interesting. I didn't even know this existed :-) First thought
> - what version of e2fsprogs is this from? I grabbed 1.40.4, the latest
> on my Debian installation, and its profile.c is very different.
I used 1.40.2, but I don't think the profile.c would be any different in
the two versions.
What I changed from orignal e2fsprogs:
- changed the function prototype to take char *[], instead of
separate name, subname and subsubname, in order to include
a further level of attribute handling for journal
- removed the string and boolean parsing functions. These are
not required now, but might be required in the future.
- removed the debug set, perhaps it could be included as a part
of testing.
- the original profile in e2fsprogs has been picked from
kerberos, and was split in multiple files. The old comments
are still present. I removed them.
>
> > diff --git a/mkfs.ocfs2/Makefile b/mkfs.ocfs2/Makefile
> > index 00d9d22..7c3c0f5 100644
> > --- a/mkfs.ocfs2/Makefile
> > +++ b/mkfs.ocfs2/Makefile
> > @@ -28,7 +28,7 @@ LIBO2DLM_DEPS = $(TOPDIR)/libo2dlm/libo2dlm.a
> > INCLUDES = -I$(TOPDIR)/include -I.
> > DEFINES = -DVERSION=\"$(VERSION)\"
> >
> > -CFILES = mkfs.c check.c
> > +CFILES = prof_err.c profile.c mkfs.c check.c
> > HFILES = mkfs.h
> >
> > OBJS = $(subst .c,.o,$(CFILES))
>
> You can't put prof_err.c in CFILES - that will include it in
> DIST_FILES, which we don't want. Conversely, you need to add
> prof_err.et to DIST_FILES. I suggest
>
> - Add prof_err.et to DIST_FILES
> - Add prof_err.o to OBJS
>
> This will force prof_err.o to be included in the mkfs.ocfs2
> dependencies. .c.o rules will cause prof_err.c to be required, and this
> will trigger the compile_et of prof_err.et. Meanwhile, having
> prof_err.et in DIST_FILES makes sure it's part of the tarball.
> See libocfs2/Makefile for how we do this. You might also want
> to add HEADERS_GEN like you see in there so that you can declare:
>
> HFILES = mkfs.h
> HFILES_GEN = prof_err.h
>
> $(OBJS): $(HFILES) $(HFILES_GEN)
>
> This triggers a build dependency on prof_err.h for all objects.
Ok, I understood this.
>
> > + /* Read from the configuration file and set the values */
> > + blocksize = get_bytesize_from_profile(ft_str,"block-size" , blocksize);
> > + cluster_size = get_bytesize_from_profile(ft_str, "cluster-size", cluster_size);
> > + journal_size_in_bytes = get_journalsize_from_profile(ft_str, journal_size_in_bytes);
> > + blockscount = get_bytesize_from_profile(ft_str, "blocks-count", blockscount);
> > + initial_slots = get_uint_from_profile(ft_str, "number-of-nodes", initial_slots);
>
> Here, you are relying on multiple things:
>
> 1) If the value is nonzero, nothing will happen. Why hide this above in
> get_*_from_profile()? Why not say
>
> if (!blocksize)
> blocksize = get_bytesize_from_profile(ft_str, "block-size");
Yes. This is the way it is done in e2fsprogs as well, but I thought of
folding even the condition inside the function. I'll do it the way you
suggested to avoid an additional function call.
>
> 2) if ft_str is NULL, only the [defaults] section is honored. This is
> not obvious without reading profile.c, so one could think that it
> might select the first fs_type in the [fs_type] section. Put a
> comment in the get_*_from_profile() functions, right before you set
> names[1] = category, stating that NULL means ignored.
> 3) Setting these here will cause fill_defaults() to skip them. If
> get_*_from_profile() returns 0 (unset), fill_defaults() will fill
> them. This is the correct behavior, but it strikes me as non-obvious
> and could use a comment somewhere.
I missed on the comments. will do it.
Thanks for the review, I shall re-post the patches soon.
--
Goldwyn
More information about the Ocfs2-devel
mailing list