|
void | init_buffer (struct buffer_head *bh, bh_end_io_t *handler, void *private) |
|
| EXPORT_SYMBOL (init_buffer) |
|
void | __lock_buffer (struct buffer_head *bh) |
|
| EXPORT_SYMBOL (__lock_buffer) |
|
void | unlock_buffer (struct buffer_head *bh) |
|
| EXPORT_SYMBOL (unlock_buffer) |
|
void | __wait_on_buffer (struct buffer_head *bh) |
|
| EXPORT_SYMBOL (__wait_on_buffer) |
|
void | end_buffer_read_sync (struct buffer_head *bh, int uptodate) |
|
| EXPORT_SYMBOL (end_buffer_read_sync) |
|
void | end_buffer_write_sync (struct buffer_head *bh, int uptodate) |
|
| EXPORT_SYMBOL (end_buffer_write_sync) |
|
void | end_buffer_async_write (struct buffer_head *bh, int uptodate) |
|
| EXPORT_SYMBOL (end_buffer_async_write) |
|
void | mark_buffer_async_write (struct buffer_head *bh) |
|
| EXPORT_SYMBOL (mark_buffer_async_write) |
|
int | inode_has_buffers (struct inode *inode) |
|
void | emergency_thaw_all (void) |
|
int | sync_mapping_buffers (struct address_space *mapping) |
|
| EXPORT_SYMBOL (sync_mapping_buffers) |
|
void | write_boundary_block (struct block_device *bdev, sector_t bblock, unsigned blocksize) |
|
void | mark_buffer_dirty_inode (struct buffer_head *bh, struct inode *inode) |
|
| EXPORT_SYMBOL (mark_buffer_dirty_inode) |
|
int | __set_page_dirty_buffers (struct page *page) |
|
| EXPORT_SYMBOL (__set_page_dirty_buffers) |
|
void | invalidate_inode_buffers (struct inode *inode) |
|
| EXPORT_SYMBOL (invalidate_inode_buffers) |
|
int | remove_inode_buffers (struct inode *inode) |
|
struct buffer_head * | alloc_page_buffers (struct page *page, unsigned long size, int retry) |
|
| EXPORT_SYMBOL_GPL (alloc_page_buffers) |
|
void | mark_buffer_dirty (struct buffer_head *bh) |
|
| EXPORT_SYMBOL (mark_buffer_dirty) |
|
void | __brelse (struct buffer_head *buf) |
|
| EXPORT_SYMBOL (__brelse) |
|
void | __bforget (struct buffer_head *bh) |
|
| EXPORT_SYMBOL (__bforget) |
|
struct buffer_head * | __find_get_block (struct block_device *bdev, sector_t block, unsigned size) |
|
| EXPORT_SYMBOL (__find_get_block) |
|
struct buffer_head * | __getblk (struct block_device *bdev, sector_t block, unsigned size) |
|
| EXPORT_SYMBOL (__getblk) |
|
void | __breadahead (struct block_device *bdev, sector_t block, unsigned size) |
|
| EXPORT_SYMBOL (__breadahead) |
|
struct buffer_head * | __bread (struct block_device *bdev, sector_t block, unsigned size) |
|
| EXPORT_SYMBOL (__bread) |
|
void | invalidate_bh_lrus (void) |
|
| EXPORT_SYMBOL_GPL (invalidate_bh_lrus) |
|
void | set_bh_page (struct buffer_head *bh, struct page *page, unsigned long offset) |
|
| EXPORT_SYMBOL (set_bh_page) |
|
void | block_invalidatepage (struct page *page, unsigned long offset) |
|
| EXPORT_SYMBOL (block_invalidatepage) |
|
void | create_empty_buffers (struct page *page, unsigned long blocksize, unsigned long b_state) |
|
| EXPORT_SYMBOL (create_empty_buffers) |
|
void | unmap_underlying_metadata (struct block_device *bdev, sector_t block) |
|
| EXPORT_SYMBOL (unmap_underlying_metadata) |
|
void | page_zero_new_buffers (struct page *page, unsigned from, unsigned to) |
|
| EXPORT_SYMBOL (page_zero_new_buffers) |
|
int | __block_write_begin (struct page *page, loff_t pos, unsigned len, get_block_t *get_block) |
|
| EXPORT_SYMBOL (__block_write_begin) |
|
int | block_write_begin (struct address_space *mapping, loff_t pos, unsigned len, unsigned flags, struct page **pagep, get_block_t *get_block) |
|
| EXPORT_SYMBOL (block_write_begin) |
|
int | block_write_end (struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned copied, struct page *page, void *fsdata) |
|
| EXPORT_SYMBOL (block_write_end) |
|
int | generic_write_end (struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned copied, struct page *page, void *fsdata) |
|
| EXPORT_SYMBOL (generic_write_end) |
|
int | block_is_partially_uptodate (struct page *page, read_descriptor_t *desc, unsigned long from) |
|
| EXPORT_SYMBOL (block_is_partially_uptodate) |
|
int | block_read_full_page (struct page *page, get_block_t *get_block) |
|
| EXPORT_SYMBOL (block_read_full_page) |
|
int | generic_cont_expand_simple (struct inode *inode, loff_t size) |
|
| EXPORT_SYMBOL (generic_cont_expand_simple) |
|
int | cont_write_begin (struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned flags, struct page **pagep, void **fsdata, get_block_t *get_block, loff_t *bytes) |
|
| EXPORT_SYMBOL (cont_write_begin) |
|
int | block_commit_write (struct page *page, unsigned from, unsigned to) |
|
| EXPORT_SYMBOL (block_commit_write) |
|
int | __block_page_mkwrite (struct vm_area_struct *vma, struct vm_fault *vmf, get_block_t get_block) |
|
| EXPORT_SYMBOL (__block_page_mkwrite) |
|
int | block_page_mkwrite (struct vm_area_struct *vma, struct vm_fault *vmf, get_block_t get_block) |
|
| EXPORT_SYMBOL (block_page_mkwrite) |
|
int | nobh_write_begin (struct address_space *mapping, loff_t pos, unsigned len, unsigned flags, struct page **pagep, void **fsdata, get_block_t *get_block) |
|
| EXPORT_SYMBOL (nobh_write_begin) |
|
int | nobh_write_end (struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned copied, struct page *page, void *fsdata) |
|
| EXPORT_SYMBOL (nobh_write_end) |
|
int | nobh_writepage (struct page *page, get_block_t *get_block, struct writeback_control *wbc) |
|
| EXPORT_SYMBOL (nobh_writepage) |
|
int | nobh_truncate_page (struct address_space *mapping, loff_t from, get_block_t *get_block) |
|
| EXPORT_SYMBOL (nobh_truncate_page) |
|
int | block_truncate_page (struct address_space *mapping, loff_t from, get_block_t *get_block) |
|
| EXPORT_SYMBOL (block_truncate_page) |
|
int | block_write_full_page_endio (struct page *page, get_block_t *get_block, struct writeback_control *wbc, bh_end_io_t *handler) |
|
| EXPORT_SYMBOL (block_write_full_page_endio) |
|
int | block_write_full_page (struct page *page, get_block_t *get_block, struct writeback_control *wbc) |
|
| EXPORT_SYMBOL (block_write_full_page) |
|
sector_t | generic_block_bmap (struct address_space *mapping, sector_t block, get_block_t *get_block) |
|
| EXPORT_SYMBOL (generic_block_bmap) |
|
int | submit_bh (int rw, struct buffer_head *bh) |
|
| EXPORT_SYMBOL (submit_bh) |
|
void | ll_rw_block (int rw, int nr, struct buffer_head *bhs[]) |
|
| EXPORT_SYMBOL (ll_rw_block) |
|
void | write_dirty_buffer (struct buffer_head *bh, int rw) |
|
| EXPORT_SYMBOL (write_dirty_buffer) |
|
int | __sync_dirty_buffer (struct buffer_head *bh, int rw) |
|
| EXPORT_SYMBOL (__sync_dirty_buffer) |
|
int | sync_dirty_buffer (struct buffer_head *bh) |
|
| EXPORT_SYMBOL (sync_dirty_buffer) |
|
int | try_to_free_buffers (struct page *page) |
|
| EXPORT_SYMBOL (try_to_free_buffers) |
|
| SYSCALL_DEFINE2 (bdflush, int, func, long, data) |
|
struct buffer_head * | alloc_buffer_head (gfp_t gfp_flags) |
|
| EXPORT_SYMBOL (alloc_buffer_head) |
|
void | free_buffer_head (struct buffer_head *bh) |
|
| EXPORT_SYMBOL (free_buffer_head) |
|
int | bh_uptodate_or_lock (struct buffer_head *bh) |
|
| EXPORT_SYMBOL (bh_uptodate_or_lock) |
|
int | bh_submit_read (struct buffer_head *bh) |
|
| EXPORT_SYMBOL (bh_submit_read) |
|
void __init | buffer_init (void) |
|
ll_rw_block: low-level access to block devices (DEPRECATED) : whether to READ or WRITE or maybe READA (readahead) : number of &struct buffer_heads in the array : array of pointers to &struct buffer_head
ll_rw_block() takes an array of pointers to &struct buffer_heads, and requests an I/O operation on them, either a READ or a WRITE. The third READA option is described in the documentation for generic_make_request() which ll_rw_block() calls.
This function drops any buffer that it cannot get a lock on (with the BH_Lock state bit), any buffer that appears to be clean when doing a write request, and any buffer that appears to be up-to-date when doing read request. Further it marks as clean buffers that are processed for writing (the buffer cache won't assume that they are actually clean until the buffer gets unlocked).
ll_rw_block sets b_end_io to simple completion handler that marks the buffer up-to-date (if approriate), unlocks the buffer and wakes any waiters.
All of the buffers must be for the same device, and must also be a multiple of the current approved size for the device.
Definition at line 3020 of file buffer.c.