This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / fs / ext3 / xattr.c
index 97b74fe..b766908 100644 (file)
@@ -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,
-                               inode, goal, 0, 0, &error);
+                               inode, goal, &error);
                        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;
-       int error;
+       int error, retries = 0;
 
+retry:
        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);
+               if (error == -ENOSPC &&
+                   ext3_should_retry_alloc(inode->i_sb, &retries))
+                       goto retry;
                if (error == 0)
                        error = error2;
        }