diff options
author | Chandan Babu R <chandanrlinux@gmail.com> | 2021-01-23 01:48:12 +0100 |
---|---|---|
committer | Darrick J. Wong <djwong@kernel.org> | 2021-01-23 01:54:47 +0100 |
commit | f5d92749191402c50e32ac83dd9da3b910f5680f (patch) | |
tree | 7c74e4d26fc97b7890af4f35302fbbfd8fd4fea6 /fs/xfs/xfs_symlink.c | |
parent | xfs: Check for extent overflow when punching a hole (diff) | |
download | linux-f5d92749191402c50e32ac83dd9da3b910f5680f.tar.xz linux-f5d92749191402c50e32ac83dd9da3b910f5680f.zip |
xfs: Check for extent overflow when adding dir entries
Directory entry addition can cause the following,
1. Data block can be added/removed.
A new extent can cause extent count to increase by 1.
2. Free disk block can be added/removed.
Same behaviour as described above for Data block.
3. Dabtree blocks.
XFS_DA_NODE_MAXDEPTH blocks can be added. Each of these
can be new extents. Hence extent count can increase by
XFS_DA_NODE_MAXDEPTH.
Signed-off-by: Chandan Babu R <chandanrlinux@gmail.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Diffstat (limited to 'fs/xfs/xfs_symlink.c')
-rw-r--r-- | fs/xfs/xfs_symlink.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/xfs/xfs_symlink.c b/fs/xfs/xfs_symlink.c index 1f43fd7f3209..0b8136a32484 100644 --- a/fs/xfs/xfs_symlink.c +++ b/fs/xfs/xfs_symlink.c @@ -220,6 +220,11 @@ xfs_symlink( if (error) goto out_trans_cancel; + error = xfs_iext_count_may_overflow(dp, XFS_DATA_FORK, + XFS_IEXT_DIR_MANIP_CNT(mp)); + if (error) + goto out_trans_cancel; + /* * Allocate an inode for the symlink. */ |