Skip to content

Commit

Permalink
Staging: ramzswap: Flush block device before reset
Browse files Browse the repository at this point in the history
Make sure we flush block device before freeing all metadata
during reset ioctl.

Signed-off-by: Nitin Gupta <ngupta@vflar.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Nitin Gupta authored and Greg Kroah-Hartman committed Mar 4, 2010
1 parent 6a90772 commit 7eef753
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions drivers/staging/ramzswap/ramzswap_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -1000,6 +1000,9 @@ static void reset_device(struct ramzswap *rzs)
unsigned entries_per_page;
unsigned long num_table_pages, entry = 0;

/* Do not accept any new I/O request */
rzs->init_done = 0;

if (rzs->backing_swap && !rzs->num_extents)
is_backing_blkdev = 1;

Expand Down Expand Up @@ -1073,9 +1076,6 @@ static void reset_device(struct ramzswap *rzs)

rzs->disksize = 0;
rzs->memlimit = 0;

/* Back to uninitialized state */
rzs->init_done = 0;
}

static int ramzswap_ioctl_init_device(struct ramzswap *rzs)
Expand Down Expand Up @@ -1276,6 +1276,11 @@ static int ramzswap_ioctl(struct block_device *bdev, fmode_t mode,
ret = -EBUSY;
goto out;
}

/* Make sure all pending I/O is finished */
if (bdev)
fsync_bdev(bdev);

ret = ramzswap_ioctl_reset_device(rzs);
break;

Expand Down

0 comments on commit 7eef753

Please sign in to comment.