Lines Matching refs:fl
539 struct nfs4_filelayout_segment *fl, in filelayout_check_deviceid() argument
547 if (fl->dsaddr != NULL) in filelayout_check_deviceid()
551 d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode), &fl->deviceid, in filelayout_check_deviceid()
561 if (fl->first_stripe_index >= dsaddr->stripe_count) { in filelayout_check_deviceid()
563 __func__, fl->first_stripe_index); in filelayout_check_deviceid()
567 if ((fl->stripe_type == STRIPE_SPARSE && in filelayout_check_deviceid()
568 fl->num_fh > 1 && fl->num_fh != dsaddr->ds_num) || in filelayout_check_deviceid()
569 (fl->stripe_type == STRIPE_DENSE && in filelayout_check_deviceid()
570 fl->num_fh != dsaddr->stripe_count)) { in filelayout_check_deviceid()
572 __func__, fl->num_fh); in filelayout_check_deviceid()
581 if (cmpxchg(&fl->dsaddr, NULL, dsaddr) != NULL) in filelayout_check_deviceid()
600 struct nfs4_filelayout_segment *fl, in filelayout_check_layout() argument
616 if (fl->pattern_offset > lgr->range.offset) { in filelayout_check_layout()
618 __func__, fl->pattern_offset); in filelayout_check_layout()
622 if (!fl->stripe_unit) { in filelayout_check_layout()
624 __func__, fl->stripe_unit); in filelayout_check_layout()
634 static void _filelayout_free_lseg(struct nfs4_filelayout_segment *fl) in _filelayout_free_lseg() argument
638 if (fl->fh_array) { in _filelayout_free_lseg()
639 for (i = 0; i < fl->num_fh; i++) { in _filelayout_free_lseg()
640 if (!fl->fh_array[i]) in _filelayout_free_lseg()
642 kfree(fl->fh_array[i]); in _filelayout_free_lseg()
644 kfree(fl->fh_array); in _filelayout_free_lseg()
646 kfree(fl); in _filelayout_free_lseg()
651 struct nfs4_filelayout_segment *fl, in filelayout_decode_layout() argument
677 memcpy(&fl->deviceid, p, sizeof(fl->deviceid)); in filelayout_decode_layout()
679 nfs4_print_deviceid(&fl->deviceid); in filelayout_decode_layout()
683 fl->commit_through_mds = 1; in filelayout_decode_layout()
685 fl->stripe_type = STRIPE_DENSE; in filelayout_decode_layout()
687 fl->stripe_type = STRIPE_SPARSE; in filelayout_decode_layout()
688 fl->stripe_unit = nfl_util & ~NFL4_UFLG_MASK; in filelayout_decode_layout()
690 fl->first_stripe_index = be32_to_cpup(p++); in filelayout_decode_layout()
691 p = xdr_decode_hyper(p, &fl->pattern_offset); in filelayout_decode_layout()
692 fl->num_fh = be32_to_cpup(p++); in filelayout_decode_layout()
695 __func__, nfl_util, fl->num_fh, fl->first_stripe_index, in filelayout_decode_layout()
696 fl->pattern_offset); in filelayout_decode_layout()
700 if (fl->num_fh > in filelayout_decode_layout()
704 if (fl->num_fh > 0) { in filelayout_decode_layout()
705 fl->fh_array = kcalloc(fl->num_fh, sizeof(fl->fh_array[0]), in filelayout_decode_layout()
707 if (!fl->fh_array) in filelayout_decode_layout()
711 for (i = 0; i < fl->num_fh; i++) { in filelayout_decode_layout()
713 fl->fh_array[i] = kmalloc(sizeof(struct nfs_fh), gfp_flags); in filelayout_decode_layout()
714 if (!fl->fh_array[i]) in filelayout_decode_layout()
720 fl->fh_array[i]->size = be32_to_cpup(p++); in filelayout_decode_layout()
721 if (fl->fh_array[i]->size > NFS_MAXFHSIZE) { in filelayout_decode_layout()
723 i, fl->fh_array[i]->size); in filelayout_decode_layout()
727 p = xdr_inline_decode(&stream, fl->fh_array[i]->size); in filelayout_decode_layout()
730 memcpy(fl->fh_array[i]->data, p, fl->fh_array[i]->size); in filelayout_decode_layout()
732 fl->fh_array[i]->size); in filelayout_decode_layout()
746 struct nfs4_filelayout_segment *fl = FILELAYOUT_LSEG(lseg); in filelayout_free_lseg() local
749 if (fl->dsaddr != NULL) in filelayout_free_lseg()
750 nfs4_fl_put_deviceid(fl->dsaddr); in filelayout_free_lseg()
762 _filelayout_free_lseg(fl); in filelayout_free_lseg()
770 struct nfs4_filelayout_segment *fl; in filelayout_alloc_lseg() local
774 fl = kzalloc(sizeof(*fl), gfp_flags); in filelayout_alloc_lseg()
775 if (!fl) in filelayout_alloc_lseg()
778 rc = filelayout_decode_layout(layoutid, fl, lgr, gfp_flags); in filelayout_alloc_lseg()
779 if (rc != 0 || filelayout_check_layout(layoutid, fl, lgr, gfp_flags)) { in filelayout_alloc_lseg()
780 _filelayout_free_lseg(fl); in filelayout_alloc_lseg()
783 return &fl->generic_hdr; in filelayout_alloc_lseg()
847 struct nfs4_filelayout_segment *fl; in fl_pnfs_update_layout() local
856 fl = FILELAYOUT_LSEG(lseg); in fl_pnfs_update_layout()
858 status = filelayout_check_deviceid(lo, fl, gfp_flags); in fl_pnfs_update_layout()
930 static u32 select_bucket_index(struct nfs4_filelayout_segment *fl, u32 j) in select_bucket_index() argument
932 if (fl->stripe_type == STRIPE_SPARSE) in select_bucket_index()
933 return nfs4_fl_calc_ds_index(&fl->generic_hdr, j); in select_bucket_index()
945 struct nfs4_filelayout_segment *fl = FILELAYOUT_LSEG(lseg); in filelayout_mark_request_commit() local
948 if (fl->commit_through_mds) { in filelayout_mark_request_commit()
958 i = select_bucket_index(fl, j); in filelayout_mark_request_commit()
1082 struct nfs4_filelayout_segment *fl = FILELAYOUT_LSEG(lseg); in filelayout_setup_ds_info() local
1085 unsigned int size = (fl->stripe_type == STRIPE_SPARSE) ? in filelayout_setup_ds_info()
1086 fl->dsaddr->ds_num : fl->dsaddr->stripe_count; in filelayout_setup_ds_info()