]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
XfsFileStoreBackend: call ioctl(XFS_IOC_FSSETXATTR) less often 1930/head
authorIlya Dryomov <ilya.dryomov@inktank.com>
Thu, 5 Jun 2014 06:08:42 +0000 (10:08 +0400)
committerIlya Dryomov <ilya.dryomov@inktank.com>
Fri, 6 Jun 2014 11:38:35 +0000 (15:38 +0400)
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>
src/os/XfsFileStoreBackend.cc

index cfda1acfab8cdb3c9ec9e54b1de5c8708a7aa38f..80721e334aca11af88807d5e191ffd6d950c1c35 100644 (file)
@@ -60,6 +60,14 @@ int XfsFileStoreBackend::set_extsize(int fd, unsigned int val)
     return ret;
   }
 
+  // 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;