On Thu, Sep 11, 2014 at 11:30:50PM +0800, Peng Tao wrote: > It looks dangerous to have extents lurking around without matching > layout segments. One example is NFS4ERR_EXPIRED and > NFS4ERR_BAD_STATEID in nfs4_layoutget_done(), client needs to drop all > layout segments but may keep the layout header, in which case blocks > layout would still hold all extents at hand. We never do I/O without a valid layout, but we keep the extents around because we need to keep state like that it's been written to or has a commit pending in a single place, and also need to keep it if a layout goes away temporarily. I hate the way it has been done in the old client, and tried moving the extent tracking to a per-layout basis, and spent way too much time on it but still couldn't get it to work, so I finally gave up. I think we're between a rock (the idiocy on rfc5663 that it tracks data in extents and not in layouts) and a hard place (the forgetful Linux client and it's lose layout coherency) here. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html