Add buffer head related helper functions
Add buffer head related helper function bh_uptodate_or_lock and bh_submit_read which can be used by file system Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
This commit is contained in:
parent
bb4f397a1a
commit
389d1b083c
44
fs/buffer.c
44
fs/buffer.c
|
@ -3213,6 +3213,50 @@ static int buffer_cpu_notify(struct notifier_block *self,
|
|||
return NOTIFY_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* bh_uptodate_or_lock: Test whether the buffer is uptodate
|
||||
* @bh: struct buffer_head
|
||||
*
|
||||
* Return true if the buffer is up-to-date and false,
|
||||
* with the buffer locked, if not.
|
||||
*/
|
||||
int bh_uptodate_or_lock(struct buffer_head *bh)
|
||||
{
|
||||
if (!buffer_uptodate(bh)) {
|
||||
lock_buffer(bh);
|
||||
if (!buffer_uptodate(bh))
|
||||
return 0;
|
||||
unlock_buffer(bh);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
EXPORT_SYMBOL(bh_uptodate_or_lock);
|
||||
|
||||
/**
|
||||
* bh_submit_read: Submit a locked buffer for reading
|
||||
* @bh: struct buffer_head
|
||||
*
|
||||
* Returns zero on success and -EIO on error.
|
||||
*/
|
||||
int bh_submit_read(struct buffer_head *bh)
|
||||
{
|
||||
BUG_ON(!buffer_locked(bh));
|
||||
|
||||
if (buffer_uptodate(bh)) {
|
||||
unlock_buffer(bh);
|
||||
return 0;
|
||||
}
|
||||
|
||||
get_bh(bh);
|
||||
bh->b_end_io = end_buffer_read_sync;
|
||||
submit_bh(READ, bh);
|
||||
wait_on_buffer(bh);
|
||||
if (buffer_uptodate(bh))
|
||||
return 0;
|
||||
return -EIO;
|
||||
}
|
||||
EXPORT_SYMBOL(bh_submit_read);
|
||||
|
||||
void __init buffer_init(void)
|
||||
{
|
||||
int nrpages;
|
||||
|
|
|
@ -192,6 +192,8 @@ int sync_dirty_buffer(struct buffer_head *bh);
|
|||
int submit_bh(int, struct buffer_head *);
|
||||
void write_boundary_block(struct block_device *bdev,
|
||||
sector_t bblock, unsigned blocksize);
|
||||
int bh_uptodate_or_lock(struct buffer_head *bh);
|
||||
int bh_submit_read(struct buffer_head *bh);
|
||||
|
||||
extern int buffer_heads_over_limit;
|
||||
|
||||
|
|
Loading…
Reference in New Issue