diff options
| author | Alexander Viro <viro@parcelfarce.linux.theplanet.co.uk> | 2003-04-24 08:39:06 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2003-04-24 08:39:06 -0700 |
| commit | 91b58109a339748d992cb767e145c19722756653 (patch) | |
| tree | 7a02b8525e330f58aca6aa009a0ca9fbb40b9ce2 /kernel | |
| parent | 45065e1014b07ff09f279b01828bfa5d3a6eeb17 (diff) | |
[PATCH] invalidate_device()/check_disk_change() fixes
* bogus calls of invalidate_buffers() gone from floppy_open()
* invalidate_buffers() killed.
* new helper - __invalidate_device(bdev, do_sync). invalidate_device()
is calling it.
* fixed races between floppy_open()/floppy_open and
floppy_open()/set_geometry():
a) floppy_open()/floppy_release() is done under a semaphore. That
closes the races between simultaneous open() on /dev/fd0foo and /dev/fd0bar.
b) pointer to struct block_device is kept as long as floppy is
opened (per-drive, non-NULL when number of openers is non-zero, does not
contribute to block_device refcount).
c) set_geometry() grabs the same semaphore and invalidates the
devices directly instead of messing with setting fake "it had changed"
and calling __check_disk_change().
* __check_disk_change() killed - no remaining callers
* full_check_disk_change() killed - ditto.
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/ksyms.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/kernel/ksyms.c b/kernel/ksyms.c index 5d31affa36ce..0902e7813348 100644 --- a/kernel/ksyms.c +++ b/kernel/ksyms.c @@ -186,11 +186,10 @@ EXPORT_SYMBOL(filp_close); EXPORT_SYMBOL(put_filp); EXPORT_SYMBOL(files_lock); EXPORT_SYMBOL(check_disk_change); -EXPORT_SYMBOL(__check_disk_change); -EXPORT_SYMBOL(__invalidate_buffers); EXPORT_SYMBOL(invalidate_bdev); EXPORT_SYMBOL(invalidate_inodes); EXPORT_SYMBOL(invalidate_device); +EXPORT_SYMBOL(__invalidate_device); EXPORT_SYMBOL(invalidate_inode_pages); EXPORT_SYMBOL_GPL(invalidate_inode_pages2); EXPORT_SYMBOL(truncate_inode_pages); |
