]> git.neil.brown.name Git - LaFS.git/commitdiff
Rearrange if structure in lafs_cluster_allocate
authorNeilBrown <neilb@suse.de>
Tue, 29 Jun 2010 11:40:57 +0000 (21:40 +1000)
committerNeilBrown <neilb@suse.de>
Fri, 2 Jul 2010 23:31:19 +0000 (09:31 +1000)
try to get fewer indentation levels.

Signed-off-by: NeilBrown <neilb@suse.de>
cluster.c

index abfdb516db5d9c29205a9079bb18b041ac45b931..00d508b5c5ad7b5d6557756714d588314bf82aa9 100644 (file)
--- a/cluster.c
+++ b/cluster.c
@@ -766,26 +766,25 @@ int lafs_cluster_allocate(struct block *b, int cnum)
                        avail = 0;
                used = cluster_insert(&wc->slhead, &wc->clhead, b, avail);
 
-               if (used < 0) {
-                       /* won't fit */
-                       // printk("Wont fit - used = %d\n", used);
-                       if (wc->slhead.b == NULL) {
-                               err = new_segment(fs, cnum);
-                               if (err) {
-                                       /* No cleaner segments - this will have to go
-                                        * out with a checkpoint.
-                                        * Block is still 'dirty' - just clear 
-                                        * writeback flag.
-                                        */
-                                       lafs_writeback_done(b);
-                                       putref(b, MKREF(cluster));
-                                       mutex_unlock(&wc->lock);
-                                       return -ENOSPC;
-                               }
-                       } else
-                               cluster_flush(fs, cnum);
-               } else
+               if (used >= 0)
                        lafs_io_wake(b);
+               else if (wc->slhead.b)
+                       cluster_flush(fs, cnum);
+               else {
+                       err = new_segment(fs, cnum);
+                       if (err) {
+                               /* No cleaner segments - this will have to go
+                                * out with a checkpoint.
+                                * Block is still 'dirty' - just clear 
+                                * writeback flag.
+                                */
+                               lafs_writeback_done(b);
+                               putref(b, MKREF(cluster));
+                               mutex_unlock(&wc->lock);
+                               return -ENOSPC;
+                       }
+               }
+
        } while (used < 0);
 
        if (used > 0)