static int gfs2_readpage(struct file *file, struct page *page) { struct gfs2_inode *ip = GFS2_I(page->mapping->host); struct gfs2_sbd *sdp = GFS2_SB(page->mapping->host); struct gfs2_file *gf = NULL; struct gfs2_holder gh; int error; int do_unlock = 0; if (likely(file != &gfs2_internal_file_sentinel)) { if (file) { gf = file->private_data; if (test_bit(GFF_EXLOCK, &gf->f_flags)) /* gfs2_sharewrite_nopage has grabbed the ip->i_gl already */ goto skip_lock; } gfs2_holder_init(ip->i_gl, LM_ST_SHARED, GL_ATIME|LM_FLAG_TRY_1CB, &gh); do_unlock = 1; error = gfs2_glock_nq_atime(&gh); if (unlikely(error)) goto out_unlock; } skip_lock: if (gfs2_is_stuffed(ip)) { error = stuffed_readpage(ip, page); unlock_page(page); } else error = mpage_readpage(page, gfs2_get_block); if (unlikely(test_bit(SDF_SHUTDOWN, &sdp->sd_flags))) error = -EIO; if (do_unlock) { gfs2_glock_dq_m(1, &gh); gfs2_holder_uninit(&gh); } out: return error; out_unlock: unlock_page(page); if (error == GLR_TRYFAILED) { error = AOP_TRUNCATED_PAGE; yield(); } if (do_unlock) gfs2_holder_uninit(&gh); goto out; }
static int __gfs2_readpage(void *file, struct page *page) { struct gfs2_inode *ip = GFS2_I(page->mapping->host); struct gfs2_sbd *sdp = GFS2_SB(page->mapping->host); int error; if (gfs2_is_stuffed(ip)) { error = stuffed_readpage(ip, page); unlock_page(page); } else { error = mpage_readpage(page, gfs2_block_map); } if (unlikely(test_bit(SDF_SHUTDOWN, &sdp->sd_flags))) return -EIO; return error; }
/** * nilfs_readpage() - implement readpage() method of nilfs_aops {} * address_space_operations. * @file - file struct of the file to be read * @page - the page to be read */ static int nilfs_readpage(struct file *file, struct page *page) { return mpage_readpage(page, nilfs_get_block); }
static int simplefs_read_page(struct file *filp,struct page *page) { SFSDBG(KERN_INFO "Read page started \n"); dump_stack(); return mpage_readpage(page,simplefs_get_block); }
static int sfs_readpage(struct file *file, struct page *page) { pr_debug("sfs_readpage called\n"); return mpage_readpage(page, sfs_get_block); }