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 /include/linux/buffer_head.h | |
| 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 'include/linux/buffer_head.h')
| -rw-r--r-- | include/linux/buffer_head.h | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index 26d71a5fb742..22d3ac8efc6b 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -128,9 +128,6 @@ BUFFER_FNS(Boundary, boundary) }) #define page_has_buffers(page) PagePrivate(page) -#define invalidate_buffers(dev) __invalidate_buffers((dev), 0) - - /* * Declarations */ @@ -159,7 +156,6 @@ void unmap_underlying_metadata(struct block_device *bdev, sector_t block); void mark_buffer_async_read(struct buffer_head *bh); void mark_buffer_async_write(struct buffer_head *bh); void invalidate_bdev(struct block_device *, int); -void __invalidate_buffers(kdev_t dev, int); int sync_blockdev(struct block_device *bdev); void __wait_on_buffer(struct buffer_head *); wait_queue_head_t *bh_waitq_head(struct buffer_head *bh); |
