mount remount regression with loop and real /etc/mtab

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



One issue remain with util-linux git tree mount remount and coreutils-8.19 test suite in the case of real /etc/mtab file.

I tested on a machine running kernel 2.6.32.

With /etc/mtab symlink, while remounting ro, the same loop is modified.
With /etc/mtab as real file, while doing the same remount action, another loop is chained to the first.
Next, umount /tmp/mnt will fail

How to prepare to reproduce
[chroot-i486] root:/tmp$ dd if=/dev/zero of=/tmp/blob bs=8192 count=200 &>/dev/null
[chroot-i486] root:/tmp$ mkfs -t ext2 -F /tmp/blob &>/dev/null

The case that work with /etc/mtab as symlink
[chroot-i486] root:/tmp$ ln -sf /proc/mounts /etc/mtab
[chroot-i486] root:/tmp$ mount -oloop /tmp/blob /tmp/mnt
[chroot-i486] root:/tmp$ mount -o remount,loop,ro /tmp/mnt
[chroot-i486] root:/tmp$ losetup -a
/dev/loop0: [2051]:306957 (/tmp/blob)
[chroot-i486] root:/tmp$ mount | grep mnt
/tmp/blob on /tmp/mnt type ext2 (ro,relatime,errors=continue,user_xattr,acl)
[chroot-i486] root:/tmp$ umount /tmp/mnt
[chroot-i486] root:/tmp$ losetup -a

The case that fail with /etc/mtab as real file
[chroot-i486] root:/tmp$ rm -f /etc/mtab && echo -n >/etc/mtab
[chroot-i486] root:/tmp$ mount -oloop /tmp/blob /tmp/mnt
[chroot-i486] root:/tmp$ mount -o remount,loop,ro /tmp/mnt
[chroot-i486] root:/tmp$ mount
/dev/loop0 on /tmp/mnt type ext2 (ro,loop)
[chroot-i486] root:/tmp$ losetup -a
/dev/loop0: [2051]:306957 (/tmp/blob)
/dev/loop1: [0005]:2218 (/dev/loop0)
[chroot-i486] root:/tmp$ umount /tmp/mnt
umount: /tmp/mnt: filesystem umounted, but mount(8) failed: Device or resource busy
[chroot-i486] root:/tmp$ losetup -d /dev/loop1
[chroot-i486] root:/tmp$ losetup -d /dev/loop0

I checked using ./configure -enable-deprecated-mount that it does not set the second loop on remount.

I try using LIBMOUNT_DEBUG=0xffff in both symlink and real /etc/mtab case for the remount.
I attached the two remount log. 
In both case, /dev/loop1 appear to be set as source even in symlink case no /dev/loop1 finally appear to be set.

Gilles
libmount: debug mask set to 0xffff.
30653: libmount:      CXT: [0xb8ce9008]: ----> allocate 
30653: libmount:    UTILS: mtab: /etc/mtab
30653: libmount:    UTILS: /etc/mtab: irregular/non-writable
30653: libmount:    UTILS: utab: /dev/.mount/utab
30653: libmount:      CXT: [0xb8ce9008]: mount: preparing
30653: libmount:      CXT: [0xb8ce9008]: use default optmode
30653: libmount:      CXT: [0xb8ce9008]: OPTSMODE: ignore=0, append=0, prepend=1, replace=0, force=0, fstab=1, mtab=1
30653: libmount:      CXT: [0xb8ce9008]: trying to apply fstab (src=(null), target=/tmp/mnt)
30653: libmount:      TAB: [0xb8ce9168]: alloc
30653: libmount:      TAB: [0xb8ce9168]: /etc/fstab: start parsing (0 entries)
30653: libmount:      TAB: [0xb8ce9168]: /etc/fstab: stop parsing (0 entries)
30653: libmount:    CACHE: [0xb8ce9190]: alloc
30653: libmount:      TAB: [0xb8ce9168]: lookup TARGET: /tmp/mnt
30653: libmount:    CACHE: [0xb8ce9190]: add entry [ 1] (path): /tmp/mnt: /tmp/mnt
30653: libmount:      TAB: [0xb8ce9168]: lookup SOURCE: /tmp/mnt
30653: libmount:      TAB: [0xb8ce9168]: lookup srcpath: /tmp/mnt
30653: libmount:      CXT: [0xb8ce9008]: trying to apply from mtab
30653: libmount:      TAB: [0xb8ce97b0]: alloc
30653: libmount:    UTILS: mtab: /etc/mtab
30653: libmount:    UTILS: /etc/mtab: irregular/non-writable
30653: libmount:      TAB: [0xb8ce97b0]: /proc/self/mountinfo: start parsing (0 entries)
30653: libmount:      TAB: [0xb8ce97b0]: add entry: none /dev
30653: libmount:      TAB: TID for /proc/self/mountinfo is 30653
30653: libmount:      TAB: [0xb8ce97b0]: add entry: none /dev/pts
30653: libmount:      TAB: [0xb8ce97b0]: add entry: tmpfs /dev/shm
30653: libmount:      TAB: [0xb8ce97b0]: add entry: none /proc
30653: libmount:      TAB: [0xb8ce97b0]: add entry: none /sys
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /usr/src/cache
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /usr/src/ccache
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /usr/src/config
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /usr/src/doc
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /usr/src/files_i486
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /usr/src/html
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /usr/src/langs
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /usr/src/lfs
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /usr/src/log_i486
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /usr/src/src
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /usr/src/test_i486
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /usr/src/updates
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /tools_i486
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/disk/by-uuid/7a235d64-5d04-41ac-a959-70465eb74fc8 /installer
30653: libmount:      TAB: [0xb8ce97b0]: add entry: /dev/loop0 /tmp/mnt
30653: libmount:      TAB: [0xb8ce97b0]: /proc/self/mountinfo: stop parsing (20 entries)
30653: libmount:      TAB: [0xb8cea0c8]: alloc
30653: libmount:      TAB: [0xb8cea0c8]: unset table parser filter
30653: libmount:      TAB: [0xb8cea0c8]: /dev/.mount/utab: start parsing (0 entries)
30653: libmount:      TAB: [0xb8cea0c8]: /dev/.mount/utab: stop parsing (0 entries)
30653: libmount:      TAB: [0xb8cea0c8]: reset
30653: libmount:      TAB: [0xb8cea0c8]: free
30653: libmount:      TAB: [0xb8ce97b0]: lookup TARGET: /tmp/mnt
30653: libmount:      CXT: [0xb8ce9008]: apply entry:
30653: libmount:      CXT: ------ fs: 0xb8ceb8f0
source: /dev/loop0
target: /tmp/mnt
fstype: ext2
optstr: rw,relatime,errors=continue,user_xattr,acl
VFS-optstr: rw,relatime
FS-opstr: rw,errors=continue,user_xattr,acl
root:   /
id:     43
parent: 19
devno:  7:0
tid:    30653
30653: libmount:      CXT: [0xb8ce9008]: merging mount flags
30653: libmount:      CXT: [0xb8ce9008]: final flags: VFS=00200021 user=00000200
30653: libmount:      CXT: [0xb8ce9008]: mount: evaluating permissions
30653: libmount:      CXT: [0xb8ce9008]: mount: fixing optstr
30653: libmount:      CXT: [0xb8ce9008]: mount: fixing vfs optstr
30653: libmount:      CXT: applying 0x02097185 flags to 'rw,relatime,remount,ro'
30653: libmount:      CXT: new optstr 'ro,relatime,remount'
30653: libmount:      CXT: [0xb8ce9008]: mount: fixing user optstr
30653: libmount:      CXT: applying 0x00000512 flags to 'loop'
30653: libmount:      CXT: new optstr 'loop'
30653: libmount:      CXT: [0xb8ce9008]: fixed options [rc=0]: vfs: 'ro,relatime,remount' fs: 'errors=continue,user_xattr,acl' user: 'loop', optstr: 'ro,relatime,remount,errors=continue,user_xattr,acl,loop'
30653: libmount:      CXT: [0xb8ce9008]: preparing source path
30653: libmount:      CXT: [0xb8ce9008]: srcpath '/dev/loop0'
30653: libmount:    CACHE: [0xb8ce9190]: add entry [ 2] (path): /dev/loop0: /dev/loop0
30653: libmount:      CXT: [0xb8ce9008]: loopdev specific options detected
30653: libmount:      CXT: [0xb8ce9008]: trying to setup loopdev for /dev/loop0
30653: libmount:      CXT: [0xb8ce9008]: enabling READ-ONLY flag
30653: libmount:      CXT: [0xb8ce9008]: checking if /dev/loop0 mounted on /tmp/mnt
30653: libmount:      CXT: [0xb8ce9008]: enabling AUTOCLEAR flag
loopdev:  [0xbfdeba78]: find_unused requested
loopdev:  [0xbfdeba78]: iter: initialize
loopdev:  [0xbfdeba78]: iter: next
loopdev:  [0xbfdeba78]: loop0 successfully assigned
loopdev:  [0xbfdeba78]: open ok
loopdev:  [0xbfdeba78]: reading loop_info64 OK
loopdev:  [0xbfdeba78]: get_offset [rc=0]
loopdev:  [0xbfdeba78]: iter: unset device
loopdev:  [0xbfdeba78]: loop1 successfully assigned
loopdev:  [0xbfdeba78]: open ok
loopdev:  [0xbfdeba78]: reading loop_info64 FAILED
loopdev:  [0xbfdeba78]: get_offset [rc=-1]
loopdev:  [0xbfdeba78]: iter: de-initialize
loopdev:  [0xbfdeba78]: find_unused by scan [rc=0]
30653: libmount:      CXT: [0xb8ce9008]: trying to use /dev/loop1
loopdev:  [0xbfdeba78]: set backing file=/dev/loop0
loopdev:  [0xbfdeba78]: set flags=5
loopdev:  [0xbfdeba78]: device setup requested
loopdev:  [0xbfdeba78]: setup: backing file open: OK
loopdev:  [0xbfdeba78]: setup: device open: OK
loopdev:  [0xbfdeba78]: setup: LOOP_SET_FD: OK
loopdev:  [0xbfdeba78]: setup: LOOP_SET_STATUS64: OK
loopdev:  [0xbfdeba78]: setup success [rc=0]
loopdev:  [0xbfdeba78]: reading loop_info64 OK
loopdev:  [0xbfdeba78]: de-initialize
loopdev:  [0xbfdeba78]: iter: de-initialize
30653: libmount:      CXT: [0xb8ce9008]: final srcpath '/dev/loop1'
30653: libmount:      CXT: [0xb8ce9008]: preparing target path
30653: libmount:      CXT: [0xb8ce9008]: final target '/tmp/mnt'
30653: libmount:      CXT: [0xb8ce9008]: FS type: ext2
30653: libmount:      CXT: [0xb8ce9008]: /sbin/mount.ext2          ... not found
30653: libmount:      CXT: [0xb8ce9008]: /sbin/fs.d/mount.ext2     ... not found
30653: libmount:      CXT: [0xb8ce9008]: /sbin/fs/mount.ext2       ... not found
30653: libmount:      CXT: [0xb8ce9008]: prepare update
30653: libmount:   UPDATE: [0xb8cea9c0]: allocate
30653: libmount:   UPDATE: [0xb8cea9c0]: resetting FS [fs=0x0xb8ce9098, target=(null), flags=0x00200021]
30653: libmount:   UPDATE: [0xb8cea9c0]: FS template:
30653: libmount:   UPDATE: ------ fs: 0xb8ce9098
source: /dev/loop1
target: /tmp/mnt
fstype: ext2
optstr: ro,relatime,remount,errors=continue,user_xattr,acl,loop
VFS-optstr: ro,relatime,remount
FS-opstr: errors=continue,user_xattr,acl
user-optstr: 
30653: libmount:   UPDATE: prepare utab entry
30653: libmount:   UPDATE: utab entry unnecessary (no options)
30653: libmount:      CXT: [0xb8ce9008]: mount: do mount
30653: libmount:      CXT: [0xb8ce9008]: mount(2) [source=/dev/loop1, target=/tmp/mnt, type=ext2,  mountflags=0x00200021, mountdata=yes]
30653: libmount:      CXT: [0xb8ce9008]: mount(2) success
30653: libmount:      CXT: [0xb8ce9008]: don't update: no update prepared
30653: libmount:      CXT: [0xb8ce9008]: <---- reset [status=1] ---->
30653: libmount:      TAB: [0xb8ce97b0]: reset
30653: libmount:      TAB: [0xb8ce97b0]: free
30653: libmount:      TAB: [0xb8ce9168]: reset
30653: libmount:      TAB: [0xb8ce9168]: free
30653: libmount:    CACHE: [0xb8ce9190]: free
30653: libmount:      CXT: [0xb8ce9008]: closing loopdev FD
30653: libmount:   UPDATE: [0xb8cea9c0]: free
30653: libmount:      CXT: [0xb8ce9008]: <---- free
libmount: debug mask set to 0xffff.
30633: libmount:      CXT: [0xb8c93008]: ----> allocate 
30633: libmount:    UTILS: mtab: /etc/mtab
30633: libmount:      CXT: [0xb8c93008]: mount: preparing
30633: libmount:      CXT: [0xb8c93008]: use default optmode
30633: libmount:      CXT: [0xb8c93008]: OPTSMODE: ignore=0, append=0, prepend=1, replace=0, force=0, fstab=1, mtab=1
30633: libmount:      CXT: [0xb8c93008]: trying to apply fstab (src=(null), target=/tmp/mnt)
30633: libmount:      TAB: [0xb8c93168]: alloc
30633: libmount:      TAB: [0xb8c93168]: /etc/fstab: start parsing (0 entries)
30633: libmount:      TAB: [0xb8c93168]: /etc/fstab: stop parsing (0 entries)
30633: libmount:    CACHE: [0xb8c93190]: alloc
30633: libmount:      TAB: [0xb8c93168]: lookup TARGET: /tmp/mnt
30633: libmount:    CACHE: [0xb8c93190]: add entry [ 1] (path): /tmp/mnt: /tmp/mnt
30633: libmount:      TAB: [0xb8c93168]: lookup SOURCE: /tmp/mnt
30633: libmount:      TAB: [0xb8c93168]: lookup srcpath: /tmp/mnt
30633: libmount:      CXT: [0xb8c93008]: trying to apply from mtab
30633: libmount:      TAB: [0xb8c937b0]: alloc
30633: libmount:    UTILS: mtab: /etc/mtab
30633: libmount:      TAB: [0xb8c937b0]: force /etc/mtab usage
30633: libmount:      TAB: [0xb8c937b0]: /etc/mtab: start parsing (0 entries)
30633: libmount:      TAB: trying to guess table type
30633: libmount:      TAB: [0xb8c937b0]: add entry: /dev/loop0 /tmp/mnt
30633: libmount:      TAB: [0xb8c937b0]: /etc/mtab: stop parsing (1 entries)
30633: libmount:      TAB: [0xb8c937b0]: lookup TARGET: /tmp/mnt
30633: libmount:      CXT: [0xb8c93008]: apply entry:
30633: libmount:      CXT: ------ fs: 0xb8c93940
source: /dev/loop0
target: /tmp/mnt
fstype: ext2
optstr: rw,loop
VFS-optstr: rw
user-optstr: loop
30633: libmount:      CXT: [0xb8c93008]: merging mount flags
30633: libmount:      CXT: [0xb8c93008]: final flags: VFS=00000021 user=00000200
30633: libmount:      CXT: [0xb8c93008]: mount: evaluating permissions
30633: libmount:      CXT: [0xb8c93008]: mount: fixing optstr
30633: libmount:      CXT: [0xb8c93008]: mount: fixing vfs optstr
30633: libmount:      CXT: applying 0x00000033 flags to 'rw,remount,ro'
30633: libmount:      CXT: new optstr 'ro,remount'
30633: libmount:      CXT: [0xb8c93008]: mount: fixing user optstr
30633: libmount:      CXT: applying 0x00000512 flags to 'loop,loop'
30633: libmount:      CXT: new optstr 'loop'
30633: libmount:      CXT: [0xb8c93008]: fixed options [rc=0]: vfs: 'ro,remount' fs: '(null)' user: 'loop', optstr: 'ro,remount,loop'
30633: libmount:      CXT: [0xb8c93008]: preparing source path
30633: libmount:      CXT: [0xb8c93008]: srcpath '/dev/loop0'
30633: libmount:    CACHE: [0xb8c93190]: add entry [ 2] (path): /dev/loop0: /dev/loop0
30633: libmount:      CXT: [0xb8c93008]: loopdev specific options detected
30633: libmount:      CXT: [0xb8c93008]: trying to setup loopdev for /dev/loop0
30633: libmount:      CXT: [0xb8c93008]: enabling READ-ONLY flag
30633: libmount:      CXT: [0xb8c93008]: checking if /dev/loop0 mounted on /tmp/mnt
loopdev:  [0xbf913cc8]: find_unused requested
loopdev:  [0xbf913cc8]: iter: initialize
loopdev:  [0xbf913cc8]: iter: next
loopdev:  [0xbf913cc8]: loop0 successfully assigned
loopdev:  [0xbf913cc8]: open ok
loopdev:  [0xbf913cc8]: reading loop_info64 OK
loopdev:  [0xbf913cc8]: get_offset [rc=0]
loopdev:  [0xbf913cc8]: iter: unset device
loopdev:  [0xbf913cc8]: loop1 successfully assigned
loopdev:  [0xbf913cc8]: open ok
loopdev:  [0xbf913cc8]: reading loop_info64 FAILED
loopdev:  [0xbf913cc8]: get_offset [rc=-1]
loopdev:  [0xbf913cc8]: iter: de-initialize
loopdev:  [0xbf913cc8]: find_unused by scan [rc=0]
30633: libmount:      CXT: [0xb8c93008]: trying to use /dev/loop1
loopdev:  [0xbf913cc8]: set backing file=/dev/loop0
loopdev:  [0xbf913cc8]: set flags=1
loopdev:  [0xbf913cc8]: device setup requested
loopdev:  [0xbf913cc8]: setup: backing file open: OK
loopdev:  [0xbf913cc8]: setup: device open: OK
loopdev:  [0xbf913cc8]: setup: LOOP_SET_FD: OK
loopdev:  [0xbf913cc8]: setup: LOOP_SET_STATUS64: OK
loopdev:  [0xbf913cc8]: setup success [rc=0]
loopdev:  [0xbf913cc8]: reading loop_info64 OK
loopdev:  [0xbf913cc8]: de-initialize
loopdev:  [0xbf913cc8]: iter: de-initialize
30633: libmount:      CXT: [0xb8c93008]: final srcpath '/dev/loop1'
30633: libmount:      CXT: [0xb8c93008]: preparing target path
30633: libmount:      CXT: [0xb8c93008]: final target '/tmp/mnt'
30633: libmount:      CXT: [0xb8c93008]: FS type: ext2
30633: libmount:      CXT: [0xb8c93008]: /sbin/mount.ext2          ... not found
30633: libmount:      CXT: [0xb8c93008]: /sbin/fs.d/mount.ext2     ... not found
30633: libmount:      CXT: [0xb8c93008]: /sbin/fs/mount.ext2       ... not found
30633: libmount:      CXT: [0xb8c93008]: prepare update
30633: libmount:   UPDATE: [0xb8c93820]: allocate
30633: libmount:   UPDATE: [0xb8c93820]: resetting FS [fs=0x0xb8c93098, target=(null), flags=0x00000021]
30633: libmount:   UPDATE: [0xb8c93820]: FS template:
30633: libmount:   UPDATE: ------ fs: 0xb8c93098
source: /dev/loop1
target: /tmp/mnt
fstype: ext2
optstr: ro,remount,loop
VFS-optstr: ro,remount
user-optstr: loop
30633: libmount:   UPDATE: [0xb8c93820]: ready
30633: libmount:      CXT: [0xb8c93008]: mount: do mount
30633: libmount:      CXT: [0xb8c93008]: mount(2) [source=/dev/loop1, target=/tmp/mnt, type=ext2,  mountflags=0xc0ed0021, mountdata=<none>]
30633: libmount:      CXT: [0xb8c93008]: mount(2) success
30633: libmount:   UPDATE: [0xb8c93820]: /etc/mtab: update tab
30633: libmount:   UPDATE: ------ fs: 0xb8c93858
source: /dev/loop1
target: /tmp/mnt
fstype: ext2
optstr: ro,loop
VFS-optstr: ro
user-optstr: loop
30633: libmount:    LOCKS: [0xb8c93a28]: alloc: default linkfile=/etc/mtab~.30633, lockfile=/etc/mtab~
30633: libmount:    LOCKS: [0xb8c93a28]: signals: BLOCKED
30633: libmount:   UPDATE: [0xb8c93820]: /etc/mtab: modify options
30633: libmount:    LOCKS: [0xb8c93a28]: /etc/mtab~: (30633) successfully locked
30633: libmount:      TAB: [0xb8c93ac0]: alloc
30633: libmount:      TAB: [0xb8c93ac0]: /etc/mtab: start parsing (0 entries)
30633: libmount:      TAB: [0xb8c93ac0]: add entry: /dev/loop0 /tmp/mnt
30633: libmount:      TAB: [0xb8c93ac0]: /etc/mtab: stop parsing (1 entries)
30633: libmount:      TAB: [0xb8c93ac0]: lookup TARGET: /tmp/mnt
30633: libmount:   UPDATE: [0xb8c93820]: /etc/mtab: updating
30633: libmount:    LOCKS: [0xb8c93a28]: (30633) unlocking
30633: libmount:    LOCKS: [0xb8c93a28]: unlink /etc/mtab~
30633: libmount:    LOCKS: [0xb8c93a28]: restoring sigmask
30633: libmount:      TAB: [0xb8c93ac0]: reset
30633: libmount:      TAB: [0xb8c93ac0]: free
30633: libmount:   UPDATE: [0xb8c93820]: /etc/mtab: update tab: done [rc=0]
30633: libmount:    LOCKS: [0xb8c93a28]: free
30633: libmount:      CXT: [0xb8c93008]: <---- reset [status=1] ---->
30633: libmount:      TAB: [0xb8c937b0]: reset
30633: libmount:      TAB: [0xb8c937b0]: free
30633: libmount:      TAB: [0xb8c93168]: reset
30633: libmount:      TAB: [0xb8c93168]: free
30633: libmount:    CACHE: [0xb8c93190]: free
30633: libmount:      CXT: [0xb8c93008]: closing loopdev FD
30633: libmount:   UPDATE: [0xb8c93820]: free
30633: libmount:      CXT: [0xb8c93008]: <---- free

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux