On Sat, Oct 27, 2012 at 07:23:36PM +0200, Davidlohr Bueso wrote: > We were writing only 1 byte in LBA0, and GPT requires dealing with an entire > sector. This bug wasn't affecting when dealing with already existing devices > with GPT as we weren't writing an important part of the first sector, thus > leaving it unchanged. Also use write_all() wrapper from all-io.h > > Signed-off-by: Davidlohr Bueso <dave@xxxxxxx> Acked-by: Petr Uzel <petr.uzel@xxxxxxx> > --- > fdisks/gpt.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/fdisks/gpt.c b/fdisks/gpt.c > index 40cadb1..48397f3 100644 > --- a/fdisks/gpt.c > +++ b/fdisks/gpt.c > @@ -44,6 +44,7 @@ > #include "blkdev.h" > #include "bitops.h" > #include "strutils.h" > +#include "all-io.h" > > #define GPT_HEADER_SIGNATURE 0x5452415020494645LL /* EFI PART */ > #define GPT_HEADER_REVISION_V1_02 0x00010200 > @@ -1057,8 +1058,10 @@ static int gpt_write_pmbr(struct fdisk_context *cxt) > if (offset != lseek(cxt->dev_fd, offset, SEEK_SET)) > goto fail; > > - if (1 == write(cxt->dev_fd, pmbr, 1)) > - return 0; > + /* pMBR covers the first sector (LBA) of the disk */ > + if (write_all(cxt->dev_fd, pmbr, cxt->sector_size)) > + goto fail; > + return 0; > fail: > return -errno; > } > -- > 1.7.9.5 > > > > Petr -- Petr Uzel IRC: ptr_uzl @ freenode
Attachment:
pgpTlQlTOBm5k.pgp
Description: PGP signature