Whamcloud - gitweb
b=16226 (patch by bzzz)
authorkalpak <kalpak>
Sat, 19 Jul 2008 13:49:08 +0000 (13:49 +0000)
committerkalpak <kalpak>
Sat, 19 Jul 2008 13:49:08 +0000 (13:49 +0000)
i=johann
i=kalpak

if we fail to insert extent then free the blocks

lustre/lvfs/fsfilt_ext3.c

index 192840f..fbbd415 100644 (file)
@@ -950,9 +950,13 @@ static int ext3_ext_new_extent_cb(struct ext3_ext_base *base,
         nex.ee_len = count;
         err = ext3_ext_insert_extent(handle, base, path, &nex);
         if (err) {
-                CERROR("can't insert extent: %d\n", err);
-                /* XXX: export ext3_free_blocks() */
-                /*ext3_free_blocks(handle, inode, nex.ee_start, nex.ee_len, 0);*/
+                /* free data blocks we just allocated */
+                /* not a good idea to call discard here directly,
+                 * but otherwise we'd need to call it every free() */
+#ifdef EXT3_MB_HINT_GROUP_ALLOC
+                ext3_mb_discard_inode_preallocations(inode);
+#endif
+                ext3_free_blocks(handle, inode, nex.ee_start, nex.ee_len, 0);
                 goto out;
         }