git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
This commit was manufactured by cvs2svn to create tag
[linux-2.6.git]
/
fs
/
ext3
/
xattr.c
diff --git
a/fs/ext3/xattr.c
b/fs/ext3/xattr.c
index
97b74fe
..
b766908
100644
(file)
--- a/
fs/ext3/xattr.c
+++ b/
fs/ext3/xattr.c
@@
-787,7
+787,7
@@
ext3_xattr_set_handle2(handle_t *handle, struct inode *inode,
EXT3_I(inode)->i_block_group *
EXT3_BLOCKS_PER_GROUP(sb);
int block = ext3_new_block(handle,
EXT3_I(inode)->i_block_group *
EXT3_BLOCKS_PER_GROUP(sb);
int block = ext3_new_block(handle,
- inode, goal,
0, 0,
&error);
+ inode, goal, &error);
if (error)
goto cleanup;
ea_idebug(inode, "creating block %d", block);
if (error)
goto cleanup;
ea_idebug(inode, "creating block %d", block);
@@
-875,8
+875,9
@@
ext3_xattr_set(struct inode *inode, int name_index, const char *name,
const void *value, size_t value_len, int flags)
{
handle_t *handle;
const void *value, size_t value_len, int flags)
{
handle_t *handle;
- int error;
+ int error
, retries = 0
;
+retry:
handle = ext3_journal_start(inode, EXT3_DATA_TRANS_BLOCKS);
if (IS_ERR(handle)) {
error = PTR_ERR(handle);
handle = ext3_journal_start(inode, EXT3_DATA_TRANS_BLOCKS);
if (IS_ERR(handle)) {
error = PTR_ERR(handle);
@@
-886,6
+887,9
@@
ext3_xattr_set(struct inode *inode, int name_index, const char *name,
error = ext3_xattr_set_handle(handle, inode, name_index, name,
value, value_len, flags);
error2 = ext3_journal_stop(handle);
error = ext3_xattr_set_handle(handle, inode, name_index, name,
value, value_len, flags);
error2 = ext3_journal_stop(handle);
+ if (error == -ENOSPC &&
+ ext3_should_retry_alloc(inode->i_sb, &retries))
+ goto retry;
if (error == 0)
error = error2;
}
if (error == 0)
error = error2;
}