Re: [PATCH 3/5] partitions/msdos: enumerate also AIX LVM partitions

From: Philippe De Muyter
Date: Tue May 21 2013 - 03:16:14 EST


Hi Andrew,

On Mon, May 20, 2013 at 04:41:52PM -0700, Andrew Morton wrote:
> On Mon, 29 Apr 2013 23:18:31 +0200 Philippe De Muyter <phdm@xxxxxxxxx> wrote:
>
> > Graft AIX partitions enumeration in partitions/msdos.c
> >
> > There is already a AIX disks detection logic in msdos.c. When an
> > AIX disk has been found, and if configured to, call the aix partitions
> > recognizer. This avoids removal of AIX disks protection from msdos.c,
> > avoids code duplication, and ensures that AIX partitions enumeration
> > is called before plain msdos partitions enumeration.
> >
> > ...
> >
> > --- a/block/partitions/msdos.c
> > +++ b/block/partitions/msdos.c
> > @@ -23,6 +23,7 @@
> > #include "check.h"
> > #include "msdos.h"
> > #include "efi.h"
> > +#include "aix.h"
> >
> > /*
> > * Many architectures don't like unaligned accesses, while
> > @@ -462,8 +463,12 @@ int msdos_partition(struct parsed_partitions *state)
> > */
> > if (aix_magic_present(state, data)) {
> > put_dev_sector(sect);
> > +#ifdef CONFIG_AIX_PARTITION
> > + return aix_partition(state);
> > +#else
> > strlcat(state->pp_buf, " [AIX]", PAGE_SIZE);
> > return 0;
> > +#endif
> > }
> >
> > if (!msdos_magic_present(data + 510)) {
>
> hm, what's going on here.
>
> Why does partitions/msdos.c know about AIX at all? Is there something
> special about AIX partitioning which ties it in with msdos?

Well, PowerPC BIOS (PPCBUG or Open Firmware) mimics PC BIOS and requires the
first block of the disk to describe the boot partition the same way that
PC BIOS does. Remember, the aim of IBM, Motorola and Apple was to replace
the PC's by PowerPC's :). So, an AIX disk can erroneously be recognized as
a dos disk with two partitions (two times the same boot partition). That's
the reason why there is already code in block/partitions/msdos.c to avoid
that.
>
> Now that we have AIX partitioning support, can we simply remove the AIX
> code from msdos.c? So msdos.c will say "I don't know what that is",
> and we fall through to aix.c which says "that's mine!"?

I didn't want to remove the AIX protection from msdos.c, for the likely case
that someone would compile the kernel without AIX_PARTITION support, And, as
a part of the AIX detection was already done by 'aix_magic_present', I did
not want to duplicate it. I can move the AIX detection logic to aix.c and
still keep the AIX protection for msdos.c with some more #ifdef's if you prefer.

Philippe
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/