Lines Matching refs:lseg
24 static bool ff_layout_has_available_ds(struct pnfs_layout_segment *lseg);
351 * @lseg: the layout segment we're operating on
367 nfs4_ff_layout_prepare_ds(struct pnfs_layout_segment *lseg,
372 struct inode *ino = lseg->pls_layout->plh_inode;
377 if (!ff_layout_init_mirror_ds(lseg->pls_layout, mirror))
406 ff_layout_track_ds_error(FF_LAYOUT_FROM_HDR(lseg->pls_layout),
407 mirror, lseg->pls_range.offset,
408 lseg->pls_range.length, NFS4ERR_NXIO,
410 ff_layout_send_layouterror(lseg);
411 if (fail_return || !ff_layout_has_available_ds(lseg))
412 pnfs_error_mark_layout_for_return(ino, lseg);
550 static bool ff_read_layout_has_available_ds(struct pnfs_layout_segment *lseg)
556 for (idx = 0; idx < FF_LAYOUT_MIRROR_COUNT(lseg); idx++) {
557 mirror = FF_LAYOUT_COMP(lseg, idx);
572 static bool ff_rw_layout_has_available_ds(struct pnfs_layout_segment *lseg)
578 for (idx = 0; idx < FF_LAYOUT_MIRROR_COUNT(lseg); idx++) {
579 mirror = FF_LAYOUT_COMP(lseg, idx);
589 return FF_LAYOUT_MIRROR_COUNT(lseg) != 0;
592 static bool ff_layout_has_available_ds(struct pnfs_layout_segment *lseg)
594 if (lseg->pls_range.iomode == IOMODE_READ)
595 return ff_read_layout_has_available_ds(lseg);
597 return ff_rw_layout_has_available_ds(lseg);
600 bool ff_layout_avoid_mds_available_ds(struct pnfs_layout_segment *lseg)
602 return ff_layout_no_fallback_to_mds(lseg) ||
603 ff_layout_has_available_ds(lseg);
606 bool ff_layout_avoid_read_on_rw(struct pnfs_layout_segment *lseg)
608 return lseg->pls_range.iomode == IOMODE_RW &&
609 ff_layout_no_read_on_rw(lseg);