From: H. Peter Anvin Date: Wed, 16 Jun 2010 00:24:32 +0000 (-0700) Subject: installer: fix use of FIEMAP X-Git-Tag: syslinux-4.00-pre49^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=76d5e47c0ddec4f5d792d8753056ab46e5fc9e8c;p=profile%2Fivi%2Fsyslinux.git installer: fix use of FIEMAP Correct the implementation of block mapping using FIEMAP (as opposed to FIBMAP). Signed-off-by: H. Peter Anvin --- diff --git a/libinstaller/syslxcom.c b/libinstaller/syslxcom.c index 013b69a..85b3f6e 100644 --- a/libinstaller/syslxcom.c +++ b/libinstaller/syslxcom.c @@ -209,7 +209,7 @@ static int sectmap_fie(int fd, sector_t *sectors, int nsectors) fm->fm_flags = FIEMAP_FLAG_SYNC; fm->fm_extent_count = nsectors; - if (ioctl(fd, FS_IOC_FIEMAP, &fm)) + if (ioctl(fd, FS_IOC_FIEMAP, fm)) return -1; memset(sectors, 0, nsectors * sizeof *sectors); @@ -225,7 +225,7 @@ static int sectmap_fie(int fd, sector_t *sectors, int nsectors) if (fe->fe_flags & FIEMAP_EXTENT_LAST) { /* If this is the *final* extent, pad the length */ fe->fe_length = (fe->fe_length + SECTOR_SIZE - 1) - & (SECTOR_SIZE - 1); + & ~(SECTOR_SIZE - 1); } if ((fe->fe_logical | fe->fe_physical| fe->fe_length) &