Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 124958
b: refs/heads/master
c: 9f6c92b
h: refs/heads/master
v: v3
  • Loading branch information
Lachlan McIlroy committed Dec 22, 2008
1 parent bda915c commit c5d52a5
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 22 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4fdc7781799926dca6c3a3bb6e9533a9718c4dea
refs/heads/master: 9f6c92b9cc2fd41d6c7b493be5637cc5b5659880
28 changes: 7 additions & 21 deletions trunk/fs/xfs/xfs_iomap.c
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,6 @@ STATIC int
xfs_iomap_eof_align_last_fsb(
xfs_mount_t *mp,
xfs_inode_t *ip,
xfs_fsize_t isize,
xfs_extlen_t extsize,
xfs_fileoff_t *last_fsb)
{
Expand All @@ -306,14 +305,14 @@ xfs_iomap_eof_align_last_fsb(
* stripe width and we are allocating past the allocation eof.
*/
else if (mp->m_swidth && (mp->m_flags & XFS_MOUNT_SWALLOC) &&
(isize >= XFS_FSB_TO_B(mp, mp->m_swidth)))
(ip->i_size >= XFS_FSB_TO_B(mp, mp->m_swidth)))
new_last_fsb = roundup_64(*last_fsb, mp->m_swidth);
/*
* Roundup the allocation request to a stripe unit (m_dalign) boundary
* if the file size is >= stripe unit size, and we are allocating past
* the allocation eof.
*/
else if (mp->m_dalign && (isize >= XFS_FSB_TO_B(mp, mp->m_dalign)))
else if (mp->m_dalign && (ip->i_size >= XFS_FSB_TO_B(mp, mp->m_dalign)))
new_last_fsb = roundup_64(*last_fsb, mp->m_dalign);

/*
Expand Down Expand Up @@ -403,7 +402,6 @@ xfs_iomap_write_direct(
xfs_filblks_t count_fsb, resaligned;
xfs_fsblock_t firstfsb;
xfs_extlen_t extsz, temp;
xfs_fsize_t isize;
int nimaps;
int bmapi_flag;
int quota_flag;
Expand All @@ -426,15 +424,10 @@ xfs_iomap_write_direct(
rt = XFS_IS_REALTIME_INODE(ip);
extsz = xfs_get_extsz_hint(ip);

isize = ip->i_size;
if (ip->i_new_size > isize)
isize = ip->i_new_size;

offset_fsb = XFS_B_TO_FSBT(mp, offset);
last_fsb = XFS_B_TO_FSB(mp, ((xfs_ufsize_t)(offset + count)));
if ((offset + count) > isize) {
error = xfs_iomap_eof_align_last_fsb(mp, ip, isize, extsz,
&last_fsb);
if ((offset + count) > ip->i_size) {
error = xfs_iomap_eof_align_last_fsb(mp, ip, extsz, &last_fsb);
if (error)
goto error_out;
} else {
Expand Down Expand Up @@ -559,7 +552,6 @@ STATIC int
xfs_iomap_eof_want_preallocate(
xfs_mount_t *mp,
xfs_inode_t *ip,
xfs_fsize_t isize,
xfs_off_t offset,
size_t count,
int ioflag,
Expand All @@ -573,7 +565,7 @@ xfs_iomap_eof_want_preallocate(
int n, error, imaps;

*prealloc = 0;
if ((ioflag & BMAPI_SYNC) || (offset + count) <= isize)
if ((ioflag & BMAPI_SYNC) || (offset + count) <= ip->i_size)
return 0;

/*
Expand Down Expand Up @@ -617,7 +609,6 @@ xfs_iomap_write_delay(
xfs_fileoff_t ioalign;
xfs_fsblock_t firstblock;
xfs_extlen_t extsz;
xfs_fsize_t isize;
int nimaps;
xfs_bmbt_irec_t imap[XFS_WRITE_IMAPS];
int prealloc, fsynced = 0;
Expand All @@ -637,11 +628,7 @@ xfs_iomap_write_delay(
offset_fsb = XFS_B_TO_FSBT(mp, offset);

retry:
isize = ip->i_size;
if (ip->i_new_size > isize)
isize = ip->i_new_size;

error = xfs_iomap_eof_want_preallocate(mp, ip, isize, offset, count,
error = xfs_iomap_eof_want_preallocate(mp, ip, offset, count,
ioflag, imap, XFS_WRITE_IMAPS, &prealloc);
if (error)
return error;
Expand All @@ -655,8 +642,7 @@ xfs_iomap_write_delay(
}

if (prealloc || extsz) {
error = xfs_iomap_eof_align_last_fsb(mp, ip, isize, extsz,
&last_fsb);
error = xfs_iomap_eof_align_last_fsb(mp, ip, extsz, &last_fsb);
if (error)
return error;
}
Expand Down

0 comments on commit c5d52a5

Please sign in to comment.