betelgeuse@pena ~ $ pmount /dev/sde1
Error: device /dev/sde1 is not removable
betelgeuse@pena ~ $ pmount -d /dev/sde1 | tail
Error: device /dev/sde1 is not removable
find_sysfs_device: checking whether /dev/sde1 is on /sys/block/dm-27 (253:27)
find_sysfs_device: checking whether /dev/sde1 is on /sys/block/dm-28 (253:28)
find_sysfs_device: checking whether /dev/sde1 is on /sys/block/sde (8:64)
find_sysfs_device: major device numbers match
find_sysfs_device: minor device numbers do not match, checking partitions...
find_sysfs_device: checking whether device /dev/sde1 matches partition 8:64
find_sysfs_device: checking whether device /dev/sde1 matches partition 8:65
find_sysfs_device: -> partition matches, belongs to block device /sys/block/sde
device_removable: could not find a sysfs device for /dev/sde1
policy check failed
betelgeuse@pena ~ $ emerge --info
Portage 2.1.5_rc6 (default-linux/x86/2006.1/desktop, gcc-4.2.3, glibc-2.7-r2, 2.6.25-gentoo-r1 i686)
System uname: 2.6.25-gentoo-r1 i686 Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz
Timestamp of tree: Unknown
distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled]
ccache version 2.4 [enabled]
dev-java/java-config: 1.3.7, 2.1.6
sys-devel/autoconf: 2.13, 2.62
sys-devel/automake: 1.4_p6, 1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.1
CFLAGS="-O2 -march=native -pipe -fomit-frame-pointer"
CONFIG_PROTECT="/etc /opt/openjms/config /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/kde/4.0/env /usr/kde/4.0/share/config /usr/kde/4.0/shutdown /usr/share/config /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/splash /etc/terminfo /etc/texmf/web2c /etc/udev/rules.d"
CXXFLAGS="-O2 -march=native -pipe -fomit-frame-pointer"
FEATURES="ccache collision-protect distlocks fixpackages parallel-fetch sandbox sfperms sign strict unmerge-orphans userfetch userpriv usersandbox verify-rdepend"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTDIR_OVERLAY="/mnt/checkouts/overlays/flameeyes-overlay /mnt/checkouts/overlays/openrc /mnt/checkouts/overlays/jokey /mnt/checkouts/overlays/postgresql-testing /mnt/checkouts/overlays/sunrise /mnt/checkouts/overlays/betelgeuse"
USE="a52 aac acl acpi alsa audiofile bash-completion berkdb bluetooth branding bzip2 cairo caps cdb cddb cdparanoia cdr cli cracklib crypt cups dbus dri dts dvd dvdr dvdread emboss fam ffmpeg firefox gif gstreamer hal iconv isdnlog java jpeg kde kdeenablefinal kdehiddenvisibility libnotify logitech-mouse mad mikmod mjpeg mmx mp3 mpeg mudflap ncurses network nptl nptlonly nsplugin nvidia offensive ogg opengl openmp pam pcre png ppds pppd pulseaudio qt3 quicktime readline real reflection rtc samba session spell spl sse sse2 ssl startup-notification subversion svg symlink theora threads truetype udev unicode usb userlocales vim-syntax vorbis win32codecs x86 xcb xcomposite xinerama xml xorg xv xvid xvmc zlib" ALSA_CARDS="hda-intel" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="fi" USERLAND="GNU" VIDEO_CARDS="none nvidia"
Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Can't turn the deprecated sysfs stuff for IDE bits off. That's a known thing. That being said, if you actually use this package and want to maintain it. Please feel free to take it. I haven't used it or built it on my machine in over a year.
(In reply to comment #1)
> Can't turn the deprecated sysfs stuff for IDE bits off. That's a known thing.
> That being said, if you actually use this package and want to maintain it.
> Please feel free to take it. I haven't used it or built it on my machine in
> over a year.
What do you suggest for command line mounting instead?
To me, it rather looks like an bug in -lsysfs, where sysfs_get_link() incorrectly resolves last-level, relative symbolic link without resolving higher ones.
$ strace pmount /dev/sdc1
readlink("/sys/block/sdc/device", "../../../4:0:0:0", 256) = 16
lstat("/4:0:0:0", 0x7fff18645f00) = -1 ENOENT (No such file or directory)
(In reply to comment #2)
> (In reply to comment #1)
> > Can't turn the deprecated sysfs stuff for IDE bits off. That's a known thing.
> > That being said, if you actually use this package and want to maintain it.
> > Please feel free to take it. I haven't used it or built it on my machine in
> > over a year.
> What do you suggest for command line mounting instead?
this app along with ivman. I just have no need for command line mounting for a while which is why I offered you to take it over.
(In reply to comment #3)
> To me, it rather looks like an bug in -lsysfs, where sysfs_get_link()
> incorrectly resolves last-level, relative symbolic link without resolving
> higher ones.
> $ strace pmount /dev/sdc1
> readlink("/sys/block/sdc/device", "../../../4:0:0:0", 256) = 16
> lstat("/4:0:0:0", 0x7fff18645f00) = -1 ENOENT (No such file or directory)
My first thought was that upgrading to 2.6.25 broke this but perhaps it was pciutils-3.0.0
(In reply to comment #5)
> My first thought was that upgrading to 2.6.25 broke this but perhaps it was
plah I mean sysfsutils. But looking at qlop -l doesn't look like it:
Tue Jan 30 18:56:31 2007 >>> sys-fs/sysfsutils-2.1.0
I'm just about to slaughter a few (dozen) people, but I think I figured it out.
One of the things pmount does is call sysfs_open_device_path after calling sysfs_get_link.
The problem is that i.e. I've got /sys/block/sr0, for /sys/block/sr0/device, sysfs_get_link returns ../../../2:0:0:0
Well, the catch is that this breaks sysfs_open_device_path, cause it expects a dir (checked by sysfs_path_is_dir) and then it should call sysfs_get_name_from_path which seems to transform that dir to bus_id, which we already got (2:0:0:0).
I think this should work again if in sysfs_open_device_path we drop sysfs_path_is_dir.
Of course, this will probably make the modified sysfsutils incompatible with earlier kernels.
Actually, it's lstat in sysfs_path_is_dir that fails.
Created attachment 152337 [details, diff]
Patch to sysfsutils fixing pmount for 2.6.25
OK, I don't know what this patch breaks, but it fixes pmount.
It looks like a better patch was posted to the project's mailing list.
It at http://sourceforge.net/mailarchive/forum.php?thread_name=87skwmofp8.fsf%40denkblock.local&forum_name=linux-diag-devel
Not really sure why base-system is CC'd on here. And I'm no longer interested in this package as stated in comment #1. I actually would be in favor of kicking it from gentopia to maintainer-needed... steev? compnerd?
The real problem is that this is NOT pmount but,
it's sysfsutils one.
(In reply to comment #11)
> Not really sure why base-system is CC'd on here. And I'm no longer interested
> in this package as stated in comment #1. I actually would be in favor of
> kicking it from gentopia to maintainer-needed... steev? compnerd?
And now for something special.
Straight from kernel Documentation/sysfs-rules.txt (2.6.26, quote):
- Do not use libsysfs
It makes assumptions about sysfs which are not true. Its API does not
offer any abstraction, it exposes all the kernel driver-core
implementation details in its own API. Therefore it is not better than
reading directories and opening the files yourself.
Also, it is not actively maintained, in the sense of reflecting the
current kernel development. The goal of providing a stable interface
to sysfs has failed; it causes more problems than it solves. It
violates many of the rules in this document.
don't use sysfsutils, it's abandonded, broken, and useless.
The latest version of pmount in the tree (currently keyworded), no longer uses sysfsutils, and now works correctly when depreciated sysfs stuff is switched off.