EGit hackfest @ SAP Walldorf

Last week I spent in Walldorf (Germany) at EGit hackfest. I want to attend on all sessions therefore I’ve decided to go there day before and leave Walldorf day after event. Therefore I had some time that I can spent on short tours in Walldorf and Frankfurt. Here is a short summarization things that we manage to achieve during this time in case of synchronize view in EGit.

With Christian Halstrick we manage to speed up synchronization operation. Our starting point was comparing branch stable-0.7 against stable-0.10 from EGit repository with at the beginning takes around 2 minutes. Then using yourkit profiler we manage to reduce synchronization time down to less then 20 seconds on the same data set! The first set of patches that gives most acceleration were already merged into master and are available in latest nightly build of EGit, but there are also some open change sets in gerrit pending for review that should give some performance boost. Even with this improvements synchronization on some large repositories can take more then 5 minures, therefore this topic is still open for me and I’ll continue to hacking on it in feature. Currently one of the slowest part is mapping path of file/folder from git into eclipse’s workspace resource, but this should be improved by new implementation of IWorkspaceRoot.getFileForLocation()/IWorkspaceRoot.getContainerForLocation() in Eclipse 3.7 ;>

Second task that I manage to start working on during hack sessions is supporting context menu action in synchronization. I didn’t finish it but most of code is currently written. I only need to improve some things and test it. I think that in week or two this change should appear in gerrit.

This was great opportunity for meet persons that I only know from mailing list or code reviews in gerrit, especially to meet Matthias Sohn and Stefan Lay 😉 and also rest of EGit team members ;>

I want to thanks Matthias Sohn for organizing such great event and SAP for hosting it!. Many thanks also for my employer NCDC for refunding me part of my trip.

Backported fix suspend/resume issue in brcmsmac

Few days ago my Macbook just died therefore I was forced to buy a new laptop cialis overnight. After a quick overview on marked I’ve decided to buy an Toshiba Portege R700 with Intel i5 processor. Unfortunately it has an Broadcom 4727 Wi-Fi card with is only supported by staging brcm80211 module. Generally it works pretty well on 2.6.37 kernel, if you shutdown and power up laptop, but when  you use suspend like I do it doesn’t get up after resume. The module needs to be reloaded to work again.

Thanks to Arend van Spriel this issue were fixed but patch that was send on linux-wireless mailing list doesn’t apply on vanilla 2.6.37 sources.  To get this working I decided to back port this patch, and it appears to be was very simple task ;). So if you are have similar problems with BCM4727 on 2.6.37 like I had here is a patch that clearly apples on 2.6.37 and fix this issue.

diff -uNr drivers-orig/staging/brcm80211/sys/wl_mac80211.c drivers/staging/brcm80211/sys/wl_mac80211.c
--- drivers-orig/staging/brcm80211/sys/wl_mac80211.c   2011-01-05 01:50:19.000000000 +0100
+++ drivers/staging/brcm80211/sys/wl_mac80211.c    2011-01-13 17:28:50.000000000 +0100
@@ -299,7 +299,6 @@
    wl_info_t *wl = hw->priv;
    ASSERT(wl);
    WL_LOCK(wl);
-  wl_down(wl);
    ieee80211_stop_queues(hw);
    WL_UNLOCK(wl);
 
@@ -336,6 +335,14 @@
 static void
 wl_ops_remove_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
 {
+  struct wl_info *wl;
+
+  wl = HW_TO_WL(hw);
+
+  /* put driver in down state */
+  WL_LOCK(wl);
+  wl_down(wl);
+  WL_UNLOCK(wl);
    return;
 }
 
@@ -1356,7 +1363,6 @@
    return 0;
 }
 
-#ifdef LINUXSTA_PS
 static int wl_suspend(struct pci_dev *pdev, pm_message_t state)
 {
    wl_info_t *wl;
@@ -1371,11 +1377,12 @@
        return -ENODEV;
    }
 
+  /* only need to flag hw is down for proper resume */
    WL_LOCK(wl);
-  wl_down(wl);
    wl->pub->hw_up = false;
    WL_UNLOCK(wl);
-  pci_save_state(pdev, wl->pci_psstate);
+
+  pci_save_state(pdev);
    pci_disable_device(pdev);
    return pci_set_power_state(pdev, PCI_D3hot);
 }
@@ -1399,7 +1406,7 @@
    if (err)
        return err;
 
-  pci_restore_state(pdev, wl->pci_psstate);
+  pci_restore_state(pdev);
 
    err = pci_enable_device(pdev);
    if (err)
@@ -1411,13 +1418,12 @@
    if ((val & 0x0000ff00) != 0)
        pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
 
-  WL_LOCK(wl);
-  err = wl_up(wl);
-  WL_UNLOCK(wl);
-
+  /*
+   *  done. driver will be put in up state
+   *  in wl_ops_add_interface() call.
+   */
    return err;
 }
-#endif                /* LINUXSTA_PS */
 
 static void wl_remove(struct pci_dev *pdev)
 {
@@ -1452,10 +1458,8 @@
 static struct pci_driver wl_pci_driver = {
  .name  = "brcm80211",
  .probe = wl_pci_probe,
-#ifdef LINUXSTA_PS
  .suspend = wl_suspend,
  .resume  = wl_resume,
-#endif                /* LINUXSTA_PS */
  .remove   = __devexit_p(wl_remove),
  .id_table = wl_id_table,
 };
diff -uNr drivers-orig/staging/brcm80211/sys/wl_mac80211.h drivers/staging/brcm80211/sys/wl_mac80211.h
--- drivers-orig/staging/brcm80211/sys/wl_mac80211.h   2011-01-05 01:50:19.000000000 +0100
+++ drivers/staging/brcm80211/sys/wl_mac80211.h    2011-01-13 17:17:39.000000000 +0100
@@ -84,9 +84,7 @@
    unsigned long flags;        /* current irq flags */
 #endif             /* BCMSDIO */
    bool resched;       /* dpc needs to be and is rescheduled */
-#ifdef LINUXSTA_PS
-  u32 pci_psstate[16];   /* pci ps-state save/restore */
-#endif
+
    /* RPC, handle, lock, txq, workitem */
 #ifdef WLC_HIGH_ONLY
    rpc_info_t *rpc;    /* RPC handle */

BTW. This laptop works pretty good on linux. All parts seams to be working properly (I didn’t tested bluetooth, and finger print scaner because I don’t use it), there are only problems after resuming system from suspend like above described problem with BCM4727 (other problems are connected with back light changing and graphics performance).

UPDATE:

It seams that this patch is included in kernel 2.6.38-rc3

Java4People 2011 – call for papers!

Java4People is a free polish conference organized in Szczecin (Poland) by and for Java enthusiasts. We already have had two editions in 2008 and 2009, now it is time to launch call for papers for upcoming 2011 edition.

The main topic of this edition is “JVM languages” and everything connected with it (frameworks, IDEs, etc.), but if you have an interesting presentation about other topic connected with Java don’t hesitate to share it with us!

From my point of view I would like to hear about:

and of course about web or application frameworks’ that was build on top of those languages.

We are open for any propositions, if you have one that you would like to present on Java4People don’t hesitate to contact me (dariusz < a t > luksza < dot > org) or leader of Szczecin Java User Group Leszek Gruchala (leszek < a t > gruchala < dot > eu).

Rebase support in EGit

Thanks to Mathias Kinzler EGit have initial support for rebasing. Currently only the simple scenario is supported, when there are no conflicts between actual and given branch. Currently the only place from with rebase action can be launched is in Git Repositories view, the ‘Rebase’ option is available on each branch node for given repository.

If you want to test this new feature you should install EGit for ours “Bleeding Edge Builds” update site.

Get a free private Git hosting!

 

I think that every one knows GitHub and as you should know that we can host there for free ours open source project’s but if we want to have a private repository we should pay for it. It seams fair … but what if I don’t want to pay ? I can setup my own server somewhere or … use one of on-line file hosting service like dropbox (for free we get here 2GB, this is lots of space for git repositories ;)).

How it is possible? It is only about files. As we all know git keeps everything inside .git folder, therefore we can put it in dropbox. To do it we only need to have an account and configured dropbox-folder on ours hard drive, and here is recipe:

  1. First of all we should add new remote to our git remote configuration, I’ll call it dropbox:
    git remote add dropbox file:///home/lock/path/to/dropbox-folder/project.git
  2. Now we should create folder project.git
  3. Launch a terminal and enter project.git folder
  4. Run:
    git init --bare
  5. Go back to yours project directory and push into dropbox:
    git push dropbox

Viola! Dropbox daemon will automatically synchronize with remote “repository”. And there is another feature of this solution, you can share this folder with yours friends!

But there are also some disadvantages:

  1. No access control – if you share yours project with friend she (or he) have full access and can even delete everything … but you always have yours local copy
  2. No web interface – this obvious … I think 😉

This solution I figure out few minutes ago and use it to backup my BS project, and it seams to be working very well 😉

UPDATE:

As Tim said it is also possible to have a free Git hosting on bettercodes.org. To be honest I didn’t check it because solution with dropbox meets my needs.

NEXT UPDATE:

According to Machu’s comment, there is also assembla.com that gives 2GB for SVN or Git repository.