Messages in this thread | | | Date | Sun, 16 Jan 2000 23:54:51 -0500 (EST) | From | Alexander Viro <> | Subject | Re: [Patch] Cleanup struct gendisk registration, 2.3.40-pre1 |
| |
On Sun, 16 Jan 2000, Linus Torvalds wrote:
> > > On Sun, 16 Jan 2000, Alexander Viro wrote: > > > > Erm... You know a way to fsck root without mounting it? > > [ Note: I said _fdisk_, not fsck. Completely different things. Fsck is > another alias issue, though, so I'll give you an answer anyway, even > though this is not the same issue we were discussing ] > > It doesn't matter. > > You CANNOT synchronize that case anyway, and you should just realize that > and not even try too hard. > > Hint: the buffer cache is the _least_ of your worries. You have the inode > cache and dcache already populated, and whatever you do to the buffer > cache will have absolutely no impact on them at all. > > To be strictly safe, we should just do a complete unmount/remount after > the fsck, not just what we do now (ie a "remount" without the umount). It > hasn't ever bitten us in real use, though.
We _can't_ do complete umount. init and libc alone will not let us do it (come to think of that, umount(8) may be a problem too ;-).
ObInvalidatingStuff: it's not as bad as it sounds. Once we go for pagecache on devices we will be in much better position: a) dropping the pages will be needed on BDEV_FILE -> BDEV_FS. Not too often thing, aside of fsck/mount. And mount after fsck really should not bother much with metadata - I agree with you here. b) the only case when we need to flush buffers will be umount(). Notice that it affects only metadata - data is in page cache, so until it is not flushed we can't drop inodes, thus can't umount. c) BDEV_FILE -> BDEV_FILE is not a problem - no invalidation is needed. However, we can't destroy block_device until all pages are gone. BFD - memory pressure will get rid of them. All we need is shrink_bdcache() that would go through the list of block_devices with bd_count==0 and drop those who have no pages. Notice that dissociating the block_device from driver still can be done on blkdev_put() - no harm will be done. That takes care of floppy and friends.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |