The following condition at btrfs_dirty_inode() is redundant:
  if (ret && (ret == -ENOSPC || ret == -EDQUOT))
The first check for a non-zero 'ret' value is pointless, we can simplify
this to simply:
  if (ret == -ENOSPC || ret == -EDQUOT)
Not only this makes it easier to read, it also slightly reduces the text
size of the btrfs kernel module:
  $ size fs/btrfs/btrfs.ko.before
     text	   data	    bss	    dec	    hex	filename
  
1641400	 168265	  16864	
1826529	 1bdee1	fs/btrfs/btrfs.ko.before
  $ size fs/btrfs/btrfs.ko.after
     text	   data	    bss	    dec	    hex	filename
  
1641224	 168181	  16864	
1826269	 1bdddd	fs/btrfs/btrfs.ko.after
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
                return PTR_ERR(trans);
 
        ret = btrfs_update_inode(trans, root, inode);
-       if (ret && (ret == -ENOSPC || ret == -EDQUOT)) {
+       if (ret == -ENOSPC || ret == -EDQUOT) {
                /* whoops, lets try again with the full transaction */
                btrfs_end_transaction(trans);
                trans = btrfs_start_transaction(root, 1);