From: katao <ka...@xiaomi.com>

The args of wanted_total_sectors is calculated based
on the DEFAULT_SECTOR_SIZE(512Bytes).get_device_info(i)
may be reset dev_sector_size, we should reset the number
of wanted_total_sectors.

This bug was reported to Google Issue Tracker.
Link: https://issuetracker.google.com/issues/76407663

Signed-off-by: katao <ka...@xiaomi.com>
Signed-off-by: Jaegeuk Kim <jaeg...@google.com>
---
 lib/libf2fs.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/lib/libf2fs.c b/lib/libf2fs.c
index 0c684d5..5f11796 100644
--- a/lib/libf2fs.c
+++ b/lib/libf2fs.c
@@ -799,8 +799,15 @@ int get_device_info(int i)
 #ifdef BLKSSZGET
                if (ioctl(fd, BLKSSZGET, &sector_size) < 0)
                        MSG(0, "\tError: Using the default sector size\n");
-               else if (dev->sector_size < sector_size)
+               else if (dev->sector_size < sector_size){
+                       /*
+                        * wanted_total_sectors need to be reset by new
+                        * sector_size.
+                        */
+                       c.wanted_total_sectors = (c.wanted_total_sectors *
+                                               dev->sector_size) / sector_size;
                        dev->sector_size = sector_size;
+               }
 #endif
 #ifdef BLKGETSIZE64
                if (ioctl(fd, BLKGETSIZE64, &dev->total_sectors) < 0) {
-- 
2.15.0.531.g2ccb3012c9-goog


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to