Lines Matching refs:fl

537 			  struct nfs4_filelayout_segment *fl,  in filelayout_check_deviceid()  argument
545 if (fl->dsaddr != NULL) in filelayout_check_deviceid()
549 d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode), &fl->deviceid, in filelayout_check_deviceid()
559 if (fl->first_stripe_index >= dsaddr->stripe_count) { in filelayout_check_deviceid()
561 __func__, fl->first_stripe_index); in filelayout_check_deviceid()
565 if ((fl->stripe_type == STRIPE_SPARSE && in filelayout_check_deviceid()
566 fl->num_fh > 1 && fl->num_fh != dsaddr->ds_num) || in filelayout_check_deviceid()
567 (fl->stripe_type == STRIPE_DENSE && in filelayout_check_deviceid()
568 fl->num_fh != dsaddr->stripe_count)) { in filelayout_check_deviceid()
570 __func__, fl->num_fh); in filelayout_check_deviceid()
579 if (cmpxchg(&fl->dsaddr, NULL, dsaddr) != NULL) in filelayout_check_deviceid()
598 struct nfs4_filelayout_segment *fl, in filelayout_check_layout() argument
614 if (fl->pattern_offset > lgr->range.offset) { in filelayout_check_layout()
616 __func__, fl->pattern_offset); in filelayout_check_layout()
620 if (!fl->stripe_unit) { in filelayout_check_layout()
622 __func__, fl->stripe_unit); in filelayout_check_layout()
632 static void _filelayout_free_lseg(struct nfs4_filelayout_segment *fl) in _filelayout_free_lseg() argument
636 if (fl->fh_array) { in _filelayout_free_lseg()
637 for (i = 0; i < fl->num_fh; i++) { in _filelayout_free_lseg()
638 if (!fl->fh_array[i]) in _filelayout_free_lseg()
640 kfree(fl->fh_array[i]); in _filelayout_free_lseg()
642 kfree(fl->fh_array); in _filelayout_free_lseg()
644 kfree(fl); in _filelayout_free_lseg()
649 struct nfs4_filelayout_segment *fl, in filelayout_decode_layout() argument
675 memcpy(&fl->deviceid, p, sizeof(fl->deviceid)); in filelayout_decode_layout()
677 nfs4_print_deviceid(&fl->deviceid); in filelayout_decode_layout()
681 fl->commit_through_mds = 1; in filelayout_decode_layout()
683 fl->stripe_type = STRIPE_DENSE; in filelayout_decode_layout()
685 fl->stripe_type = STRIPE_SPARSE; in filelayout_decode_layout()
686 fl->stripe_unit = nfl_util & ~NFL4_UFLG_MASK; in filelayout_decode_layout()
688 fl->first_stripe_index = be32_to_cpup(p++); in filelayout_decode_layout()
689 p = xdr_decode_hyper(p, &fl->pattern_offset); in filelayout_decode_layout()
690 fl->num_fh = be32_to_cpup(p++); in filelayout_decode_layout()
693 __func__, nfl_util, fl->num_fh, fl->first_stripe_index, in filelayout_decode_layout()
694 fl->pattern_offset); in filelayout_decode_layout()
698 if (fl->num_fh > in filelayout_decode_layout()
702 if (fl->num_fh > 0) { in filelayout_decode_layout()
703 fl->fh_array = kcalloc(fl->num_fh, sizeof(fl->fh_array[0]), in filelayout_decode_layout()
705 if (!fl->fh_array) in filelayout_decode_layout()
709 for (i = 0; i < fl->num_fh; i++) { in filelayout_decode_layout()
711 fl->fh_array[i] = kmalloc(sizeof(struct nfs_fh), gfp_flags); in filelayout_decode_layout()
712 if (!fl->fh_array[i]) in filelayout_decode_layout()
718 fl->fh_array[i]->size = be32_to_cpup(p++); in filelayout_decode_layout()
719 if (fl->fh_array[i]->size > NFS_MAXFHSIZE) { in filelayout_decode_layout()
721 i, fl->fh_array[i]->size); in filelayout_decode_layout()
725 p = xdr_inline_decode(&stream, fl->fh_array[i]->size); in filelayout_decode_layout()
728 memcpy(fl->fh_array[i]->data, p, fl->fh_array[i]->size); in filelayout_decode_layout()
730 fl->fh_array[i]->size); in filelayout_decode_layout()
744 struct nfs4_filelayout_segment *fl = FILELAYOUT_LSEG(lseg); in filelayout_free_lseg() local
747 if (fl->dsaddr != NULL) in filelayout_free_lseg()
748 nfs4_fl_put_deviceid(fl->dsaddr); in filelayout_free_lseg()
760 _filelayout_free_lseg(fl); in filelayout_free_lseg()
768 struct nfs4_filelayout_segment *fl; in filelayout_alloc_lseg() local
772 fl = kzalloc(sizeof(*fl), gfp_flags); in filelayout_alloc_lseg()
773 if (!fl) in filelayout_alloc_lseg()
776 rc = filelayout_decode_layout(layoutid, fl, lgr, gfp_flags); in filelayout_alloc_lseg()
777 if (rc != 0 || filelayout_check_layout(layoutid, fl, lgr, gfp_flags)) { in filelayout_alloc_lseg()
778 _filelayout_free_lseg(fl); in filelayout_alloc_lseg()
781 return &fl->generic_hdr; in filelayout_alloc_lseg()
837 struct nfs4_filelayout_segment *fl; in fl_pnfs_update_layout() local
846 fl = FILELAYOUT_LSEG(lseg); in fl_pnfs_update_layout()
848 status = filelayout_check_deviceid(lo, fl, gfp_flags); in fl_pnfs_update_layout()
920 static u32 select_bucket_index(struct nfs4_filelayout_segment *fl, u32 j) in select_bucket_index() argument
922 if (fl->stripe_type == STRIPE_SPARSE) in select_bucket_index()
923 return nfs4_fl_calc_ds_index(&fl->generic_hdr, j); in select_bucket_index()
935 struct nfs4_filelayout_segment *fl = FILELAYOUT_LSEG(lseg); in filelayout_mark_request_commit() local
938 if (fl->commit_through_mds) { in filelayout_mark_request_commit()
948 i = select_bucket_index(fl, j); in filelayout_mark_request_commit()
1072 struct nfs4_filelayout_segment *fl = FILELAYOUT_LSEG(lseg); in filelayout_setup_ds_info() local
1075 unsigned int size = (fl->stripe_type == STRIPE_SPARSE) ? in filelayout_setup_ds_info()
1076 fl->dsaddr->ds_num : fl->dsaddr->stripe_count; in filelayout_setup_ds_info()