Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 294623
b: refs/heads/master
c: 84803fb
h: refs/heads/master
i:
  294621: 97af672
  294619: ff5446b
  294615: 927497a
  294607: 238c91b
  294591: 29fa50f
v: v3
  • Loading branch information
Christoph Hellwig authored and Ben Myers committed Mar 5, 2012
1 parent 2918a3c commit fcdac82
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 7 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: 6923e686f19cb7017fc9777a10e06c2e2b2a2936
refs/heads/master: 84803fb78237014cbbc86c0f012b273a199f4691
11 changes: 6 additions & 5 deletions trunk/fs/xfs/xfs_aops.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,13 +179,14 @@ xfs_end_io(
ioend->io_error = -error;
goto done;
}
} else {
/*
* We might have to update the on-disk file size after
* extending writes.
*/
xfs_setfilesize(ioend);
}

/*
* We might have to update the on-disk file size after extending
* writes.
*/
xfs_setfilesize(ioend);
done:
xfs_destroy_ioend(ioend);
}
Expand Down
19 changes: 18 additions & 1 deletion trunk/fs/xfs/xfs_iomap.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
#include "xfs_ialloc_btree.h"
#include "xfs_dinode.h"
#include "xfs_inode.h"
#include "xfs_inode_item.h"
#include "xfs_btree.h"
#include "xfs_bmap.h"
#include "xfs_rtalloc.h"
Expand Down Expand Up @@ -645,6 +646,7 @@ xfs_iomap_write_unwritten(
xfs_trans_t *tp;
xfs_bmbt_irec_t imap;
xfs_bmap_free_t free_list;
xfs_fsize_t i_size;
uint resblks;
int committed;
int error;
Expand Down Expand Up @@ -705,7 +707,22 @@ xfs_iomap_write_unwritten(
if (error)
goto error_on_bmapi_transaction;

error = xfs_bmap_finish(&(tp), &(free_list), &committed);
/*
* Log the updated inode size as we go. We have to be careful
* to only log it up to the actual write offset if it is
* halfway into a block.
*/
i_size = XFS_FSB_TO_B(mp, offset_fsb + count_fsb);
if (i_size > offset + count)
i_size = offset + count;

i_size = xfs_new_eof(ip, i_size);
if (i_size) {
ip->i_d.di_size = i_size;
xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
}

error = xfs_bmap_finish(&tp, &free_list, &committed);
if (error)
goto error_on_bmapi_transaction;

Expand Down

0 comments on commit fcdac82

Please sign in to comment.