summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorJeuk Kim <jeuk20.kim@gmail.com>2026-07-08 16:44:33 +0900
committerTrond Myklebust <trond.myklebust@hammerspace.com>2026-08-17 09:02:08 -0700
commit92a885576fbcd145cf3cdfa73d33ca79d7ef81a4 (patch)
tree7b156b158b26ff64bc7a6e97673d3db6a098514a /include/linux
parent2b03ebbf8d5e8f6af4ecd6c65375232dd1ec32cc (diff)
NFSv4/flexfiles: support loosely coupled data servers
A flexfiles storage device is tightly coupled to the MDS only when the decoded ds_versions[0].tightly_coupled flag is set (RFC 8435, sections 2.3 and 4.1). The client currently ignores that flag and treats every data server as tightly coupled, which breaks I/O to loosely coupled DSes. Two things force that assumption on an NFSv4.1+ DS: 1) nfs4_set_ds_client() always sets NFS_CS_PNFS on the new client, so EXCHANGE_ID is sent with EXCHGID4_FLAG_USE_PNFS_DS. 2) nfs4_init_ds_session() then calls is_ds_client() and returns -ENODEV if the reply does not carry EXCHGID4_FLAG_USE_PNFS_DS. A loosely coupled DS is just a normal NFS server and does not act in the pNFS DS role, so the client must not require it to advertise that role. Thread the ds_versions[0].tightly_coupled flag from the flexfiles driver down to the DS connect path. When it is false, skip both the NFS_CS_PNFS flag and the is_ds_client() check. The file layout driver always passes true because NFSv4.1 file layout data servers use the pNFS DS role. Signed-off-by: Jeuk Kim <jeuk20.kim@samsung.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions