summaryrefslogtreecommitdiffstats
path: root/fs
Commit message (Collapse)AuthorAgeFilesLines
* Merge git://oss.sgi.com:8090/xfs-2.6Linus Torvalds2006-06-21108-6261/+2316
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://oss.sgi.com:8090/xfs-2.6: (43 commits) [XFS] Remove files from the build that are now unused. [XFS] Fix a Makefile issue related to exports.o handling. [XFS] Remove version 1 directory code. Never functioned on Linux, just [XFS] Map EFSCORRUPTED to an actual error code, not just a made up one [XFS] Kill direct access to ->count in valusema(); all we ever use it for [XFS] Remove unneeded conditional code on NFS export interface related [XFS] Remove an incorrect use of unlikely() on a relatively likely code [XFS] Push some common code out of write path into core XFS code for [XFS] Remove unnecessary local from open_exec dmapi path. [XFS] Minor XFS documentation updates. [XFS] Fix broken const use inside local suffix_strtoul routine. [XFS] Fix nused counter. It's currently getting set to -1 rather than [XFS] Fix mismerge of the fs_writable cleanup patch causing a freeze/thaw [XFS] Fix up debug code so that bulkstat wont generate thousands of [XFS] Remove unused parameter from di2xflags routine. [XFS] Cleanup a missed porting conversion, and freezing. [XFS] Resolve a namespace collision on remaining vtypes for FreeBSD [XFS] Resolve a namespace collision on vnode/vnodeops for FreeBSD porters. [XFS] Resolve a namespace collision on vfs/vfsops for FreeBSD porters. [XFS] statvfs component of directory/project quota support, code ...
| * Merge HEAD from ../linux-2.6 Nathan Scott2006-06-202-2/+5
| |\
| * | [XFS] Remove files from the build that are now unused.Nathan Scott2006-06-206-2/+0
| | | | | | | | | | | | | | | Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Fix a Makefile issue related to exports.o handling.Nathan Scott2006-06-201-1/+1
| | | | | | | | | | | | | | | Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Remove version 1 directory code. Never functioned on Linux, justNathan Scott2006-06-2071-4595/+285
| | | | | | | | | | | | | | | | | | | | | | | | | | | pure bloat. SGI-PV: 952969 SGI-Modid: xfs-linux-melb:xfs-kern:26251a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Map EFSCORRUPTED to an actual error code, not just a made up oneNathan Scott2006-06-201-18/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (990). Turns out some ye-olde unices used EUCLEAN as Filesystem-needs-cleaning, so now we use that too. SGI-PV: 953954 SGI-Modid: xfs-linux-melb:xfs-kern:26286a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Kill direct access to ->count in valusema(); all we ever use it forAl Viro2006-06-196-19/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | is check if semaphore is actually locked, which can be trivially done in portable way. Code gets more reabable, while we are at it... SGI-PV: 953915 SGI-Modid: xfs-linux-melb:xfs-kern:26274a Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Remove unneeded conditional code on NFS export interface relatedNathan Scott2006-06-192-9/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | code paths. SGI-PV: 904196 SGI-Modid: xfs-linux-melb:xfs-kern:26250a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Remove an incorrect use of unlikely() on a relatively likely codeNathan Scott2006-06-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | path. SGI-PV: 904196 SGI-Modid: xfs-linux-melb:xfs-kern:26249a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Push some common code out of write path into core XFS code forNathan Scott2006-06-193-75/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | sharing. SGI-PV: 904196 SGI-Modid: xfs-linux-melb:xfs-kern:26248a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Remove unnecessary local from open_exec dmapi path.Nathan Scott2006-06-191-14/+9
| | | | | | | | | | | | | | | | | | | | | SGI-PV: 904196 SGI-Modid: xfs-linux-melb:xfs-kern:26247a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Minor XFS documentation updates.Nathan Scott2006-06-131-10/+11
| | | | | | | | | | | | Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Fix broken const use inside local suffix_strtoul routine.Nathan Scott2006-06-091-3/+3
| | | | | | | | | | | | | | | | | | | | | SGI-PV: 904196 SGI-Modid: xfs-linux-melb:xfs-kern:26201a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Fix nused counter. It's currently getting set to -1 rather thanMandy Kirkconnell2006-06-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | getting decremented by 1. Since nused never reaches 0, the "if (!free->hdr.nused)" check in xfs_dir2_leafn_remove() fails every time and xfs_dir2_shrink_inode() doesn't get called when it should. This causes extra blocks to be left on an empty directory and the directory in unable to be converted back to inline extent mode. SGI-PV: 951958 SGI-Modid: xfs-linux-melb:xfs-kern:211382a Signed-off-by: Mandy Kirkconnell <alkirkco@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Fix mismerge of the fs_writable cleanup patch causing a freeze/thawNathan Scott2006-06-091-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | test hang. SGI-PV: 953563 SGI-Modid: xfs-linux-melb:xfs-kern:26182a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Fix up debug code so that bulkstat wont generate thousands ofNathan Scott2006-06-092-10/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | fsstress warnings. SGI-PV: 904196 SGI-Modid: xfs-linux-melb:xfs-kern:26111a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Remove unused parameter from di2xflags routine.Nathan Scott2006-06-091-5/+4
| | | | | | | | | | | | | | | | | | | | | SGI-PV: 904192 SGI-Modid: xfs-linux-melb:xfs-kern:26110a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Cleanup a missed porting conversion, and freezing.Nathan Scott2006-06-094-19/+11
| | | | | | | | | | | | | | | | | | | | | SGI-PV: 953338 SGI-Modid: xfs-linux-melb:xfs-kern:26109a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Resolve a namespace collision on remaining vtypes for FreeBSDNathan Scott2006-06-0917-93/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | porters. SGI-PV: 953338 SGI-Modid: xfs-linux-melb:xfs-kern:26108a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Resolve a namespace collision on vnode/vnodeops for FreeBSD porters.Nathan Scott2006-06-0936-636/+496
| | | | | | | | | | | | | | | | | | | | | SGI-PV: 953338 SGI-Modid: xfs-linux-melb:xfs-kern:26107a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Resolve a namespace collision on vfs/vfsops for FreeBSD porters.Nathan Scott2006-06-0919-224/+183
| | | | | | | | | | | | | | | | | | | | | SGI-PV: 9533338 SGI-Modid: xfs-linux-melb:xfs-kern:26106a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] statvfs component of directory/project quota support, codeNathan Scott2006-06-091-1/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | originally by Glen. SGI-PV: 932952 SGI-Modid: xfs-linux-melb:xfs-kern:26105a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Portability changes: remove prdev, stick to one diagnosticNathan Scott2006-06-0910-51/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | interface. SGI-PV: 953338 SGI-Modid: xfs-linux-melb:xfs-kern:26103a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Remove dead code from come bulkstat paths.Nathan Scott2006-06-093-20/+1
| | | | | | | | | | | | | | | | | | | | | SGI-PV: 904196 SGI-Modid: xfs-linux-melb:xfs-kern:26102a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Fix a typo in a header file comment.Nathan Scott2006-06-091-2/+2
| | | | | | | | | | | | | | | | | | | | | SGI-PV: 904196 SGI-Modid: xfs-linux-melb:xfs-kern:26101a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Start writeout earlier (on last close) in the case where we have aNathan Scott2006-06-095-94/+114
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | truncate down followed by delayed allocation (buffered writes) - worst case scenario for the notorious NULL files problem. This reduces the window where we are exposed to that problem significantly. SGI-PV: 917976 SGI-Modid: xfs-linux-melb:xfs-kern:26100a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Make the pflags test/set wrappers more legible for us mere humans.Nathan Scott2006-06-094-57/+24
| | | | | | | | | | | | | | | | | | | | | SGI-PV: 953338 SGI-Modid: xfs-linux-melb:xfs-kern:26099a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Fix a buffer refcount leak in dir2 code on a forced shutdown.Nathan Scott2006-06-091-1/+3
| | | | | | | | | | | | | | | | | | | | | SGI-PV: 904196 SGI-Modid: xfs-linux-melb:xfs-kern:26097a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Shutdown the filesystem if all device paths have gone. MadeNathan Scott2006-06-0918-57/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | shutdown vop flags consistent with sync vop flags declarations too. SGI-PV: 939911 SGI-Modid: xfs-linux-melb:xfs-kern:26096a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] getattr can return an error code, so propogate any from lowerNathan Scott2006-06-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | layers. SGI-PV: 904196 SGI-Modid: xfs-linux-melb:xfs-kern:26095a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Drop use of m_writeio_blocks when zeroing, its not meaningfulNathan Scott2006-06-091-14/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | anymore here. SGI-PV: 904196 SGI-Modid: xfs-linux-melb:xfs-kern:26094a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] lock validator: lockdep: small xfs init_rwsem() cleanup Ingo Molnar2006-06-091-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | init_rwsem() has no return value. This is not a problem if init_rwsem() is a function, but it's a problem if it's a do { ... } while (0) macro. (which lockdep introduces) SGI-PV: 904196 SGI-Modid: xfs-linux-melb:xfs-kern:26082a Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Over zealous with doing endian conversions. We endian converted theTim Shimmin2006-06-091-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | logged version of di_next_unlinked which is actually always stored in the correct ondisk format. This was pointed out to us by Shailendra Tripathi. And is evident in the xfs qa test of 121. SGI-PV: 953263 SGI-Modid: xfs-linux-melb:xfs-kern:26044a Signed-off-by: Tim Shimmin <tes@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Stop a BUG from occurring in generic_delete_inode by preventingDavid Chinner2006-06-091-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | transaction completion from marking the inode dirty while it is being cleaned up on it's way out of the system. SGI-PV: 952967 SGI-Modid: xfs-linux-melb:xfs-kern:26040a Signed-off-by: David Chinner <dgc@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] inode items and EFI/EFDs have different ondisk format for 32bit andTim Shimmin2006-06-095-61/+245
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 64bit kernels allow recovery to handle both versions and do the necessary decoding SGI-PV: 952214 SGI-Modid: xfs-linux-melb:xfs-kern:26011a Signed-off-by: Tim Shimmin <tes@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] In actual allocation of file system blocks and freeing extents, theYingping Lu2006-06-095-15/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | transaction within each such operation may involve multiple locking of AGF buffer. While the freeing extent function has sorted the extents based on AGF number before entering into transaction, however, when the file system space is very limited, the allocation of space would try every AGF to get space allocated, this could potentially cause out-of-order locking, thus deadlock could happen. This fix mitigates the scarce space for allocation by setting aside a few blocks without reservation, and avoid deadlock by maintaining ascending order of AGF locking. SGI-PV: 947395 SGI-Modid: xfs-linux-melb:xfs-kern:210801a Signed-off-by: Yingping Lu <yingping@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Add degframentation exclusion supportBarry Naujok2006-06-098-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | SGI-PV: 953061 SGI-Modid: xfs-linux-melb:xfs-kern:25986a Signed-off-by: Barry Naujok <bnaujok@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Fix a noatime regression related to updating inode atime field onNathan Scott2006-06-091-17/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | mmap only. SGI-PV: 952736 SGI-Modid: xfs-linux-melb:xfs-kern:25922a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Fix a comment typo, originally noticed by Ming Zhang.Nathan Scott2006-06-091-3/+3
| | | | | | | | | | | | | | | | | | | | | SGI-PV: 907752 SGI-Modid: xfs-linux-melb:xfs-kern:25921a Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Fix size argument in kmem_free().Mandy Kirkconnell2006-06-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | SGI-PV: 952291 SGI-Modid: xfs-linux-melb:xfs-kern:209807a Signed-off-by: Mandy Kirkconnell <alkirkco@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Originally the ATTR_DMI flag also had the functionality of theOlaf Weber2006-06-091-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ATTR_NOLOCK flag, but this was split off some time ago, as ATTR_DMI needed to be used separately. Two asserts were added to guard correctness of the code during the transition. These are no longer required. SGI-PV: 952145 SGI-Modid: xfs-linux-melb:xfs-kern:209633a Signed-off-by: Olaf Weber <olaf@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] endianess annotations for xfs_dir_leaf_entry_t Christoph Hellwig2006-06-094-78/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | SGI-PV: 943272 SGI-Modid: xfs-linux-melb:xfs-kern:25808a Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] endianess annotations for xfs_dir_leaf_hdr_t Christoph Hellwig2006-06-094-171/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | SGI-PV: 943272 SGI-Modid: xfs-linux-melb:xfs-kern:25807a Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] endianess annotations for xfs_dir2_data_entry_t Christoph Hellwig2006-06-096-27/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | SGI-PV: 943272 SGI-Modid: xfs-linux-melb:xfs-kern:25806a Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Nathan Scott <nathans@sgi.com>
| * | [XFS] Add parameters to xfs_bmapi() and xfs_bunmapi() to have them reportOlaf Weber2006-06-0919-166/+437
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the range spanned by modifications to the in-core extent map. Add XFS_BUNMAPI() and XFS_SWAP_EXTENTS() macros that call xfs_bunmapi() and xfs_swap_extents() via the ioops vector. Change all calls that may modify the in-core extent map for the data fork to go through the ioops vector. This allows a cache of extent map data to be kept in sync. SGI-PV: 947615 SGI-Modid: xfs-linux-melb:xfs-kern:209226a Signed-off-by: Olaf Weber <olaf@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
* | | [PATCH] Driver core: add generic "subsystem" link to all devicesKay Sievers2006-06-211-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Like the SUBSYTEM= key we find in the environment of the uevent, this creates a generic "subsystem" link in sysfs for every device. Userspace usually doesn't care at all if its a "class" or a "bus" device. This provides an unified way to determine the subsytem of a device, regardless of the way the driver core has created it. Signed-off-by: Kay Sievers <kay.sievers@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* | | Merge branch 'audit.b21' of ↵Linus Torvalds2006-06-209-719/+1037
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current * 'audit.b21' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current: (25 commits) [PATCH] make set_loginuid obey audit_enabled [PATCH] log more info for directory entry change events [PATCH] fix AUDIT_FILTER_PREPEND handling [PATCH] validate rule fields' types [PATCH] audit: path-based rules [PATCH] Audit of POSIX Message Queue Syscalls v.2 [PATCH] fix se_sen audit filter [PATCH] deprecate AUDIT_POSSBILE [PATCH] inline more audit helpers [PATCH] proc_loginuid_write() uses simple_strtoul() on non-terminated array [PATCH] update of IPC audit record cleanup [PATCH] minor audit updates [PATCH] fix audit_krule_to_{rule,data} return values [PATCH] add filtering by ppid [PATCH] log ppid [PATCH] collect sid of those who send signals to auditd [PATCH] execve argument logging [PATCH] fix deadlocks in AUDIT_LIST/AUDIT_LIST_RULES [PATCH] audit_panic() is audit-internal [PATCH] inotify (5/5): update kernel documentation ... Manual fixup of conflict in unclude/linux/inotify.h
| * | | [PATCH] log more info for directory entry change eventsAmy Griffis2006-06-203-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When an audit event involves changes to a directory entry, include a PATH record for the directory itself. A few other notable changes: - fixed audit_inode_child() hooks in fsnotify_move() - removed unused flags arg from audit_inode() - added audit log routines for logging a portion of a string Here's some sample output. before patch: type=SYSCALL msg=audit(1149821605.320:26): arch=40000003 syscall=39 success=yes exit=0 a0=bf8d3c7c a1=1ff a2=804e1b8 a3=bf8d3c7c items=1 ppid=739 pid=800 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttyS0 comm="mkdir" exe="/bin/mkdir" subj=root:system_r:unconfined_t:s0-s0:c0.c255 type=CWD msg=audit(1149821605.320:26): cwd="/root" type=PATH msg=audit(1149821605.320:26): item=0 name="foo" parent=164068 inode=164010 dev=03:00 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=root:object_r:user_home_t:s0 after patch: type=SYSCALL msg=audit(1149822032.332:24): arch=40000003 syscall=39 success=yes exit=0 a0=bfdd9c7c a1=1ff a2=804e1b8 a3=bfdd9c7c items=2 ppid=714 pid=777 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttyS0 comm="mkdir" exe="/bin/mkdir" subj=root:system_r:unconfined_t:s0-s0:c0.c255 type=CWD msg=audit(1149822032.332:24): cwd="/root" type=PATH msg=audit(1149822032.332:24): item=0 name="/root" inode=164068 dev=03:00 mode=040750 ouid=0 ogid=0 rdev=00:00 obj=root:object_r:user_home_dir_t:s0 type=PATH msg=audit(1149822032.332:24): item=1 name="foo" inode=164010 dev=03:00 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=root:object_r:user_home_t:s0 Signed-off-by: Amy Griffis <amy.griffis@hp.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| * | | [PATCH] proc_loginuid_write() uses simple_strtoul() on non-terminated arrayAl Viro2006-06-201-2/+3
| | | | | | | | | | | | | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| * | | [PATCH] execve argument loggingAl Viro2006-06-201-0/+6
| | | | | | | | | | | | | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>