public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* duplicate code in dir2
@ 2011-06-22 15:24 Eric Sandeen
  2011-06-22 15:25 ` Eric Sandeen
  2011-06-23 10:53 ` Christoph Hellwig
  0 siblings, 2 replies; 4+ messages in thread
From: Eric Sandeen @ 2011-06-22 15:24 UTC (permalink / raw)
  To: xfs-oss

I was poking around with various code metrics, and found a fair bit of duplication in dir2 code (using "duplo").

Haven't really thought about how it might be factorable, but thought it might be interesting to share.

-Eric

/src/git/linux-2.6/fs/xfs/xfs_dir2_node.c(251)
/src/git/linux-2.6/fs/xfs/xfs_dir2_leaf.c(440)
                if (index < be16_to_cpu(leaf->hdr.count))
                        memmove(lep + 1, lep,
                                (be16_to_cpu(leaf->hdr.count) - index) * sizeof(*lep));
                lfloglow = index;
                lfloghigh = be16_to_cpu(leaf->hdr.count);
                be16_add_cpu(&leaf->hdr.count, 1);
        else {
                if (compact == 0) {
                        for (lowstale = index - 1;
                             lowstale >= 0 &&
                                be32_to_cpu(leaf->ents[lowstale].address) !=
                                XFS_DIR2_NULL_DATAPTR;
                             lowstale--)
                                continue;
                        for (highstale = index;
                             highstale < be16_to_cpu(leaf->hdr.count) &&
                                be32_to_cpu(leaf->ents[highstale].address) !=
                                XFS_DIR2_NULL_DATAPTR &&
                                (lowstale < 0 ||
                                 index - lowstale - 1 >= highstale - index);
                             highstale++)
                                continue;
                if (lowstale >= 0 &&
                    (highstale == be16_to_cpu(leaf->hdr.count) ||
                     index - lowstale - 1 < highstale - index)) {

/src/git/linux-2.6/fs/xfs/xfs_dir2_node.c(300)
/src/git/linux-2.6/fs/xfs/xfs_dir2_leaf.c(499)
                        if (index - lowstale - 1 > 0)
                                memmove(&leaf->ents[lowstale],
                                        &leaf->ents[lowstale + 1],
                                        (index - lowstale - 1) * sizeof(*lep));
                        lep = &leaf->ents[index - 1];
                        lfloglow = MIN(lowstale, lfloglow);
                        lfloghigh = MAX(index - 1, lfloghigh);
                else {

/src/git/linux-2.6/fs/xfs/xfs_dir2_node.c(316)
/src/git/linux-2.6/fs/xfs/xfs_dir2_leaf.c(518)
                        if (highstale - index > 0)
                                memmove(&leaf->ents[index + 1],
                                        &leaf->ents[index],
                                        (highstale - index) * sizeof(*lep));
                        lep = &leaf->ents[index];
                        lfloglow = MIN(index, lfloglow);
                        lfloghigh = MAX(highstale, lfloghigh);
                be16_add_cpu(&leaf->hdr.stale, -1);
        lep->hashval = cpu_to_be32(args->hashval);

/src/git/linux-2.6/fs/xfs/xfs_dir2_node.c(582)
/src/git/linux-2.6/fs/xfs/xfs_dir2_leaf.c(1349)
        for (lep = &leaf->ents[index]; index < be16_to_cpu(leaf->hdr.count) &&
                                be32_to_cpu(lep->hashval) == args->hashval;
                                lep++, index++) {
                if (be32_to_cpu(lep->address) == XFS_DIR2_NULL_DATAPTR)
                        continue;
                newdb = xfs_dir2_dataptr_to_db(mp, be32_to_cpu(lep->address));
                if (newdb != curdb) {

/src/git/linux-2.6/fs/xfs/xfs_dir2_node.c(442)
/src/git/linux-2.6/fs/xfs/xfs_dir2_leaf.c(1349)
        for (lep = &leaf->ents[index]; index < be16_to_cpu(leaf->hdr.count) &&
                                be32_to_cpu(lep->hashval) == args->hashval;
                                lep++, index++) {
                if (be32_to_cpu(lep->address) == XFS_DIR2_NULL_DATAPTR)
                        continue;
                newdb = xfs_dir2_dataptr_to_db(mp, be32_to_cpu(lep->address));
                if (newdb != curdb) {


_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-06-23 11:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-22 15:24 duplicate code in dir2 Eric Sandeen
2011-06-22 15:25 ` Eric Sandeen
2011-06-23 11:03   ` Christoph Hellwig
2011-06-23 10:53 ` Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox