On 08/13/12 08:07, Jeff Liu wrote:
helper routine to lookup data or hole offset from page cache for unwritten
extents.
Signed-off-by: Jie Liu<jeff.liu@xxxxxxxxxx>
---
fs/xfs/xfs_file.c | 213 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 213 insertions(+), 0 deletions(-)
+STATIC bool
+xfs_find_get_desired_pgoff(
+ struct inode *inode,
+ struct xfs_bmbt_irec *map,
+ unsigned int type,
+ loff_t *offset)
+{
...
+ for (i = 0; i< nr_pages; i++) {
+ struct page *page = pvec.pages[i];
+ loff_t b_offset;
+
+ /*
+ * Page index is out of range, searching done.
+ * If the current offset is not reaches the end
+ * of the specified search range, there should
+ * be a hole between them.
+ */
+ if (page->index> end) {
Shouldn't this sample of the index also be locked?
+ if (type == HOLE_OFF&& lastoff< endoff) {
+ *offset = lastoff;
+ found = true;
+ }
+ goto out;
+ }
+
+ lock_page(page);
--Mark.
|