xfs: don't log the inode in xfs_fs_map_blocks if it
authorChristoph Hellwig <hch@lst.de>
Wed, 30 Oct 2019 19:24:58 +0000 (12:24 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Sun, 3 Nov 2019 18:22:30 +0000 (10:22 -0800)
Even if we are asked for a write layout there is no point in logging
the inode unless we actually modified it in some way.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/xfs_pnfs.c

index 3634fff..ada46e9 100644 (file)
@@ -150,30 +150,24 @@ xfs_fs_map_blocks(
 
        ASSERT(!nimaps || imap.br_startblock != DELAYSTARTBLOCK);
 
-       if (write) {
-               enum xfs_prealloc_flags flags = 0;
-
-               if (!nimaps || imap.br_startblock == HOLESTARTBLOCK) {
-                       /*
-                        * xfs_iomap_write_direct() expects to take ownership of
-                        * the shared ilock.
-                        */
-                       xfs_ilock(ip, XFS_ILOCK_SHARED);
-                       error = xfs_iomap_write_direct(ip, offset, length,
-                                                      &imap, nimaps);
-                       if (error)
-                               goto out_unlock;
-
-                       /*
-                        * Ensure the next transaction is committed
-                        * synchronously so that the blocks allocated and
-                        * handed out to the client are guaranteed to be
-                        * present even after a server crash.
-                        */
-                       flags |= XFS_PREALLOC_SET | XFS_PREALLOC_SYNC;
-               }
-
-               error = xfs_update_prealloc_flags(ip, flags);
+       if (write && (!nimaps || imap.br_startblock == HOLESTARTBLOCK)) {
+               /*
+                * xfs_iomap_write_direct() expects to take ownership of the
+                * shared ilock.
+                */
+               xfs_ilock(ip, XFS_ILOCK_SHARED);
+               error = xfs_iomap_write_direct(ip, offset, length, &imap,
+                                              nimaps);
+               if (error)
+                       goto out_unlock;
+
+               /*
+                * Ensure the next transaction is committed synchronously so
+                * that the blocks allocated and handed out to the client are
+                * guaranteed to be present even after a server crash.
+                */
+               error = xfs_update_prealloc_flags(ip,
+                               XFS_PREALLOC_SET | XFS_PREALLOC_SYNC);
                if (error)
                        goto out_unlock;
        }