]> www.infradead.org Git - users/hch/misc.git/commitdiff
NFS: Adjust delegated timestamps for O_DIRECT reads and writes
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Sat, 1 Feb 2025 19:59:03 +0000 (14:59 -0500)
committerAnna Schumaker <anna.schumaker@oracle.com>
Wed, 19 Feb 2025 21:45:24 +0000 (16:45 -0500)
Adjust the timestamps if O_DIRECT is being combined with attribute
delegations.

Fixes: e12912d94137 ("NFSv4: Add support for delegated atime and mtime attributes")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
fs/nfs/direct.c

index 40e13c9a2873f91d60a6786e6d208d09d4142599..f32f8d7c9122bf14852abd68a8f46c7409d185b6 100644 (file)
@@ -56,6 +56,7 @@
 #include <linux/uaccess.h>
 #include <linux/atomic.h>
 
+#include "delegation.h"
 #include "internal.h"
 #include "iostat.h"
 #include "pnfs.h"
@@ -286,6 +287,8 @@ static void nfs_direct_read_completion(struct nfs_pgio_header *hdr)
        nfs_direct_count_bytes(dreq, hdr);
        spin_unlock(&dreq->lock);
 
+       nfs_update_delegated_atime(dreq->inode);
+
        while (!list_empty(&hdr->pages)) {
                struct nfs_page *req = nfs_list_entry(hdr->pages.next);
                struct page *page = req->wb_page;
@@ -779,6 +782,7 @@ static void nfs_direct_write_completion(struct nfs_pgio_header *hdr)
 
        spin_lock(&inode->i_lock);
        nfs_direct_file_adjust_size_locked(inode, dreq->io_start, dreq->count);
+       nfs_update_delegated_mtime_locked(dreq->inode);
        spin_unlock(&inode->i_lock);
 
        while (!list_empty(&hdr->pages)) {