Lines Matching refs:sr
1233 static void ceph_init_sparse_read(struct ceph_sparse_read *sr) in ceph_init_sparse_read() argument
1235 kfree(sr->sr_extent); in ceph_init_sparse_read()
1236 memset(sr, '\0', sizeof(*sr)); in ceph_init_sparse_read()
1237 sr->sr_state = CEPH_SPARSE_READ_HDR; in ceph_init_sparse_read()
5713 struct ceph_sparse_read *sr = &o->o_sparse_read; in prep_next_sparse_read() local
5735 op->extent.sparse_ext = sr->sr_extent; in prep_next_sparse_read()
5736 sr->sr_extent = NULL; in prep_next_sparse_read()
5737 op->extent.sparse_ext_cnt = sr->sr_count; in prep_next_sparse_read()
5738 sr->sr_ext_len = 0; in prep_next_sparse_read()
5743 if (end < sr->sr_req_len) in prep_next_sparse_read()
5744 advance_cursor(cursor, sr->sr_req_len - end, false); in prep_next_sparse_read()
5747 ceph_init_sparse_read(sr); in prep_next_sparse_read()
5761 sr->sr_req_off = op->extent.offset; in prep_next_sparse_read()
5762 sr->sr_req_len = op->extent.length; in prep_next_sparse_read()
5763 sr->sr_pos = sr->sr_req_off; in prep_next_sparse_read()
5765 o->o_osd, o->o_sparse_op_idx, sr->sr_req_off, sr->sr_req_len); in prep_next_sparse_read()
5768 sr->sr_ext_len = op->extent.sparse_ext_cnt; in prep_next_sparse_read()
5770 sr->sr_extent = op->extent.sparse_ext; in prep_next_sparse_read()
5778 static inline void convert_extent_map(struct ceph_sparse_read *sr) in convert_extent_map() argument
5782 for (i = 0; i < sr->sr_count; i++) { in convert_extent_map()
5783 struct ceph_sparse_extent *ext = &sr->sr_extent[i]; in convert_extent_map()
5790 static inline void convert_extent_map(struct ceph_sparse_read *sr) in convert_extent_map() argument
5800 struct ceph_sparse_read *sr = &o->o_sparse_read; in osd_sparse_read() local
5801 u32 count = sr->sr_count; in osd_sparse_read()
5805 switch (sr->sr_state) { in osd_sparse_read()
5813 ret = sizeof(sr->sr_count); in osd_sparse_read()
5814 *pbuf = (char *)&sr->sr_count; in osd_sparse_read()
5815 sr->sr_state = CEPH_SPARSE_READ_EXTENTS; in osd_sparse_read()
5819 count = le32_to_cpu((__force __le32)sr->sr_count); in osd_sparse_read()
5820 sr->sr_count = count; in osd_sparse_read()
5824 if (!sr->sr_extent || count > sr->sr_ext_len) { in osd_sparse_read()
5826 kfree(sr->sr_extent); in osd_sparse_read()
5827 sr->sr_extent = kmalloc_array(count, in osd_sparse_read()
5828 sizeof(*sr->sr_extent), in osd_sparse_read()
5830 if (!sr->sr_extent) { in osd_sparse_read()
5835 sr->sr_ext_len = count; in osd_sparse_read()
5837 ret = count * sizeof(*sr->sr_extent); in osd_sparse_read()
5838 *pbuf = (char *)sr->sr_extent; in osd_sparse_read()
5839 sr->sr_state = CEPH_SPARSE_READ_DATA_LEN; in osd_sparse_read()
5845 convert_extent_map(sr); in osd_sparse_read()
5846 ret = sizeof(sr->sr_datalen); in osd_sparse_read()
5847 *pbuf = (char *)&sr->sr_datalen; in osd_sparse_read()
5848 sr->sr_state = CEPH_SPARSE_READ_DATA_PRE; in osd_sparse_read()
5852 sr->sr_datalen = le32_to_cpu((__force __le32)sr->sr_datalen); in osd_sparse_read()
5854 len += sr->sr_extent[i].len; in osd_sparse_read()
5855 if (sr->sr_datalen != len) { in osd_sparse_read()
5857 sr->sr_datalen, len); in osd_sparse_read()
5860 sr->sr_state = CEPH_SPARSE_READ_DATA; in osd_sparse_read()
5863 if (sr->sr_index >= count) { in osd_sparse_read()
5864 sr->sr_state = CEPH_SPARSE_READ_HDR; in osd_sparse_read()
5868 eoff = sr->sr_extent[sr->sr_index].off; in osd_sparse_read()
5869 elen = sr->sr_extent[sr->sr_index].len; in osd_sparse_read()
5872 o->o_osd, sr->sr_index, eoff, elen); in osd_sparse_read()
5881 if (sr->sr_pos < eoff) in osd_sparse_read()
5882 advance_cursor(cursor, eoff - sr->sr_pos, true); in osd_sparse_read()
5885 sr->sr_pos = eoff + elen; in osd_sparse_read()
5893 ++sr->sr_index; in osd_sparse_read()