Commit Graph

1692 Commits

Author SHA1 Message Date
mlelstv
748a0d77b1 Fix block shift to work with different device block sizes.
Unlike other filesystems this has some side issues because
the shift values are stored in the superblock and because
userland utitlies share the same fsbtodb macros.

-> the kernel now ignores the value stored in the superblock.
-> the macro adaption is only done for defined(_KERNEL) code.
2010-01-31 10:54:10 +00:00
mlelstv
5e340cd634 Replace individual queries for partition information with
new helper function.
2010-01-31 10:50:23 +00:00
mlelstv
928ded5f56 Fix block shift to work with different device block sizes. 2010-01-31 10:37:57 +00:00
mlelstv
ba0d32752c Replace individual queries for partition information with
new helper function.
2010-01-31 10:30:40 +00:00
bouyer
aa0e1a2ecf vclean() actually sets v_tag to VT_NON but doesn't touch v_type.
getcleanvnode() sets v_type to VNON after releasing v_interlock.
So the thread doing quotaon(), quotaoff() or qsync() could vget()
a vnode which is being recycled in getcleanvnode(), after is has
been cleaned and v_interlock released, but before v_type has been
reset, leading to KASSERT(vp->v_usecount == 1) firing in
getnewvnode(), or qsync() dereferending a NULL pointer as in
PR kern/42205.
Fix by using the same tests as other ffs function traversing the mount
list: also check for VTOI(vp) == NULL, and VI_XLOCK in addition
to VI_CLEAN.
2010-01-15 19:46:35 +00:00
pooka
c3183f3251 The VATTR_NULL/VREF/VHOLD/HOLDRELE() macros lost their will to live
years ago when the kernel was modified to not alter ABI based on
DIAGNOSTIC, and now just call the respective function interfaces
(in lowercase).  Plenty of mix'n match upper/lowercase has creeped
into the tree since then.  Nuke the macros and convert all callsites
to lowercase.

no functional change
2010-01-08 11:35:07 +00:00
eeh
9d21c97885 Fix some more hangs and deadlocks. 2009-12-07 04:12:10 +00:00
tsutsui
5517f8a4c3 Add definitions for more reserved inodes. 2009-11-27 11:16:54 +00:00
yamt
a646187eba use NULL instead of 0 for pointers 2009-11-18 12:22:48 +00:00
eeh
bfd5cc9df2 This should fix a deadlock. 2009-11-17 22:49:24 +00:00
pooka
8454e30192 Create unwind log in global variable instead of automatic variable.
memory leak spotted by njoly's valgrind run
2009-11-17 17:08:57 +00:00
pooka
2e098f1f4e ... actually, define compat only for the kernel. Userlandia should
see only one version of the interfaces.
2009-11-05 17:16:36 +00:00
pooka
5207b24e34 Include compat/sys/time_types.h instead of compat/sys/time.h.
Fixes lint drama with interface name collisions.
2009-11-05 16:59:55 +00:00
pooka
c584ccaa0d Include compat code by default. 2009-11-05 11:54:49 +00:00
bouyer
6b8161200e getcleanvnode(): don't vclean() the vnode if it has gained another
reference while we were getting the v_interlock.
vget(): attempt prevent it from returning a clean vnode:
  if the vnode is being inactivated (by vrelel()), wait for
  vrelel() to complete (or return EBUSY if we can't wait), and return
  ENOENT if the vnode has been vclean'ed by vrelel()
Fix kern/41147 in a better way, hopefully fix other related race conditions.
2009-11-05 08:18:02 +00:00
hannken
d35df7da38 Now that softdep has left the tree the only place needing the ffs_lock()
hack is ffs_sync().

- Use the generic lock operations for ffs.
- Change ffs_sync() to omit the vnode lock while suspending.

Reviewed by: Antti Kantee <pooka@netbsd.org>
2009-11-04 09:45:05 +00:00
christos
2ef9c80a16 compile without COMPAT_50 2009-10-30 00:53:29 +00:00
eeh
f50f807334 Fix up numoutput accounting. 2009-10-29 18:20:11 +00:00
christos
fc0e85c95e PR/42246: NAKAJIMA Yoshihiro: provide COMPAT_50 for LFS 2009-10-29 17:10:32 +00:00
pooka
447898cbb0 update i_uid and i_gid after chown 2009-10-21 17:37:21 +00:00
bouyer
6d07b400dc Remove closes 3 & 4 from my licence. Lots of thanks to Soren Jacobsen
for the booring work !
2009-10-19 18:41:07 +00:00
hannken
4e246abd4c No longer abuse TAILQ internal data. 2009-10-15 10:05:48 +00:00
hannken
df5d842a2c ufs_rmdir(): move fstrans_done() after vput(). No more unlinked and
zero-sized directory inodes in snapshots.
2009-10-14 09:40:27 +00:00
hannken
8deb3262b5 Fix a deadlock where fscow_disestablish() blocks because outstanding
copy-on-write operations wait for si_snaplock.
2009-10-13 12:38:14 +00:00
rmind
ae2795775d ufsdirhash_recycle(): modify ufs_dirhashmem atomically. 2009-10-05 23:48:08 +00:00
dholland
6f7fa47c46 Avoid nasal demons. Code of the form
vput(vp);
   error = VFS_VGET(vp->v_mount, ...);

just isn't right. Because of vnode caching this *probably* never bit
anyone, except maybe under very heavy load, but still.
2009-09-28 00:39:03 +00:00
bouyer
7de71fb523 PR kern/41147: race between nfsd and local rm
Note that the race also exists between 2 nfs client, one of them doing the rm.
In ufs_ihashget(), vget() can return a vnode that has been vclean'ed because
vget() can sleep. After vget returns, check that vp is still connected with
ip, and that ip still points to the inode we want. This fix the NULL
pointer dereference in ufs_fhtovp() I've been seeing on a NFS server.

XXX I have no idea why using vput() instead of
vlockmgr(vp->v_vnlock, LK_RELEASE); vrele(vp); does not work.
2009-09-20 14:00:24 +00:00
bouyer
b9440228c5 If the WAPBL journal can't be read (ffs_wapbl_replay_start() fails),
mount the filesystem anyway if MNT_FORCE is present.
This allows to still boot single-user a system with a corrupted
WAPBL on /, and so get a chance to run fsck to fix it.
http://mail-index.netbsd.org/tech-kern/2009/08/17/msg005896.html
and followups.
2009-09-13 14:30:21 +00:00
bouyer
32992733fa Allow tunefs to clear any type of WAPBL log, not only in-filesystem
ones. Discussed in
http://mail-index.netbsd.org/tech-kern/2009/08/17/msg005896.html
and followups.
2009-09-13 14:13:23 +00:00
tsutsui
e7713433d4 Move declaration of ufs_hashlock into <ufs/ufs_extern.h> from each c source. 2009-09-13 05:17:36 +00:00
tsutsui
80d52b1bc6 Use proper macro, some KNF, fix typo. 2009-09-12 14:59:59 +00:00
tsutsui
58c74e6160 Whitespace nits. 2009-09-12 11:35:46 +00:00
tsutsui
a811b3a680 Migrate from u_intNN_t to uintNN_t. 2009-09-12 11:27:39 +00:00
tsutsui
d592174fdd Reduce diffs a bit between ext2fs_reload() and ffs_reload(). 2009-09-12 02:50:38 +00:00
tsutsui
2620184bc7 Add a missed brelse(9) call after bread(9) in ext2fs_reload().
This may close PR kern/28712 (ext2fs hang on mount after fsck).
2009-09-12 02:32:14 +00:00
tsutsui
91f14b108d Pull a fix from ffs_vfsops.c rev 1.248:
> Fix bug introduced in revision 1.174(*) where a NULL fspec with an MNT_UPDATE
> command would always return EINVAL. This broke fsck on root, where fsck'ing
> a dirty root would always return an error causing rc to resort in a reboot.
(*) This is "Apply the NFS exports list rototill patch" change
    in ext2fs_vfsops.c rev 1.91.
2009-09-12 02:25:39 +00:00
tsutsui
f551f24480 Pull a fix for mount function from ffs_vfsops.c rev1.186:
> Change ffs_mount, in MNT_UPDATE case, to check dev_t's for equality
> instead of just vnode pointers.  Fixes erroneous "does not match mounted
> device" errors from mount(8) in the presence of MFS /dev, init.root, &c.
2009-09-12 01:43:52 +00:00
tsutsui
f2831b63aa Fix botch around argument check in ext2fs_mount(). Taken from ffs_vfsops.c.
Fixes LOCKDEBUG panic which is the same one mentioned in PR kern/41078
on trying to mount_ext2fs against a raw device, while that panic
seems to have another route cause around module_autoload() in
sys/miscfs/specfs/spec_vnops.c:spec_open().
2009-09-11 15:59:07 +00:00
wiz
8b28c44203 Add missing parenthesis in #ifdef LFS_USE_B_INVAL.
From Henning Petersen in PR 41841.
2009-08-07 13:58:38 +00:00
pooka
b828513eea Compensate v_numoutput & nestbuf for lfs's rather peculiar I/O habits. 2009-08-05 15:39:57 +00:00
pooka
e7780eca66 remember to nestiobuf_done() too 2009-08-05 14:37:01 +00:00
pooka
307631b2c8 Use nestiobuf instead of homerolled equivalent. 2009-08-05 14:09:26 +00:00
bouyer
94fb626feb Fix previous: mutex_destroy() the right mutex 2009-08-02 20:50:33 +00:00
bouyer
9bbfba8140 Add missing mutex_destroy() before pool_cache_put(). Prevents a
"Mutex error: lockdebug_alloc: already initialized" panic.
2009-08-01 09:08:53 +00:00
pooka
7ec7a51957 Don't free extattr resources until it is certain that unmount
succeeds.  Also, "unmount system call" -> "unmount vfs operation"
in comment just so that our comments aren't 15+ years outdated.
2009-07-31 20:58:50 +00:00
pooka
7982dc729e Restore error behaviour bulldozed in rev 1.246.
might fix PR kern/41769
2009-07-23 01:10:02 +00:00
dholland
b58d0cd33a typo in comment 2009-07-22 04:49:19 +00:00
dholland
22ba08b022 minor knf 2009-07-19 04:16:23 +00:00
dholland
0b98e26158 typo in comment 2009-07-19 03:39:14 +00:00
christos
48e6aff258 Fix bug introduced in revision 1.174 where a NULL fspec with an MNT_UPDATE
command would always return EINVAL. This broke fsck on root, where fsck'ing
a dirty root would always return an error causing rc to resort in a reboot.
2009-07-06 16:07:18 +00:00