Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 152293 - sys-fs/evms-2.5.5-r3.ebuild with some more patches and without the need of glib1
Summary: sys-fs/evms-2.5.5-r3.ebuild with some more patches and without the need of glib1
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: High enhancement (vote)
Assignee: Tiziano Müller (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on: 154924
Blocks:
  Show dependency tree
 
Reported: 2006-10-21 13:15 UTC by Jimmy.Jazz
Modified: 2006-12-04 14:35 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
evms-2.5.5-r3.ebuild (evms-2.5.5-r3.ebuild,3.03 KB, text/plain)
2006-10-21 13:17 UTC, Jimmy.Jazz
Details
aclocal.patch (aclocal.patch,1.31 KB, patch)
2006-10-21 13:18 UTC, Jimmy.Jazz
Details | Diff
cli_query_segfault.patch (cli_query_segfault.patch,1.23 KB, patch)
2006-10-21 13:21 UTC, Jimmy.Jazz
Details | Diff
cli_reload_options.patch (cli_reload_options.patch,542 bytes, patch)
2006-10-21 13:22 UTC, Jimmy.Jazz
Details | Diff
ntfs_unmkfs.patch (ntfs_unmkfs.patch,1.57 KB, patch)
2006-10-21 13:23 UTC, Jimmy.Jazz
Details | Diff
raid5_algorithm.patch (raid5_algorithm.patch,562 bytes, patch)
2006-10-21 13:24 UTC, Jimmy.Jazz
Details | Diff
new version with static glib for the gui (evms-2.5.5-r3.ebuild,3.07 KB, text/plain)
2006-10-23 02:27 UTC, Jimmy.Jazz
Details
glib with static option (glib-2.12.4-r1.ebuild,2.22 KB, text/plain)
2006-10-23 02:30 UTC, Jimmy.Jazz
Details
Most recent -r3 proposed above updated with EVMS release patches (evms-2.5.5-r3.ebuild,3.16 KB, text/plain)
2006-11-09 21:15 UTC, Brad Allen
Details
evms-2.5.5-r3.ebuild only -r2 with latest release patches (evms-2.5.5-r3.ebuild,2.88 KB, text/plain)
2006-11-09 21:33 UTC, Brad Allen
Details
get_geometry.patch (get_geometry.patch,1.20 KB, patch)
2006-11-09 21:35 UTC, Brad Allen
Details | Diff
BaseName.patch (BaseName.patch,1.08 KB, patch)
2006-11-09 21:36 UTC, Brad Allen
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Jimmy.Jazz 2006-10-21 13:15:28 UTC
Hi,

i have modified EVMS alocal.m4 to get rid of glib version 1. So i could free some more place on my box :)
EVMS text gui uses now glib version 2.

Sorry i don't have gtk+ 1.2 installed on any of my computers. It depends on the glib-1 library so i couldn't check if it is still working with the modification i made.
The new available EVMS patches can be found at http://evms.sourceforge.net/patches/2.5.5/engine/. They need to be installed in the files/2.5.5/ directory.

I didn't develop a gtk interface (lack of skills), so i prefer not to integrate Alexey Maximov's patches (amax@fantoo.org) that he developed for the EVMS version 2.5.4

I hope this helps

Jj
Comment 1 Jimmy.Jazz 2006-10-21 13:17:16 UTC
Created attachment 100164 [details]
evms-2.5.5-r3.ebuild
Comment 2 Jimmy.Jazz 2006-10-21 13:18:25 UTC
Created attachment 100165 [details, diff]
aclocal.patch
Comment 3 Jimmy.Jazz 2006-10-21 13:21:56 UTC
Created attachment 100166 [details, diff]
cli_query_segfault.patch

http://evms.sourceforge.net/patches/2.5.5/engine/
Comment 4 Jimmy.Jazz 2006-10-21 13:22:55 UTC
Created attachment 100167 [details, diff]
cli_reload_options.patch

http://evms.sourceforge.net/patches/2.5.5/engine/
Comment 5 Jimmy.Jazz 2006-10-21 13:23:45 UTC
Created attachment 100168 [details, diff]
ntfs_unmkfs.patch

http://evms.sourceforge.net/patches/2.5.5/engine/
Comment 6 Jimmy.Jazz 2006-10-21 13:24:59 UTC
Created attachment 100169 [details, diff]
raid5_algorithm.patch

http://evms.sourceforge.net/patches/2.5.5/engine/
Comment 7 Jimmy.Jazz 2006-10-23 02:27:02 UTC
Created attachment 100253 [details]
new version with static glib for the gui

Hi,

i added a static-glib flag. Now evmsn works even when /usr isn't mounted (i hope it will :). You need also a new glib ebuild that include a static option. See glib ebuild attachment below.
Comment 8 Jimmy.Jazz 2006-10-23 02:30:27 UTC
Created attachment 100255 [details]
glib with static option

Possibility to get a static glib with the dynamic one.
Comment 9 Brad Allen 2006-11-09 20:45:37 UTC
(In reply to comment #1)
> Created an attachment (id=100164) [edit]
> evms-2.5.5-r3.ebuild
> 

May I suggest you apply the patches in chronological order?  I don't know if this is the canonical order, but it makes sense that it would be the safest one.  Here is the time-ordered listing of the current release patch set at http://evms.sourceforge.net/patches/2.5.5/engine/ :

 2618 2006-04-20 09:16:56 -0700 md_super_fix.patch
 1605 2006-05-04 15:00:13 -0700 ntfs_unmkfs.patch
 1672 2006-05-05 10:55:33 -0700 raid5_degrade_fix.patch
 1055 2006-05-10 14:50:32 -0700 raid5_remove_spare_fix.patch
 1215 2006-05-10 14:51:27 -0700 raid5_remove_spare_fix_2.patch
  562 2006-06-08 12:03:06 -0700 raid5_algorithm.patch
  542 2006-09-01 09:58:26 -0700 cli_reload_options.patch
 1255 2006-09-14 07:49:39 -0700 cli_query_segfault.patch
 1230 2006-11-01 07:13:21 -0800 get_geometry.patch
 1109 2006-11-01 15:16:09 -0800 BaseName.patch

Also, the last two, get_geometry.patch and BaseName.patch, both bug fixes (the first a workaround for a Linux kernel change starting in 2.6.17, and the second an important bug fix) are not in your evms-2.5.5-r3.

So, I am going to build an updated evms-2.5.5-r3 with those in it and attach it here.

I didn't study the other issue, but it is true that when I'm installing EVMS, I have to manually make it runnable from a non-/usr mounted system by moving and/or copying all of the relevent files to the root filesystem and doing appropriate ldconfigs, and such.  Of course this is vitally important, since whenever I use EVMS to resize /usr filesystem to something smaller, I have to first unmount /usr, then run EVMS (such as evmsn).  Is that solved in your ebuild?  That would sure be great.
Comment 10 Brad Allen 2006-11-09 21:10:52 UTC
First, additional comments:

* The changes I made are important nonexperimental changes.
* The current portage tree has another method of doing static glib than the one mentioned in the above attached glib ebuild.
* The get_geometry.patch is necessary for my systems to boot, so it's not just some random bug fix that no one needs.

Because of that, I am not sure wihch version of ebuild to work with.  So, I just essoterically grabbed the most recent ebuild above and then updated it, then also updated a pure ebuild (starting from evms-2.5.5-r2.ebuild) with the same name (evms-2.5.5-r3.ebuild) with only my changes in it.  I'll attach them both now.

I did test that the chronological ordering of patches I put in works.
Comment 11 Brad Allen 2006-11-09 21:15:25 UTC
Created attachment 101581 [details]
Most recent -r3 proposed above updated with EVMS release patches
Comment 12 Brad Allen 2006-11-09 21:33:20 UTC
Created attachment 101582 [details]
evms-2.5.5-r3.ebuild only -r2 with latest release patches
Comment 13 Brad Allen 2006-11-09 21:35:27 UTC
Created attachment 101583 [details, diff]
get_geometry.patch

http://evms.sourceforge.net/patches/2.5.5/engine/get_geometry.patch
Comment 15 Brad Allen 2006-11-09 22:08:51 UTC
(In reply to comment #12)
> Created an attachment (id=101582) [edit]
> evms-2.5.5-r3.ebuild only -r2 with latest release patches

Ok, after some thought about how to tame these multiple kinds of changes, since evms-2.5.5-r2 isn't yet unkeyworded in release portage (i.e., it's still KEYWORDS ~x86), I suggest you just take my last "evms-2.5.5-r3.ebuild built from -r2" version above and make it the new evms-2.5.5-r2.ebuild in the current tree, since it's a very conservative change to include release patches.

Then, the enhancement request above regarding glib and static and stuff can be reestablished in reference to the new evms-2.5.5-r2 version.

Right now, this bug is marked as an Enhancement P2; I tried setting it at Critical P2 until the release patches make it in, but I don't have permission.  (It is actually a BLOCKER for me with Linux kernel versions starting at 2.6.17.)  Then, after the EVMS release patches are in the ebuild portage tree, then someone can set the severity back down.  Perhaps someone can set it up for now?  If this doesn't get traction soon, I'll just file a new bug (but I've been yelled at about entering "duplicate" bugs in bugzilla so I'll wait a very short bit before doing that).

If you want a fresh copy of the release patches to load, here they are (they go into $PORTDIR/sys-fs/evms/files/2.5.5/):

http://evms.sourceforge.net/patches/2.5.5/engine/md_super_fix.patch
http://evms.sourceforge.net/patches/2.5.5/engine/ntfs_unmkfs.patch
http://evms.sourceforge.net/patches/2.5.5/engine/raid5_degrade_fix.patch
http://evms.sourceforge.net/patches/2.5.5/engine/raid5_remove_spare_fix.patch
http://evms.sourceforge.net/patches/2.5.5/engine/raid5_remove_spare_fix_2.patch
http://evms.sourceforge.net/patches/2.5.5/engine/raid5_algorithm.patch
http://evms.sourceforge.net/patches/2.5.5/engine/cli_reload_options.patch
http://evms.sourceforge.net/patches/2.5.5/engine/cli_query_segfault.patch
http://evms.sourceforge.net/patches/2.5.5/engine/get_geometry.patch
http://evms.sourceforge.net/patches/2.5.5/engine/BaseName.patch


P.S., this does not include the DM INPUT patch I describe in http://gentoo-wiki.com/SECURITY_LVM_and_EVMS_over_cryptsetup-LUKS, and I won't update that wiki until you've updated the evms ebuild to include the evms 2.5.5 release patches (or if 2.5.6 comes out sooner, that).
Comment 16 Jimmy.Jazz 2006-11-13 11:06:18 UTC
(In reply to comment #9)
> (In reply to comment #1)
> > Created an attachment (id=100164) [edit]
> > evms-2.5.5-r3.ebuild
> > 
> 
> May I suggest you apply the patches in chronological order?  I don't know if
> this is the canonical order, but it makes sense that it would be the safest
> one.  Here is the time-ordered listing of the current release patch set at
> http://evms.sourceforge.net/patches/2.5.5/engine/ :
> 
>  2618 2006-04-20 09:16:56 -0700 md_super_fix.patch
>  1605 2006-05-04 15:00:13 -0700 ntfs_unmkfs.patch
>  1672 2006-05-05 10:55:33 -0700 raid5_degrade_fix.patch
>  1055 2006-05-10 14:50:32 -0700 raid5_remove_spare_fix.patch
>  1215 2006-05-10 14:51:27 -0700 raid5_remove_spare_fix_2.patch
>   562 2006-06-08 12:03:06 -0700 raid5_algorithm.patch
>   542 2006-09-01 09:58:26 -0700 cli_reload_options.patch
>  1255 2006-09-14 07:49:39 -0700 cli_query_segfault.patch
>  1230 2006-11-01 07:13:21 -0800 get_geometry.patch
>  1109 2006-11-01 15:16:09 -0800 BaseName.patch
> 
> Also, the last two, get_geometry.patch and BaseName.patch, both bug fixes (the
> first a workaround for a Linux kernel change starting in 2.6.17, and the second
> an important bug fix) are not in your evms-2.5.5-r3.
> 
> So, I am going to build an updated evms-2.5.5-r3 with those in it and attach it
> here.
> 
> I didn't study the other issue, but it is true that when I'm installing EVMS, I
> have to manually make it runnable from a non-/usr mounted system by moving
> and/or copying all of the relevent files to the root filesystem and doing
> appropriate ldconfigs, and such.  Of course this is vitally important, since
> whenever I use EVMS to resize /usr filesystem to something smaller, I have to
> first unmount /usr, then run EVMS (such as evmsn).  Is that solved in your
> ebuild?  That would sure be great.
> 

Hi,

thanks to help us gentoo-users to improve evms integration. I hope that some gentoo evms maintainers will soon integrate these patches :).

Actually, i was focused on the fact that evms ui needs to be usable during earlier boot process before /usr is even mounted and definitely to get rid of glib version 1 in favor of the new release 2.
So i didn't pay much attention to patches and their orders as long as epatch won't complain.

I'm glad to see you make quite a good work to gather all the last release patches and include them in your r3 build.

What bothers me about your build is why didn't you integrate the aclocal.patch patch in your release. Is there anything wrong?
Because, without it, you won't be able to migrate evms to glib release 2 because it will continuously link with the old one. So, you will still need the old glib release for evms even when glib 2 is already installed. If you look at the dependencies (equery d glib) you can see there are a few packages depending on the old version like evms and unable to migrate to release 2 (build aborts).

Please do try glib 2 with evms without the presence of glib 1. It works flawlessly.

I don't use gtk+ version 1.2 so i'm unable to tell you if the exclusive use of glib 2 will interfere with it. Feel free to tell me about it. Anyway, it would be great that maintainers could have a look after their source codes and definitely migrate them to gtk+ 2. That seems not too much time eater and too difficult to integrate. Other people even managed to patch evms to support gtk+2 but still with some few bugs :). I concede the job needs to be improved but it was made and well working (thanks to amax@fantoo.org).

As we try to improve evms, i found an other issue during the boot time process that was evms-activate related. When the root partition is under evms control, evms-activate try to write/access a temporary file on the filesystem (certainly located in /var) still unmounted or read only. That's only a warning, but you get the following messages in your kernel log about a recursive locking detection (dmesg):

md: raid0 personality registered for level 0
md: raid1 personality registered for level 1
md: bind<dm-0>
md: bind<dm-1>
raid1: raid set md0 active with 2 out of 2 mirrors
md: bind<dm-3>
md: bind<dm-4>
raid1: raid set md1 active with 2 out of 2 mirrors

=============================================
[ INFO: possible recursive locking detected ]
---------------------------------------------
evms_activate/1971 is trying to acquire lock:
 (&md->io_lock){----}, at: [<ffffffff812c5172>] dm_request+0x25/0x162

but task is already holding lock:
 (&md->io_lock){----}, at: [<ffffffff812c5172>] dm_request+0x25/0x162

other info that might help us debug this:
1 lock held by evms_activate/1971:
 #0:  (&md->io_lock){----}, at: [<ffffffff812c5172>] dm_request+0x25/0x162

stack backtrace:

Call Trace:
 [<ffffffff810a4705>] __lock_acquire+0x12e/0x9f4
 [<ffffffff8100a7f2>] kmem_cache_alloc+0xb2/0xc4
 [<ffffffff810a4289>] trace_hardirqs_on+0x100/0x124
 [<ffffffff810a552f>] lock_acquire+0x4b/0x69
 [<ffffffff812c5172>] dm_request+0x25/0x162
 [<ffffffff8109aa24>] down_read+0x28/0x34
 [<ffffffff812c5172>] dm_request+0x25/0x162
 [<ffffffff8101c332>] generic_make_request+0x165/0x17c
 [<ffffffff810c9a10>] __bio_clone+0x76/0x8f
 [<ffffffff880177b3>] :raid1:make_request+0x1bf/0x613
 [<ffffffff8101c332>] generic_make_request+0x165/0x17c
 [<ffffffff812c3fbe>] __map_bio+0x56/0x8c
 [<ffffffff812c49ca>] __split_bio+0x19d/0x394
 [<ffffffff810698fe>] _spin_unlock_irq+0x36/0x53
 [<ffffffff81068c9b>] __down_read+0x3d/0xaa
 [<ffffffff812c529d>] dm_request+0x150/0x162
 [<ffffffff8101c332>] generic_make_request+0x165/0x17c
 [<ffffffff81035653>] submit_bio+0xf6/0x101
 [<ffffffff8101aa4d>] submit_bh+0x103/0x126
 [<ffffffff810c91e6>] block_read_full_page+0x264/0x282
 [<ffffffff810ccac0>] blkdev_get_block+0x0/0x4c
 [<ffffffff81069239>] _write_unlock_irq+0x36/0x52
 [<ffffffff810cbab0>] blkdev_readpage+0x13/0x15
 [<ffffffff81012d35>] __do_page_cache_readahead+0x1e7/0x26c
 [<ffffffff810345a4>] blockable_page_cache_readahead+0x5f/0xc1
 [<ffffffff81013f37>] page_cache_readahead+0x144/0x1b9
 [<ffffffff8100bcea>] do_generic_mapping_read+0x158/0x496
 [<ffffffff8100cc8b>] file_read_actor+0x0/0x15b
 [<ffffffff8100c17b>] __generic_file_aio_read+0x153/0x1a4
 [<ffffffff810b6c2f>] generic_file_read+0xc6/0xe0
 [<ffffffff81067f5e>] __mutex_lock_slowpath+0x241/0x272
 [<ffffffff810987fd>] autoremove_wake_function+0x0/0x38
 [<ffffffff810a4289>] trace_hardirqs_on+0x100/0x124
 [<ffffffff8100b23b>] vfs_read+0xcc/0x172
 [<ffffffff8101177e>] sys_read+0x47/0x6f
 [<ffffffff81062402>] system_call+0x7e/0x83

I don't know what to think about it since i'm using kernel 2.6.18. Earlier evms build wrote only a simple warning on the screen about the fact that evms-activate is unable to access some sort of filesystem and to check the presence of an other process in memory (certainly to avoid some collisions). 

It would be nice that some more geeks could have a look at the problem too. I was unable to locate the portion of the code that generates that lock :(

I won't be able to answer your question about the ability to shrink /usr with ncurses evmsn ui. In fact i didn't try it by lack of time and motivation. I will rely on some other well proofed testers ;)
I hope glib static library is the only one needed to make evmsn work without /usr.
Again feel free to test it and prepare a boot livecd just in case ;)


Thank you for your support.

bye

Jj
Comment 17 Brad Allen 2006-11-13 14:13:51 UTC
> What bothers me about your build is why didn't you integrate the aclocal.patch
> patch in your release. Is there anything wrong?

I actually want to push through the release level patches first so that we have a stable working environment reference point, and then we can do yours if Gentoo developers agree.  I like your approaches.

I put bug #154924 as a blocker to this one so that it goes through first so the devs have an easier time seeing the sequence of stability.  That's the problem with mixing release level bug fixes with enhancement bug fixes.  I understand that it wasn't upmost on your mind, and I don't blame you for it at all.  I just need the release level bug fixes more, and they're more likely to be put into Portage sooner than the enhancement stuff.

> =============================================
> [ INFO: possible recursive locking detected ]
> ---------------------------------------------

Right now I don't have time to diagnose, but is this possible if you have LVM/LVM2 "active" objects?  You'd have to deactivate the LVM objects in order to use the same objects with EVMS, I think; you should only refer to each object via one device node in /dev (so e.g., /dev/evms/root, /dev/evms/tmp, etc.)).

If I ran into this, I'm sure I was careful to have the data put someplace safe so that it would work correctly, but I don't remember running into it.  I initrd via RAM disk and then pivot_root to EVMS mounts (which themselves are on dm-crypt devices).
Comment 18 Jimmy.Jazz 2006-11-16 06:40:16 UTC
(In reply to comment #17)

I totally agree with you. After all the "enhancement" i suggest is not important for someone who doesn't mind to install both glib versions.

I'm exclusively using /dev/evms trees when adressing the devices. One of my computer (that doesn't need raid devices) i just installes evms (not lvm2 and co) and i get also the same message. Actually evms is the only tool that activate objects.

If your are using evms with raid/lvm2 and your root partition is on a lvm device (pivot_root), i'm quite sure your system is affected too. Indeed, the message is most hidden because most people don't activate the hacking capabilites of the kernel. I just set the following definition in my .config and build another kernel:

CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=15
CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_PI_LIST=y
CONFIG_RT_MUTEX_TESTER=y
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_RWSEMS=y
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_PROVE_LOCKING=y
CONFIG_LOCKDEP=y
CONFIG_TRACE_IRQFLAGS=y
CONFIG_DEBUG_LOCKING_API_SELFTESTS=y
CONFIG_STACKTRACE=y
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_FS=y
CONFIG_FRAME_POINTER=y
CONFIG_UNWIND_INFO=y
CONFIG_STACK_UNWIND=y
CONFIG_RCU_TORTURE_TEST=m
CONFIG_EARLY_PRINTK=y
CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_DEBUG_STACK_USAGE=y

The problem affects both x86 and x86_64 kernel (at least on my computers). Anyway, it seems quite harmless.

Yes, my computers live a dangerous life because i don't have enough room to save all the stuff in it. Mainly i just save /home, /var, /etc and world. But not so dangerous as loosing one single bit that will corrupt the whole partition because it is encrypted ;)


Jj

Comment 19 Tiziano Müller (RETIRED) gentoo-dev 2006-12-04 14:35:23 UTC
Jimmy Jazz, thanks a lot for your work.
From the latest revision bump on (-r4), evms will always use the static glib to link the ncurses ui with. This is because evmsn resides in /sbin and as you said: it sucks when you want to resize /usr.
I've also included the debug USE-flag.