xfs
[Top] [All Lists]

Re: Cyclic Code?

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: Cyclic Code?
From: Adil Mujeeb <mujeeb.adil@xxxxxxxxx>
Date: Tue, 10 Jan 2012 12:25:59 +0530
Cc: Amit Sahrawat <amit.sahrawat83@xxxxxxxxx>, xfs@xxxxxxxxxxx
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=HiIF8yEjlhWMJkxLbTQiub0Yoo/58wqJj5i0l/hg7Ho=; b=KwLo0j4m6nB7kLeZaL9MDIr2RJwSUXpU9aQO6mt0X5Tdgu45ri/MTXoYejf+N1B5bj NBUmarulg+ts2vs6l9IILep3zJaxeHF16PX3a1O8fb1Sd1TgLv8x967vOBCvwt4AdjTm oJ3c8EgUSN0osKuqz3u1SybSDpGVd1Xsv0nVU=
In-reply-to: <20120109213925.GF4198@dastard>
References: <CANBXnM=Ec4zp-5AR3JY00taUR+W-G6+ZKJKhDj94uhpeVsp2tw@xxxxxxxxxxxxxx> <CADDb1s38ts-NAhzqyt2ZiN8m6mBVzS97uACb0XVKEKrKmV=YJA@xxxxxxxxxxxxxx> <20120109213925.GF4198@dastard>
Hi Dave, Amit,

Thank you for your inputs.

On Tue, Jan 10, 2012 at 3:09 AM, Dave Chinner <david@xxxxxxxxxxxxx> wrote:
>
> On Mon, Jan 09, 2012 at 11:10:30PM +0530, Amit Sahrawat wrote:
> > On Mon, Jan 9, 2012 at 12:22 PM, Adil Mujeeb <mujeeb.adil@xxxxxxxxx> wrote:
> > > Hi list,
> > >
> > > i am new to XFS.
> > >
> > > I was going through XFS code (2.4 based) for study purpose. Its old but
> > > assuming its bit simple as compare to latest one. Moreover the XFS code /
> > > design structure documents available on the internet is 2.4 based.
> > May be if you switch to a version around 2.6.20 nearabout - it will
> > make it easier to understand the code. Prior to that the complete XFS
> > source code seemed like traversing through a lot of macros... I
> > started with 2.6.18 and it was really hard to understand from that
> > version...
>
> I'd recommend starting with the current top of tree code - it is
> much, much cleaner that the code base even from 2.6.20. Remember, 2.6.20
> was released almost 5 years ago (Feb 4 2007), and there's been a
> *lot* of cleanup work done since then....
>
> > > The following code snippet is not clear to me (seems cyclic):
> > >
> > > ---------
> > > ...
> > > ...
> > > #define XFS_IFORK_NEXTENTS(ip,w)        xfs_ifork_nextents(ip,w)
> > > ...
> > > xfs_ifork_nextents(xfs_inode_t *ip, int w)
> > > {
> > >         return XFS_IFORK_NEXTENTS(ip, w);
> > > }
> > I guess you missed something while reading the code.... I tried to
> > look at the repositry.. this is how the code looks...
> > #if XFS_WANT_FUNCS || (XFS_WANT_SPACE && XFSSO_XFS_IFORK_NEXTENTS)
> >  int xfs_ifork_nextents(xfs_inode_t *ip, int w);
> >  #define XFS_IFORK_NEXTENTS(ip,w)        xfs_ifork_nextents(ip,w)
> >  #else
> >  #define XFS_IFORK_NEXTENTS(ip,w)        XFS_CFORK_NEXTENTS(&ip->i_d, w)
> >  #endif
> > ....
> > #define XFS_CFORK_NEXTENTS(dcp,w) \
> >       ((w) == XFS_DATA_FORK ? (dcp)->di_nextents : (dcp)->di_anextents)

Amit, what i understood is XFS_IFORK_NEXTENTS is replaced by
xfs_ifork_nextents(ip,w) call which actually has this macro in the
function body.

> Yup, that XFS_WANT_FUNCS crap was for debugging the macros because
> they were too complex to debug in line. That went long ago.
>
> FYI, macros were very popular in Irix code - desite SGI having an
> awesome compiler, the SGI kernel engineers believed that function
> calls were just too expensive to call and so macros that expanded
> out to 300 lines of code were common. Hence the need to have some
> way of debugging them.
>
> Hell, I know one engineer used to compile the code and then
> disassemble in the debugger on the running machine because that was
> the *simplest way* to work out what code the macros actually
> compiled in. :-O
>
> I'm glad we've got rid of most of the macro-instead-of-function
> usage now...

Thanks for the information.
Is there any code / design document similar to XFS filesystem
structure document available for older versions.

Thanks,
Adil

>
> Cheers,
>
> Dave.
> --
> Dave Chinner
> david@xxxxxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>