This patch makes set_bitmap() to call sync_bitmap() instead rewrite
identical code to do same thing.

Signed-off-by: Wang Nan <[email protected]>
Cc: Atsushi Kumagai <[email protected]>
Cc: [email protected]
Cc: Geng Hui <[email protected]>
---
 makedumpfile.c | 70 ++++++++++++++++++++++++++--------------------------------
 1 file changed, 31 insertions(+), 39 deletions(-)

diff --git a/makedumpfile.c b/makedumpfile.c
index 75092a8..8e6ddce 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -3309,6 +3309,34 @@ initialize_2nd_bitmap(struct dump_bitmap *bitmap)
 }
 
 int
+sync_bitmap(struct dump_bitmap *bitmap)
+{
+       off_t offset;
+       offset = bitmap->offset + BUFSIZE_BITMAP * bitmap->no_block;
+
+       /*
+        * The bitmap buffer is not dirty, and it is not necessary
+        * to write out it.
+        */
+       if (bitmap->no_block < 0)
+               return TRUE;
+
+       if (lseek(bitmap->fd, offset, SEEK_SET) < 0 ) {
+               ERRMSG("Can't seek the bitmap(%s). %s\n",
+                   bitmap->file_name, strerror(errno));
+               return FALSE;
+       }
+       if (write(bitmap->fd, bitmap->buf, BUFSIZE_BITMAP)
+           != BUFSIZE_BITMAP) {
+               ERRMSG("Can't write the bitmap(%s). %s\n",
+                   bitmap->file_name, strerror(errno));
+               return FALSE;
+       }
+       return TRUE;
+}
+
+
+int
 set_bitmap(struct dump_bitmap *bitmap, unsigned long long pfn,
     int val)
 {
@@ -3317,20 +3345,11 @@ set_bitmap(struct dump_bitmap *bitmap, unsigned long 
long pfn,
        old_offset = bitmap->offset + BUFSIZE_BITMAP * bitmap->no_block;
        new_offset = bitmap->offset + BUFSIZE_BITMAP * (pfn / PFN_BUFBITMAP);
 
-       if (0 <= bitmap->no_block && old_offset != new_offset) {
-               if (lseek(bitmap->fd, old_offset, SEEK_SET) < 0 ) {
-                       ERRMSG("Can't seek the bitmap(%s). %s\n",
-                           bitmap->file_name, strerror(errno));
-                       return FALSE;
-               }
-               if (write(bitmap->fd, bitmap->buf, BUFSIZE_BITMAP)
-                   != BUFSIZE_BITMAP) {
-                       ERRMSG("Can't write the bitmap(%s). %s\n",
-                           bitmap->file_name, strerror(errno));
+       if (old_offset != new_offset) {
+               if (sync_bitmap(bitmap)) {
+                       ERRMSG("Can't sync bitmap\n");
                        return FALSE;
                }
-       }
-       if (old_offset != new_offset) {
                if (lseek(bitmap->fd, new_offset, SEEK_SET) < 0 ) {
                        ERRMSG("Can't seek the bitmap(%s). %s\n",
                            bitmap->file_name, strerror(errno));
@@ -3379,33 +3398,6 @@ set_bitmap_cyclic(char *bitmap, unsigned long long pfn, 
int val, struct cycle *c
 }
 
 int
-sync_bitmap(struct dump_bitmap *bitmap)
-{
-       off_t offset;
-       offset = bitmap->offset + BUFSIZE_BITMAP * bitmap->no_block;
-
-       /*
-        * The bitmap buffer is not dirty, and it is not necessary
-        * to write out it.
-        */
-       if (bitmap->no_block < 0)
-               return TRUE;
-
-       if (lseek(bitmap->fd, offset, SEEK_SET) < 0 ) {
-               ERRMSG("Can't seek the bitmap(%s). %s\n",
-                   bitmap->file_name, strerror(errno));
-               return FALSE;
-       }
-       if (write(bitmap->fd, bitmap->buf, BUFSIZE_BITMAP)
-           != BUFSIZE_BITMAP) {
-               ERRMSG("Can't write the bitmap(%s). %s\n",
-                   bitmap->file_name, strerror(errno));
-               return FALSE;
-       }
-       return TRUE;
-}
-
-int
 sync_1st_bitmap(void)
 {
        return sync_bitmap(info->bitmap1);
-- 
1.8.5.5


_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to