Neil Brown [Fri, 5 Apr 2002 07:11:29 +0000 (23:11 -0800)]
[PATCH] PATCH 3 of 4 : knfsd : Store the fsid in the returned attributes instead of the device number
When a filesystem is exported with fsid= we should use that
fsid instead of the i_dev number when returning NFS attributes,
so that there is no chance of clients that depend on the filesys
id in the attributes getting confused by device numbers changing.
We only do this if the reference filehandle uses fsid to identify
the filesystem, so that a server can be converted from non-fsid= to
using fsid= without confusing active clients.
Neil Brown [Fri, 5 Apr 2002 07:11:22 +0000 (23:11 -0800)]
[PATCH] PATCH 2 of 4 : knfsd : Allow exporting of deviceless filesystems if fsid= given
Previously we could only export FS_REQUIRES_DEV filesystems
as we need a devno to put in the filehandle.
Now that we have fsid= (NFSEXP_FSID) we don't need a devno
to put in the filehandle so we can relax this requirement.
Neil Brown [Fri, 5 Apr 2002 07:11:15 +0000 (23:11 -0800)]
[PATCH] PATCH 1 of 4 : knfsd : Use symbols for size calculation for response sizes.
Use symbolic names for some common size components in the response
size calculation for the NFSD. This makes it easier to get the
numbers right and to review them.
This patch also fixes a few number for nfsv3 that were wrong.
Lets just kill this check -- it usually only catches drivers queueing
something in front of a started request on their own (such as shoving a
request sense in front of a failed packet command, for instance). So
it's either working around this detection in some drivers, or killing
it. I vote for the latter, patch attached against 2.5.8-pre1 :-)
Robert Love [Thu, 4 Apr 2002 09:25:22 +0000 (01:25 -0800)]
[PATCH] preemptive kernel behavior change: don't be rude
- do not manually set task->state
- instead, in preempt_schedule, set a flag in preempt_count that
denotes that this task is entering schedule off a kernel preemption.
- use this flag in schedule to jump to pick_next_task
- in preempt_schedule, upon return from schedule, unset the flag
- have entry.S just call preempt_schedule and not duplicate this work,
as Linus suggested. I agree. Note this makes debugging easier as
we keep a single point of entry for kernel preemptions.
The result: we can safely preempt non-TASK_RUNNING tasks. If one is
preempted, we can safely survive schedule because we won't handle the
special casing of non-TASK_RUNNING at the top of schedule. Thus other
tasks can run as desired and our non-TASK_RUNNING task will eventually
be rescheduled, in its original state, and complete happily.
This is the behavior we have in the 2.4 patches and 2.5 until
~2.5.6-pre. This works. It requires no other changes elsewhere (it
actually removes some special-casing Ingo did in the signal code).
moved files to different subdirectories to make try to make sense
of the current mess, and to allow usb client drivers to integrate into
the tree easier.
Dave Jones [Thu, 4 Apr 2002 06:23:21 +0000 (22:23 -0800)]
[PATCH] Improved allocator for NTFS
Originally by Anton Altaparmakov.
I think Anton is going to submit his rewritten NTFS soon making this null and void,
but in the interim, it fixes a known problem with NTFS and large allocations.
Robert Love [Thu, 4 Apr 2002 03:24:52 +0000 (19:24 -0800)]
[PATCH] kjournald exits with nonzero preempt_count
The preempt_count debug check that went into 2.5.8-pre1 already caught a
simple case in kjournald. Specifically, kjournald does not drop the BKL
when it exits as it knows schedule will do so for it.
For the sake of clarity and exiting with a preempt_count of zero, the
attached patch explicitly calls unlock_kernel when kjournald is exiting.
Eli Kupermann [Thu, 4 Apr 2002 01:19:38 +0000 (20:19 -0500)]
e100 net driver update 1/3:
The patch separates max busy wait constants making in max of 100 usec for
wait scb and max of 50 usec for wait cus idle. These constants found
sufficient using heavy traffic tests.
Andrew Morton [Thu, 4 Apr 2002 01:17:52 +0000 (20:17 -0500)]
ext3 filesystem sync mount speedup:
Again, we don't need to sync indirects as we dirty them because
we run a commit if IS_SYNC(inode) prior to returning to the
caller of write(2).
Writing a 10 meg file in 0.1 meg chunks is sped up by, err,
a factor of fifty. That's a best case.
Jeff Garzik [Thu, 4 Apr 2002 01:16:12 +0000 (20:16 -0500)]
Andrew Morton's ext2 sync mount speedup. Description:
At present, when mounted synchronously or with `chattr +S' in effect,
ext2 syncs the indirect blocks for every new block when extending a
file.
This is not necessary, because a sync is performed on the way out of
generic_file_write(). This will pick up all necessary data from
inode->i_dirty_buffers and inode->i_dirty_data_buffers, and is
sufficient.
The patch removes all the syncing of indirect blocks.
On a non-write-caching scsi disk, an untar of the util-linux tarball
runs three times faster. Writing a 100 megabyte file in one megabyte
chunks speeds up ten times.
The patch also removes the intermediate indirect block syncing on the
truncate() path. Instead, we sync the indirects at a single place, via
inode->i_dirty_buffers. This not only means that the writes (may)
cluster better. It means that we perform much, much less actual I/O
during truncate, because most or all of the indirects will no longer be
needed for the file, and will be invalidated.
fsync() and msync() still work correctly. One side effect of this
patch is that VM-initiated writepage() against a file hole will no
longer block on writeout of indirect blocks. This is good.
Andrew Morton [Thu, 4 Apr 2002 00:39:51 +0000 (19:39 -0500)]
This fixes the "i_blocks went wrong when the disk filled up"
problem.
In ext3_new_block() we increment i_blocks early, so the
quota operation can be performed outside lock_super().
But if the block allocation ends up failing, we forget to
undo the allocation.
This is not a serious bug, and probably does not warrant
an upgrade for production machines. Its effects are:
1) errors are generated from e2fsck and
2) users could appear to be over quota when they really aren't.
The patch undoes the accounting operation if the allocation
ends up failing.
Jean Tourrilhes [Thu, 4 Apr 2002 00:02:42 +0000 (19:02 -0500)]
IrDA USB disconnect changes:
o [CRITICA] Fix race condition between disconnect and the rest
o [CRITICA] Force synchronous unlink of URBs in disconnect
o [CRITICA] Cleanup instance if disconnect before close
<Following patch from Martin Diehl>
o [CRITICA] Call usb_submit_urb() with GPF_ATOMIC
Jean Tourrilhes [Thu, 4 Apr 2002 00:01:47 +0000 (19:01 -0500)]
IrDA discovery fixes:
o [FEATURE] Propagate mode of discovery to higher protocols
o [CORRECT] Disable passive discovery in ircomm and irlan
Prevent client and server to simultaneously connect to each other
o [CORRECT] Force expiry of discovery log on LAP disconnect