Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 109903
b: refs/heads/master
c: 2fd6f6e
h: refs/heads/master
i:
  109901: cdc403a
  109899: a20753a
  109895: 049ffed
  109887: be0ce95
v: v3
  • Loading branch information
Lachlan McIlroy authored and Lachlan McIlroy committed Sep 17, 2008
1 parent e28890b commit aefe5e7
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e1f5dbd7077eebec794452a516cb02f1669b036d
refs/heads/master: 2fd6f6ec64ff347447d26646ac6188f3658b383c
18 changes: 18 additions & 0 deletions trunk/fs/xfs/xfs_vnodeops.c
Original file line number Diff line number Diff line change
Expand Up @@ -3160,6 +3160,13 @@ xfs_alloc_file_space(
/*
* Zero file bytes between startoff and endoff inclusive.
* The iolock is held exclusive and no blocks are buffered.
*
* This function is used by xfs_free_file_space() to zero
* partial blocks when the range to free is not block aligned.
* When unreserving space with boundaries that are not block
* aligned we round up the start and round down the end
* boundaries and then use this function to zero the parts of
* the blocks that got dropped during the rounding.
*/
STATIC int
xfs_zero_remaining_bytes(
Expand All @@ -3176,6 +3183,17 @@ xfs_zero_remaining_bytes(
int nimap;
int error = 0;

/*
* Avoid doing I/O beyond eof - it's not necessary
* since nothing can read beyond eof. The space will
* be zeroed when the file is extended anyway.
*/
if (startoff >= ip->i_size)
return 0;

if (endoff > ip->i_size)
endoff = ip->i_size;

bp = xfs_buf_get_noaddr(mp->m_sb.sb_blocksize,
XFS_IS_REALTIME_INODE(ip) ?
mp->m_rtdev_targp : mp->m_ddev_targp);
Expand Down

0 comments on commit aefe5e7

Please sign in to comment.