]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
XfsFileStoreBackend: call ioctl(XFS_IOC_FSSETXATTR) less often
authorIlya Dryomov <ilya.dryomov@inktank.com>
Thu, 5 Jun 2014 06:08:42 +0000 (10:08 +0400)
committerSage Weil <sage@inktank.com>
Wed, 25 Jun 2014 21:49:45 +0000 (14:49 -0700)
No need to call ioctl(XFS_IOC_FSSETXATTR) if extsize is already set to
the value we want or if any extents are allocated - XFS will refuse to
change extsize in that's the case.

Fixes: #8241
Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
(cherry picked from commit bc3b30ed09b8f3eb86b61e3a05ccacfd928faa95)

src/os/XfsFileStoreBackend.cc

index 7b632d8a622e13b8f3e1bd44a9de1042b7c0ea45..ba51e6b36a73fcd9b23a9ce3c8f2ba9250e98bf3 100644 (file)
@@ -61,6 +61,14 @@ int XfsFileStoreBackend::set_extsize(int fd, unsigned int val)
     goto out;
   }
 
+  // already set?
+  if ((fsx.fsx_xflags & XFS_XFLAG_EXTSIZE) && fsx.fsx_extsize == val)
+    return 0;
+
+  // xfs won't change extent size if any extents are allocated
+  if (fsx.fsx_nextents != 0)
+    return 0;
+
   fsx.fsx_xflags |= XFS_XFLAG_EXTSIZE;
   fsx.fsx_extsize = val;