[PATCH] makedumpfile: code cleanup: set_bitmap

Atsushi Kumagai kumagai-atsushi at mxc.nes.nec.co.jp
Mon Apr 21 00:33:47 PDT 2014


Hello Wang,

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

I found a simple mistake.

>@@ -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;
> 		}

sync_bitmap() returns TRUE(1) when it succeeds, so this check is wrong.


Thanks
Atsushi Kumagai

>-	}
>-	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




More information about the kexec mailing list