From bc3b30ed09b8f3eb86b61e3a05ccacfd928faa95 Mon Sep 17 00:00:00 2001 From: Ilya Dryomov Date: Thu, 5 Jun 2014 10:08:42 +0400 Subject: [PATCH] XfsFileStoreBackend: call ioctl(XFS_IOC_FSSETXATTR) less often 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 --- src/os/XfsFileStoreBackend.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/os/XfsFileStoreBackend.cc b/src/os/XfsFileStoreBackend.cc index cfda1acfab8..80721e334ac 100644 --- a/src/os/XfsFileStoreBackend.cc +++ b/src/os/XfsFileStoreBackend.cc @@ -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; -- 2.47.3