On 08/03/2018 12:52, Alex Kiernan wrote: > Extract write path of flash_io() into a separate function. This patch > should be a functional no-op. > > Signed-off-by: Alex Kiernan <alex.kier...@gmail.com> > --- > > tools/env/fw_env.c | 98 > +++++++++++++++++++++++++++++------------------------- > 1 file changed, 53 insertions(+), 45 deletions(-) > > diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c > index 0e3e343..2df3504 100644 > --- a/tools/env/fw_env.c > +++ b/tools/env/fw_env.c > @@ -1229,68 +1229,76 @@ static int flash_read (int fd) > return 0; > } > > -static int flash_io (int mode) > +static int flash_io_write (int fd_current) > { > - int fd_current, fd_target, rc, dev_target; > + int fd_target, rc, dev_target; > > - /* dev_current: fd_current, erase_current */ > - fd_current = open (DEVNAME (dev_current), mode); > - if (fd_current < 0) { > - fprintf (stderr, > - "Can't open %s: %s\n", > - DEVNAME (dev_current), strerror (errno)); > - return -1; > + if (HaveRedundEnv) { > + /* switch to next partition for writing */ > + dev_target = !dev_current; > + /* dev_target: fd_target, erase_target */ > + fd_target = open (DEVNAME (dev_target), O_RDWR); > + if (fd_target < 0) { > + fprintf (stderr, > + "Can't open %s: %s\n", > + DEVNAME (dev_target), > + strerror (errno)); > + rc = -1; > + goto exit; > + } > + } else { > + dev_target = dev_current; > + fd_target = fd_current; > } > > - if (mode == O_RDWR) { > - if (HaveRedundEnv) { > - /* switch to next partition for writing */ > - dev_target = !dev_current; > - /* dev_target: fd_target, erase_target */ > - fd_target = open (DEVNAME (dev_target), mode); > - if (fd_target < 0) { > - fprintf (stderr, > - "Can't open %s: %s\n", > - DEVNAME (dev_target), > - strerror (errno)); > - rc = -1; > - goto exit; > - } > - } else { > - dev_target = dev_current; > - fd_target = fd_current; > - } > + rc = flash_write (fd_current, fd_target, dev_target); > > - rc = flash_write (fd_current, fd_target, dev_target); > + if (fsync(fd_current) && > + !(errno == EINVAL || errno == EROFS)) { > + fprintf (stderr, > + "fsync failed on %s: %s\n", > + DEVNAME (dev_current), strerror (errno)); > + } > > - if (fsync(fd_current) && > + if (HaveRedundEnv) { > + if (fsync(fd_target) && > !(errno == EINVAL || errno == EROFS)) { > fprintf (stderr, > "fsync failed on %s: %s\n", > DEVNAME (dev_current), strerror (errno)); > } > > - if (HaveRedundEnv) { > - if (fsync(fd_target) && > - !(errno == EINVAL || errno == EROFS)) { > - fprintf (stderr, > - "fsync failed on %s: %s\n", > - DEVNAME (dev_current), strerror > (errno)); > - } > - > - if (close (fd_target)) { > - fprintf (stderr, > - "I/O error on %s: %s\n", > - DEVNAME (dev_target), > - strerror (errno)); > - rc = -1; > - } > + if (close (fd_target)) { > + fprintf (stderr, > + "I/O error on %s: %s\n", > + DEVNAME (dev_target), > + strerror (errno)); > + rc = -1; > } > + } > +exit: > + return rc; > +} > + > +static int flash_io (int mode) > +{ > + int fd_current, rc; > + > + /* dev_current: fd_current, erase_current */ > + fd_current = open (DEVNAME (dev_current), mode); > + if (fd_current < 0) { > + fprintf (stderr, > + "Can't open %s: %s\n", > + DEVNAME (dev_current), strerror (errno)); > + return -1; > + } > + > + if (mode == O_RDWR) { > + rc = flash_io_write(fd_current); > } else { > rc = flash_read (fd_current); > } > > -exit: > if (close (fd_current)) { > fprintf (stderr, > "I/O error on %s: %s\n", >
Reviewed-by: Stefano Babic <sba...@denx.de> Best regards, Stefano Babic -- ===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de ===================================================================== _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot