|
About ::
TODO ::
Blog ::
RSS ::
Old blog ::
Projects ::
GIT ::
Gallery ::
Notes
Mon, 13 Oct 2008
Massive documentation update for the distributed storage. New release.
$ git commit -a -m "Documentation update." Created commit 4886f36: Documentation update. 7 files changed, 476 insertions(+), 18 deletions(-) $ git-diff-tree -r --stat origin master warning: refname 'origin' is ambiguous. drivers/block/Kconfig | 2 + drivers/block/Makefile | 2 + drivers/block/dst/Kconfig | 14 + drivers/block/dst/Makefile | 3 + drivers/block/dst/crypto.c | 731 +++++++++++++++++++++++++++++ drivers/block/dst/dcore.c | 963 +++++++++++++++++++++++++++++++++++++++ drivers/block/dst/export.c | 662 ++++++++++++++++++++++++++ drivers/block/dst/state.c | 838 ++++++++++++++++++++++++++++++++++ drivers/block/dst/thread_pool.c | 345 ++++++++++++++ drivers/block/dst/trans.c | 335 ++++++++++++++ include/linux/connector.h | 4 +- include/linux/dst.h | 572 +++++++++++++++++++++++ 12 files changed, 4470 insertions(+), 1 deletions(-)As usual one can grab new release from the archive or via GIT tree. /devel/dst :: Link / Comments () Sun, 12 Oct 2008
Back to the roots.
/devel/other :: Link / Comments ()
Meanwhile at appartment development side.
/devel/flat :: Link / Comments () Fri, 10 Oct 2008
How to get back 100 MB/s in several clicks or fixing tbench regression for fun.
/devel/other :: Link / Comments () Thu, 09 Oct 2008
An interesting observation about tbench regression.
/devel/other :: Link / Comments () Wed, 08 Oct 2008One week of real work. Seven releases of different projects. One idea. One implementation. One project. This day has come: the new, completely rewritten locking subsystem in POHMELFS. The release day! Following changes were made:
Enjoy! /devel/fs :: Link / Comments () Tue, 07 Oct 2008
Valgrind support for netchannels.
/devel/networking :: Link / Comments ()
POHMELFS locking testing.
$ ./elliptics -c ./elliptics.conf 2008-10-07 01:03:39.430198 12778 Logging has been started. 2008-10-07 01:03:39.430559 12778 Successfully initialized 'sha1' hash. 2008-10-07 01:03:39.430641 12778 Node id: b551803fd74ff5590ed38f6ce8a10a2e577b2a9e 2008-10-07 01:03:39.431076 12778 Server is now listening at 127.0.0.1:1025. $ cat elliptics.conf # # This is a simple config file for the elliptics network. # Note, that spaces are skipped before and after the '=' delimiter. # log = /dev/stdout hash = sha1 id = This is id string #numeric_id = 1234567890abcdefffffffffffffffffffffffa root = /tmp addr = 127.0.0.1:1025:2 #addr = ::1:1025:10That will be an excellent project (maybe even my best one to date :), which will be used in... More details when things are ready. I like the idea, so maybe it will give a name for my new site, like noelliptics.net. Not yet though. /devel/fs :: Link / Comments () Mon, 06 Oct 2008
New distributed storage release.
Enjoy! Asked for inclusion again. Let's make bets on number of comments for the patch :) /devel/dst :: Link / Comments () Sun, 05 Oct 2008
Civilization sometimes visits even me.
![]() "Cezares Illusion" That's how my shower cabin and bathroom corner look now. It took me virtually years to make this, but practically a day to install the cabin, and still bathroom is not completed yet. I need to finish tile glueing and water hatch installation. Also need to complete brick tiles glueing (roughly 7 sqare meters of walls in kitchen), which likely will be done with bathroom glueing. ![]() There is a lot of work, but actually not that much as may look from the first view. I just need a special development mood to start doing it good and fast, which, as a muse, does not come on demand. /devel/flat :: Link / Comments () Thu, 02 Oct 2008
POHMELFS got new locking subsystem.
/devel/fs :: Link / Comments () Wed, 01 Oct 2008
Tbench regression. SLAB vs SLUB.
![]() As was expected, turning off TSO/GSO does not fix the whole issue, performance was increased from 366 MB/s upto 381 MB/s, which is still less than 398 MB/s for 2.6.26-slub. Another interesting issue I found, is SLAB vs SLUB difference. The former is always faster (about 5-7 MB/s difference): 366 vs 361 MB/s for 2.6.27-rc7 and 381 vs 374 MB/s when TSO and GSO are turned off. Pekka Enberg suggested to revert 5595cffc8248e4672c5803547445e85e4053c8fc commit, which could result in this performance degradation, but without this commit SLUB behaves a little bit slower: 372 vs 374 MB/s. I will try to find out why there is a huge drop between 2.6.23 and 2.6.24 (54 MB/s) next. /devel/other :: Link / Comments () Mon, 29 Sep 2008
First fix for the tbench over loopback regression.
current: 187 MB/s patched: 194 MB/sPatch is rather trivial: it disables TSO and GSO in loopback and generically on devices which are capable of scatter-gather (where it was automatically enabled by e5a4a72d4f8 commit, which I biseced to be guilty). Actually TSO disablement part provided more gain than GSO on SG devices. Idea behind patches is clear: we create bigger packet, so we should have smaller overhead of its processing, but apparently GSO/TSO packet creation overhead dominates in loopback at least. My all three (big) test machines died in various (apparently unbootable) bisections, so I tested it in small and very slow Xen domain. Because of that I did not run 2.6.22 kernel, since git operations and compilation take ages on this 'machine'. For example I was only able to perform about dozen or so git checkous/resets/bisections and compilations for the whole day. I've posted patch to the netdev@, let's see the result. Forgot to mention, that I wanted to sell this patch for the DST, POHMELFS or netchannels patch review next time I will post them :) /devel/other :: Link / Comments () Sun, 28 Sep 2008
Tbench Linux regressions with time.
![]() Yes, we suck! I decided to try to fix this issues, and started to bisect 2.6.22->2.6.23 and 2.6.26->2.6.27 on two identical machines, which have 4 logical CPUs (HT enabled) and 4 GB of RAM. Result was quite surprising: second bisection in the 22->23 froze machine in the middle of the compilation, and first bisection in the 26->27 did not boot. Since I ran it remotely, no progress on this til tomorrow. /devel/other :: Link / Comments () Sat, 27 Sep 2008
POHMELFS cache coherency protocol.
/devel/fs :: Link / Comments () Fri, 26 Sep 2008
New failed ipw2100 interrupt and its races.
[41773.200686] ipw2100: Fatal interrupt. Scheduling firmware restart. [41773.200707] eth1: Fatal error value: 0x500185B8, address: 0x08004501, inta: 0x40000000 [41773.200810] ipw2100 0000:02:04.0: PCI INT A disabled [41773.203110] ipw2100: IRQ INTA == 0xFFFFFFFF [41773.224446] ipw2100: IRQ INTA == 0xFFFFFFFF [41773.245781] ipw2100: IRQ INTA == 0xFFFFFFFF [41773.249360] ipw2100 0000:02:04.0: enabling device (0000 -> 0002) [41773.249384] ipw2100 0000:02:04.0: PCI INT A -> Link[C0C8] -> GSI 11 (level, low) -> IRQ 11 [41773.249426] ipw2100 0000:02:04.0: restoring config space at offset 0x1 (was 0x2900002, writing 0x2900006)This happens during PCI ipw2100 device disablement in the reset handler, so when interrupt handler sees that, it bails out. It should be generally ok, but I found a different thing: there is a race between interrupt handler (handler itself and related processing tasklet) and reset code. The latter disables interrupts before starting to turn adapter on, but interrupt handler can run right now on given cpu and can schedule the tasklet, so its disablement does not prevent parallel reading and writing of the various registers. IRQ processing tasklet does register reading and writing under the lock with interrupts turned off, but reset tasklet does not protect initialization path against it, so I wonder, what may happen in this case. Since register reading and writing happens from absolute addresses (I meant there is no need to write address register first), this maybe not a problem, but still race exists and theoretically can harm the system. Similar unguarded accesses exist in ipw2100_wx_event_work() handler, and also there is unguarded status field setting
in various places in the driver, which can harm the driver's behaviour too.So, maybe I decided to blame firmware a little bit early, although found things may be harmless. I will try to figure this out later tomorrow. /devel/networking/ipw2100 :: Link / Comments () Thu, 25 Sep 2008
ipw2100 fatal interrupt: playing with power states.
eth1: Fatal error value: 0x50018584, address: 0x61C00000, inta: 0x40000000 eth1: Fatal error value: 0x50018584, address: 0x61C00000, inta: 0x40000000 eth1: Fatal error value: 0x5000CEE4, address: 0x61C00000, inta: 0x40000000 eth1: Fatal error value: 0x50018584, address: 0x61C00000, inta: 0x40000000 eth1: Fatal error value: 0x5000CEE4, address: 0x61C00000, inta: 0x40000000 eth1: Fatal error value: 0x50018584, address: 0x61C00000, inta: 0x40000000 eth1: Fatal error value: 0x50018584, address: 0x61C00000, inta: 0x40000000 eth1: Fatal error value: 0x5000CEE4, address: 0x61C00000, inta: 0x40000000 eth1: Fatal error value: 0x50018584, address: 0x61C00000, inta: 0x40000000 eth1: Fatal error value: 0x50018584, address: 0x61C00000, inta: 0x40000000They did not follow one after another though. Different error values likely mean, that there is no any correlation between values and addresses, so this information is useless. I added power state changes to the reset function, so now it does something like that: [ 897.661002] ipw2100: Fatal interrupt. Scheduling firmware restart. [ 897.661021] eth1: Fatal error value: 0x30016C44, address: 0x601F7C00, inta: 0x40000000 [ 897.664712] ipw2100 0000:02:04.0: PCI INT A disabled [ 897.712041] ipw2100 0000:02:04.0: enabling device (0000 -> 0002) [ 897.713549] ipw2100 0000:02:04.0: PCI INT A -> Link[C0C8] -> GSI 11 (level, low) -> IRQ 11 [ 897.713595] ipw2100 0000:02:04.0: restoring config space at offset 0x1 (was 0x2900002, writing 0x2900006) [ 954.646319] ipw2100: Fatal interrupt. Scheduling firmware restart. [ 954.646338] eth1: Fatal error value: 0x5000CF10, address: 0x61A00000, inta: 0x40000000 [ 954.646429] ipw2100 0000:02:04.0: PCI INT A disabled [ 954.692041] ipw2100 0000:02:04.0: enabling device (0000 -> 0002) [ 954.692063] ipw2100 0000:02:04.0: PCI INT A -> Link[C0C8] -> GSI 11 (level, low) -> IRQ 11 [ 954.692103] ipw2100 0000:02:04.0: restoring config space at offset 0x1 (was 0x2900002, writing 0x2900006) [ 968.585409] ipw2100: Fatal interrupt. Scheduling firmware restart. [ 968.585429] eth1: Fatal error value: 0x5000C9D0, address: 0x57E00500, inta: 0x40000000 [ 968.585517] ipw2100 0000:02:04.0: PCI INT A disabled [ 968.632037] ipw2100 0000:02:04.0: enabling device (0000 -> 0002) [ 968.632059] ipw2100 0000:02:04.0: PCI INT A -> Link[C0C8] -> GSI 11 (level, low) -> IRQ 11 [ 968.632099] ipw2100 0000:02:04.0: restoring config space at offset 0x1 (was 0x2900002, writing 0x2900006) [ 972.269514] ipw2100 0000:02:04.0: PCI INT A disabled [ 972.316041] ipw2100 0000:02:04.0: enabling device (0000 -> 0002) [ 972.316400] ipw2100 0000:02:04.0: PCI INT A -> Link[C0C8] -> GSI 11 (level, low) -> IRQ 11 [ 972.316446] ipw2100 0000:02:04.0: restoring config space at offset 0x1 (was 0x2900002, writing 0x2900006)As we can see, fatal interrupts did not dissapear, and are actually as frequent as before. Also got this lines: [ 2032.560413] ipw2100: exit - failed to send CARD_DISABLE command [ 2032.560449] ipw2100: exit - failed to send CARD_DISABLE command [ 2032.560491] ipw2100: exit - failed to send CARD_DISABLE command [ 2032.560593] ipw2100: exit - failed to send CARD_DISABLE commandOne after another, which does not provide me any clue though. I've started several big torrent downloads/seeds as a big load, maybe card somehow differentiates different flows, so this test should be more heavy than lots of pings. First time I noticed fatal interrupt problem with this kind of load, when card not only stopped to work, but also printed some goodbay message. So far conclusion is not very optimistic: fatal interrupts happen always, no matter what magic is enabled in the reset, which already tells that firmware is broken. Hopefully additional reset games with power management will allow card to work, even with those interrupts. Time will tell. /devel/networking/ipw2100 :: Link / Comments () Wed, 24 Sep 2008At kernel summit. Check new ones! /devel/other :: Link / Comments ()
New DST release.
As usual, DST is available from archive and via git tree. /devel/dst :: Link / Comments ()
First ipw2100 testing: fatal interrupt.
[ 613.960164] ipw2100: exit - failed to send CARD_DISABLE command [ 624.456033] eth1: no IPv6 routers present [ 690.721534] ipw2100: Fatal interrupt. Scheduling firmware restart. [ 690.721554] eth1: Fatal error value: 0x5000C97C, address: 0x100E201C, inta: 0x40000000 [ 690.721580] ------------[ cut here ]------------ [ 690.721587] WARNING: at drivers/net/wireless/ipw2100.c:3188 ipw2100_irq_tasklet+0x8fe/0x9b0 [ipw2100]() [ 690.721736] Pid: 0, comm: swapper Not tainted 2.6.27-rc7-mainline #2 [ 690.721744] [So, this fatal error value and address numbers do not tell me anything, but since they are always different on different addresses, I think firmware just loses its mind and stops responding. The first line, where ipw2100 fails to send a command, was obtained during ifdown of the interface. I never saw it before, but do not think
it is related though.So, I need to move to the office and want to make some distributed storage changes, namely fix an issue with name collision (kernel already has a dvb card, which module is called dst.ko), and implement better minor number allocation
scheme for the imported devices, since right now after node was created and distroyed,
new one will not get the same number, but continuously increasing one, which looks
confusing and may bring a sysfs initialization error (when system tries to
register kobject with existing name).I will continue ipw2100 experiments today's night if will not fall asleep again because of jetlag. Stay tuned! /devel/networking/ipw2100 :: Link / Comments () Tue, 23 Sep 2008
2008 Linux Kernel Summit photos.
At kernel summit. Last couple of photos were made at Linux Plumbers Conference (filesystem bof). Not all of them got into the gallery though, I need to try to find missing bits. I needed to get a real flash instead and do not use build-in one, which sometimes mangled the images... Got a look? /devel/other :: Link / Comments () Mon, 22 Sep 2008
Do you know why mammoths are dead?
I'm sorry, I'm not going to waste time on this if you keep acting this dishonest; welcome to my mail filter...If we pretend to not know about the problem, problem comes and hits us out of stand. /devel/other :: Link / Comments () Sun, 21 Sep 2008
Mark IPW2100 driver as broken in linux kernel.
/devel/other :: Link / Comments () Wed, 17 Sep 2008
A small gift from Gumstix.
Texas Instruments X-Loader 1.4.2 (Sep 10 2008 - 08:47:04) Reading boot sector Loading u-boot.bin from mmc U-Boot 1.3.4 (Sep 10 2008 - 08:47:30) OMAP3503-GP rev 2, CPU-OPP2 L3-165MHz Gumstix Overo board + LPDDR/NAND DRAM: 128 MB NAND: 256 MiB *** Warning - bad CRC or NAND, using default environment In: serial Out: serial Err: serial Hit any key to stop autoboot: 0 reading uImage 2501840 bytes read ## Booting kernel from Legacy Image at 82000000 ... Image Name: Angstrom/2.6.27-rc6+r27+giteddca Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2501776 Bytes = 2.4 MB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux............................................................................ .................................................. Linux version 2.6.27-rc6-omap1 (sakoman@tera) (gcc version 4.2.1) #1 Wed Sep 10 20:32:01 PDT 2008 CPU: ARMv7 Processor [411fc082] revision 2 (ARMv7), cr=00c5387f Machine: Gumstix Overo Memory policy: ECC disabled, Data cache writeback OMAP3430 ES2.2 SRAM: Mapped pa 0x40200000 to va 0xd7000000 size: 0x100000 CPU0: L1 I VIPT cache. Caches unified at level 2, coherent at level 3 CPU0: Level 1 cache is separate instruction and data CPU0: I cache: 16384 bytes, associativity 4, 64 byte lines, 64 sets, supports RA CPU0: D cache: 16384 bytes, associativity 4, 64 byte lines, 64 sets, supports RA WB WT CPU0: Level 2 cache is unified CPU0: unified cache: 262144 bytes, associativity 8, 64 byte lines, 512 sets, supports WA RA WB WT Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 Kernel command line: setenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 Clocking rate (Crystal/DPLL/ARM core): 26.0/331/500 MHz GPMC revision 5.0 IRQ: Found an INTC at 0xd8200000 (revision 4.0) with 96 interrupts Total of 96 interrupts on 1 active controller OMAP34xx GPIO hardware version 2.5 PID hash table entries: 512 (order: 9, 2048 bytes) OMAP clockevent source: GPTIMER1 at 32768 Hz Console: colour dummy device 80x30 Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) Memory: 128MB = 128MB total Memory: 124372KB available (4088K code, 368K data, 916K init) SLUB: Genslabs=12, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 Calibrating delay loop... 499.92 BogoMIPS (lpj=1949696) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok net_namespace: 488 bytes NET: Registered protocol family 16 Found NAND on CS0 Registering NAND on CS0 OMAP DMA hardware revision 4.0 USB: No board-specific platform config found i2c_omap i2c_omap.1: bus 1 rev3.12 at 2600 kHz i2c_omap i2c_omap.3: bus 3 rev3.12 at 400 kHz TWL4030: TRY attach Slave TWL4030-ID0 on Adapter OMAP I2C adapter [1] TWL4030: TRY attach Slave TWL4030-ID1 on Adapter OMAP I2C adapter [1] TWL4030: TRY attach Slave TWL4030-ID2 on Adapter OMAP I2C adapter [1] TWL4030: TRY attach Slave TWL4030-ID3 on Adapter OMAP I2C adapter [1] Initialized TWL4030 USB module SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb musb_hdrc: version 6.0, pio, host, debug=0 musb_hdrc: USB Host mode controller at d80ab000 using PIO, IRQ 92 musb_hdrc musb_hdrc: MUSB HDRC host driver musb_hdrc musb_hdrc: new USB bus registered, assigned bus number 1 usb usb1: configuration #1 chosen from 1 choice hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: MUSB HDRC host driver usb usb1: Manufacturer: Linux 2.6.27-rc6-omap1 musb-hcd usb usb1: SerialNumber: musb_hdrc Bluetooth: Core ver 2.13 NET: Registered protocol family 31 Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 4096 (order: 3, 32768 bytes) TCP bind hash table entries: 4096 (order: 2, 16384 bytes) TCP: Hash tables configured (established 4096 bind 4096) TCP reno registered NET: Registered protocol family 1 VFS: Disk quotas dquot_6.5.1 Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) JFFS2 version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. msgmni has been set to 243 io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered (default) omapfb: configured for panel overo omapfb: DISPC version 3.0 initialized Console: switching to colour frame buffer device 128x48 omapfb: Framebuffer initialized. Total vram 1572864 planes 1 omapfb: Pixclock 54000 kHz hfreq 45.1 kHz vfreq 57.7 Hz Serial: 8250/16550 driver4 ports, IRQ sharing enabled serial8250.0: ttyS0 at MMIO 0x4806a000 (irq = 72) is a ST16654 serial8250.0: ttyS1 at MMIO 0x4806c000 (irq = 73) is a ST16654 serial8250.0: ttyS2 at MMIO 0x49020000 (irq = 74) is a ST16654 console [ttyS2] enabled brd: module loaded loop: module loaded usbcore: registered new interface driver asix usbcore: registered new interface driver cdc_ether usbcore: registered new interface driver usb8xxx libertas_sdio: Libertas SDIO driver libertas_sdio: Copyright Pierre Ossman i2c /dev entries driver TWL4030 GPIO Demux: IRQ Range 384 to 402, Initialization Success input: triton2-pwrbutton as /class/input/input0 triton2 power button driver initialized Driver 'sd' needs updating - please use bus_type methods omap2-nand driver initializing NAND device: Manufacturer ID: 0x2c, Chip ID: 0xba (Micron NAND 256MiB 1,8V 16-bit) cmdlinepart partition parsing not available Creating 5 MTD partitions on "omap2-nand": 0x00000000-0x00080000 : "xloader" 0x00080000-0x00240000 : "uboot" 0x00240000-0x00280000 : "uboot environment" 0x00280000-0x00680000 : "linux" 0x00680000-0x10000000 : "rootfs" ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 2 ehci-omap ehci-omap.0: irq 77, io mem 0x48064800 ehci-omap ehci-omap.0: USB 0.0 started, EHCI 1.00, driver 10 Dec 2004 usb usb2: configuration #1 chosen from 1 choice hub 2-0:1.0: USB hub found hub 2-0:1.0: 3 ports detected usb usb2: New USB device found, idVendor=1d6b, idProduct=0002 usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb2: Product: OMAP-EHCI Host Controller usb usb2: Manufacturer: Linux 2.6.27-rc6-omap1 ehci_hcd usb usb2: SerialNumber: ehci-omap.0 Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. mice: PS/2 mouse device common for all mice twl4030_rtc twl4030_rtc: rtc core: registered twl4030_rtc as rtc0 twl4030_rtc twl4030_rtc: Power up reset detected. twl4030_rtc twl4030_rtc: Enabling TWL4030-RTC. OMAP Watchdog Timer Rev 0x31: initial timeout 60 sec Bluetooth: HCI UART driver ver 2.2 Bluetooth: HCI H4 protocol initialized Bluetooth: HCI BCSP protocol initialized Bluetooth: Broadcom Blutonium firmware driver ver 1.2 usbcore: registered new interface driver bcm203x Bluetooth: Digianswer Bluetooth USB driver ver 0.10 usbcore: registered new interface driver bpa10x mmci-omap mmci-omap.2: No Slots usbcore: registered new interface driver usbhid usbhid: v2.6:USB HID core driver Advanced Linux Sound Architecture Driver Version 1.0.17. usbcore: registered new interface driver snd-usb-audio ASoC version 0.13.2 overo SoC init TWL4030 Audio Codec init asoc: twl4030 <-> omap-mcbsp-dai mapping ok ALSA device list: #0: overo (twl4030) oprofile: using timer interrupt. TCP cubic registered NET: Registered protocol family 17 NET: Registered protocol family 15 Bluetooth: L2CAP ver 2.11 Bluetooth: L2CAP socket layer initialized Bluetooth: SCO (Voice Link) ver 0.6 Bluetooth: SCO socket layer initialized Bluetooth: RFCOMM socket layer initialized Bluetooth: RFCOMM TTY layer initialized Bluetooth: RFCOMM ver 1.10 Bluetooth: BNEP (Ethernet Emulation) ver 1.3 Bluetooth: BNEP filters: protocol multicast Bluetooth: HIDP (Human Interface Emulation) ver 1.2 RPC: Registered udp transport module. RPC: Registered tcp transport module. ieee80211: 802.11 data/management/control stack, git-1.1.13 ieee80211: Copyright (C) 2004-2005 Intel Corporation ![]() Neat toy! Computer itself actually has a size of the finger (not that thick though), but it does not have a power supply and interface connectors, so essentially unusable as stand-alon board, but with extension motherboard (as on the picture) it becomes very interesting with several usb connectors, hdmi display and audio connectors. WiFi/bluetooth module is based on wi2wi W2CBW003 Marvell 88W8686 chip. Pretty much unlikely Marvell will share a documentation (on my experience if you do not get more than 1000 chips in single order you will not be allowed to enter its intranet and get access to the needed datasheets), so I will not be able to work on wireless driver, but I would gladly implement it otherwise. /devel/other :: Link / Comments ()
Al Viro uses Appele's Mac.
/devel/other :: Link / Comments () Tue, 16 Sep 2008[47477.938968] ipw2100: Fatal interrupt. Scheduling firmware restart. [47478.808276] ipw2100: Fatal interrupt. Scheduling firmware restart. [47480.611796] ipw2100: Fatal interrupt. Scheduling firmware restart. [47483.415218] ipw2100: Fatal interrupt. Scheduling firmware restart. [47487.154543] ipw2100: Fatal interrupt. Scheduling firmware restart.There is no wired access at kernel summit, but Pavel Emelyanov setup a NAT for me, so I can write this exceptionally informative note. /devel/other :: Link / Comments () Sat, 13 Sep 2008
New distributed storage release.
The most tricky bug is scsi's BUG_ON(), which did not even contain any DST related calls.It was cought at drivers/scsi/scsi_lib.c:1175:kernel BUG at drivers/scsi/scsi_lib.c:1175! RIP: 0010:[Which is the following code:
int scsi_setup_fs_cmnd(struct scsi_device *sdev, struct request *req)
{
struct scsi_cmnd *cmd;
int ret = scsi_prep_state_check(sdev, req);
if (ret != BLKPREP_OK)
return ret;
/*
* Filesystem requests must transfer data.
*/
BUG_ON(!req->nr_phys_segments);
Which means that request structure did not contain any segment to process. Origianlly
I thought that it is because of some tricky elevator steps, which selected wrong request queue
because of all debug showed, that sync bio (block IO request with BIO_RW_SYNC bit set)
is handled differently compared to the same request without this flag. But experiments with various
flags showed, that bug occurs no matter how, but just in completely unpredictible place.Fortunately I managed to catch it in a debug trap in block IO merging path, which showed me, that block IO requests with very srtange read/write and flags fields was a cause of this error. Looking more precisely to the block queue allocation path, I found, that its default initialization is not correct, and my setup happens before it, so it did not contain the right parameters for the maximum request sizes (hw and phys sectors). This also showed, that one block IO request in the export node had clone and other local-only fields, which is very wrong for the bio to be submitted, which actually resulted in the seen bug. Those fields were set by the client bio and should not be transferred to the remote one, so I only limited flag fields to show that bio is uptodate and have blockable IO bit. That's the story about how things were hacked this day (its a middle of the night actually, while I'm waiting for the taxi to move to the airport), so POHMELFS locking algorithm was not implemented today, and likely is postponed to the next weekend when I return, since I got a group theory book and made some prints about numbers theory (after completed reading Vinogradov's book), so I will have what to read in all four planes (two in each direction) if I will not fall asleep, and likely I will not have much time in Portland: we will need to talk/listen to other people and check local pubs (people suggested some coctail places, but I prefer beer). See you in Portland. /devel/dst :: Link / Comments () Thu, 11 Sep 2008
POHMELFS development process.
/devel/fs :: Link / Comments () Tue, 09 Sep 2008
Userspace network stack git tree is now open.
/devel/networking/unetstack :: Link / Comments ()
New distributed storage release: "There is no spoon, black and white".
checkpatch.pl,
particulary I did not fix cases of long lines, when it is actually a comment added after
some variable, or things like
for (i=0; i<n; ++i) and
struct some_name
{
...
}
when checkpatch.pl wants
for (i = 0; i < n; ++i) and
struct some_name {
...
}
But tried to remove more than 80-characters code strings, trailing spaces and
couple of other warnings.Now I will concentrate on POHMELFS locking and then distributed facilities. Stay tuned, new version will be extremely cool in this regard! /devel/dst :: Link / Comments () Mon, 08 Sep 2008
New distributed storage release.
Check it out! /devel/dst :: Link / Comments ()
GIT web interface for the projects.
/devel/other :: Link / Comments () Sun, 07 Sep 2008
New netchannels release.
Todo list include:
/devel/networking :: Link / Comments ()
New userspace network stack release.
/devel/networking/unetstack :: Link / Comments () Sat, 06 Sep 2008
Latencies in netchanneles and sockets in receiving path.
/devel/networking :: Link / Comments () Fri, 05 Sep 2008
Netchannels come to the start line.
zbr@gavana$ make SUBDIRS=net/core/netchannel/
WARNING: Symbol version dump /home/zbr/aWork/git/linux-2.6/linux-2.6.netchannels/Module.symvers
is missing; modules will have no dependencies and modversions.
CC net/core/netchannel/netchannel.o
CC net/core/netchannel/storage.o
CC net/core/netchannel/user.o
LD net/core/netchannel/built-in.o
Building modules, stage 2.
MODPOST 0 modules
zbr@gavana$ wc -l net/core/netchannel/*.c include/linux/netchannel.h
430 net/core/netchannel/netchannel.c
140 net/core/netchannel/storage.c
244 net/core/netchannel/user.c
92 include/linux/netchannel.h
906 total
I want to make a new netchannels
release this weekend. It will not contain dynamically resizable hash table though, but if there will be no major
bugs in the core, I will consider to complete it for the new release.I also plan to convert userspace network stack to the libtcp.so or libunetstack.so library, so it could be much easier to create applications
with this stack, no matter if implemented on top of netchannels or packet socket, but so far it is only in plans.
/devel/networking :: Link / Comments () Thu, 04 Sep 2008
The table and shelves.
/devel/flat :: Link / Comments ()
Simple exploit for Bernstein/Torek 33 hash.
$ ./djb_crack 0x12345678 0 0xffffffff 0xabcdef12 07 1a 11 19 01 0c hash: 12345678, calc: 12345678: MATCH 00 hash: 00000000, calc: 00000000: MATCH 03 0a 18 14 1a 09 03 hash: ffffffff, calc: ffffffff: MATCH 02 07 15 11 00 20 03 hash: abcdef12, calc: abcdef12: MATCHExploit takes multiple hash values and searches for data which will produce the same hash value (it prints it to stdout as one can see above). Since this hash is so simple, it is actually possible to find matching data using brute force, but it is not interesting. Exploit can not work, if we limit the smallest byte value to something except 1 or 0. Since we do not know actual value of the hash, but only its modulo for 2^32, there is a possibility, that given value can not be represented as sum with fixed multiplicators of the bytes we can operate on (like we can not represent 13 as sum of whatever positive integers, if the smallest one is bigger than 6). But it is always possible to represent any value in the system where the smallest possible byte is zero. Because of the above limitation for the smallest byte value, every hash can be matched by the array of at most 7 bytes (33^7 is bigger than 2^32). I want to think some more on the cases, when we we know only modulo (by dividing real result by 2^32 for example) of the result, but we have to find input bytes, so that hash on them would match required one, and input bytes are limited by some set, and the smallest byte is not 1 or 0. This can be tricky task... value /devel/math/hash :: Link / Comments () Wed, 03 Sep 2008
On multiplier selection for the Bernstein/Torek 33 hash.
hash = hash * 33 + data[i];where initially hash was set to zero, and data[i] means i'th byte of the input data. This can also be written as following: hash = hash + hash << 5 + data[i];Now, let's take a look at hash analysis. As we can see, final hash is a sum of the multiplication of the power of 33 and data bytes. Let's split sum into neighbour pairs, like following (assuming big enough number of input bytes n):hash = (33^(n-2))*(33*a[0] + a[1]) + ... + (33^(n-k-1))*(33*a[k] + a[k+1]) + ...Now let's check single multiplier using above shift equation for the multiplication: 33*a[k] + a[k+1] = a[k] + a[k] << 5 + a[k+1]Using any other multiplier, which does not result in a[k] + a[k+1],
will lead to worse distribution, since number of used bits decreases. Particular bad (if not the worst)
multplier is 31, which leads to the following sum:31*a[k] + a[k+1] = a[k] << 5 - a[k] + a[k+1]This hash will have too small active bits, particular only differece between neighbour bytes will play a role in the final hash production. Now, getting the history of the hash, namely its part, which tells us that hash was first introduced for strings, we can conclude, that above 5 bits shift is used to shift a value to the amount of bits needed to put there new english ASCII character, i.e. shift value could be bigger to work with higher bytes (so that non-zero bits fit the new space). Now because of the time shift I made for myself because of US embassy interview (awake at 5:30 AM, going to sleep at 1:00 AM), my brain does not allow to work on big projects, so I will try to create an exploit for this hash standing on regular several-cups-of-cofee drug. Stay tuned! /devel/math/hash :: Link / Comments () Tue, 02 Sep 2008
Linux Kernel Summit.
/devel/other :: Link / Comments () |