ext4: handle ext4_mark_inode_dirty errors
[sfrench/cifs-2.6.git] / fs / ext4 / xattr.c
index 01ba66373e97830bc3183a42ef9e0a4009e3ebe3..9b29a40738acc03b3aad5a0c934fdfc6c84425cd 100644 (file)
@@ -1327,7 +1327,7 @@ static int ext4_xattr_inode_write(handle_t *handle, struct inode *ea_inode,
        int blocksize = ea_inode->i_sb->s_blocksize;
        int max_blocks = (bufsize + blocksize - 1) >> ea_inode->i_blkbits;
        int csize, wsize = 0;
-       int ret = 0;
+       int ret = 0, ret2 = 0;
        int retries = 0;
 
 retry:
@@ -1385,7 +1385,9 @@ retry:
        ext4_update_i_disksize(ea_inode, wsize);
        inode_unlock(ea_inode);
 
-       ext4_mark_inode_dirty(handle, ea_inode);
+       ret2 = ext4_mark_inode_dirty(handle, ea_inode);
+       if (unlikely(ret2 && !ret))
+               ret = ret2;
 
 out:
        brelse(bh);