/* Warning: even if it returns true, this does *not* guarantee that * the block is stored in our inode metadata cache. * * This can be called under lock_buffer() */ int ocfs2_buffer_uptodate(struct inode *inode, struct buffer_head *bh) { /* Doesn't matter if the bh is in our cache or not -- if it's * not marked uptodate then we know it can't have correct * data. */ if (!buffer_uptodate(bh)) return 0; /* OCFS2 does not allow multiple nodes to be changing the same * block at the same time. */ if (buffer_jbd(bh)) return 1; /* Ok, locally the buffer is marked as up to date, now search * our cache to see if we can trust that. */ return ocfs2_buffer_cached(OCFS2_I(inode), bh); }
/* * Determine whether a buffer is currently out on a read-ahead request. * ip_io_sem should be held to serialize submitters with the logic here. */ int ocfs2_buffer_read_ahead(struct inode *inode, struct buffer_head *bh) { return buffer_locked(bh) && ocfs2_buffer_cached(OCFS2_I(inode), bh); }
/* * Determine whether a buffer is currently out on a read-ahead request. * ci_io_sem should be held to serialize submitters with the logic here. */ int ocfs2_buffer_read_ahead(struct ocfs2_caching_info *ci, struct buffer_head *bh) { return buffer_locked(bh) && ocfs2_buffer_cached(ci, bh); }