Messages in this thread | | | Date | Sat, 17 Feb 2001 13:24:38 -0500 | From | Douglas Gilbert <> | Subject | Re: Flushing buffer and page cache |
| |
James Bottomley wrote:
> > Is it possible to flush all entries in the buffer cache corresponding > > to a single block device (i.e. simply drop them if they aren't dirty, > > or write them to disk and drop them after this if they are dirty)? > > Yes, just send the BLKFLSBUF ioctl to the device this syncs the device then > removes all the buffers from the cache. We use it as a tool to move a SAN > device around a cluster, which is similar to what you want to do.
Last time this question was raised, someone mentioned a little utility called flushb . Here is its source:
/* * flushb.c --- This routine flushes the disk buffers for a disk */
/* * modified August 2000 by Juri Haberland * juri.haberland@innominate.de */
#include <stdio.h> #include <fcntl.h> #include <linux/fs.h>
#define NOARGS void
const char *progname;
static void usage(NOARGS) { fprintf(stderr, "Usage: %s disk\n", progname); exit(1); }
int main(int argc, char **argv) { int fd;
progname = argv[0]; if (argc != 2) usage();
fd = open(argv[1], O_RDONLY, 0); if (fd < 0) { perror("open"); exit(1); } /* * Note: to reread the partition table, use the ioctl * BLKRRPART instead of BLKFSLBUF. */ if (ioctl(fd, BLKFLSBUF, 0) < 0) { perror("ioctl BLKFLSBUF"); exit(1); } return 0; } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |