272461 |
03-Oct-2014 |
gjb |
Copy stable/10@r272459 to releng/10.1 as part of the 10.1-RELEASE process.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
265243 |
02-May-2014 |
ae |
MFC r264494: Use SMB_QUERY_FS_SIZE_INFO request to populate statfs structure. When server doesn't support this request, try to use SMB_INFO_ALLOCATION. And use SMB_COM_QUERY_INFORMATION_DISK request as fallback.
MFC r264600: Remove redundant unlock.
This code was removed from the opensolaris and darwin's netsmb implementations, in DfBSD it also has been disabled.
|
256281 |
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
254627 |
21-Aug-2013 |
ken |
Expand the use of stat(2) flags to allow storing some Windows/DOS and CIFS file attributes as BSD stat(2) flags.
This work is intended to be compatible with ZFS, the Solaris CIFS server's interaction with ZFS, somewhat compatible with MacOS X, and of course compatible with Windows.
The Windows attributes that are implemented were chosen based on the attributes that ZFS already supports.
The summary of the flags is as follows:
UF_SYSTEM: Command line name: "system" or "usystem" ZFS name: XAT_SYSTEM, ZFS_SYSTEM Windows: FILE_ATTRIBUTE_SYSTEM
This flag means that the file is used by the operating system. FreeBSD does not enforce any special handling when this flag is set.
UF_SPARSE: Command line name: "sparse" or "usparse" ZFS name: XAT_SPARSE, ZFS_SPARSE Windows: FILE_ATTRIBUTE_SPARSE_FILE
This flag means that the file is sparse. Although ZFS may modify this in some situations, there is not generally any special handling for this flag.
UF_OFFLINE: Command line name: "offline" or "uoffline" ZFS name: XAT_OFFLINE, ZFS_OFFLINE Windows: FILE_ATTRIBUTE_OFFLINE
This flag means that the file has been moved to offline storage. FreeBSD does not have any special handling for this flag.
UF_REPARSE: Command line name: "reparse" or "ureparse" ZFS name: XAT_REPARSE, ZFS_REPARSE Windows: FILE_ATTRIBUTE_REPARSE_POINT
This flag means that the file is a Windows reparse point. ZFS has special handling code for reparse points, but we don't currently have the other supporting infrastructure for them.
UF_HIDDEN: Command line name: "hidden" or "uhidden" ZFS name: XAT_HIDDEN, ZFS_HIDDEN Windows: FILE_ATTRIBUTE_HIDDEN
This flag means that the file may be excluded from a directory listing if the application honors it. FreeBSD has no special handling for this flag.
The name and bit definition for UF_HIDDEN are identical to the definition in MacOS X.
UF_READONLY: Command line name: "urdonly", "rdonly", "readonly" ZFS name: XAT_READONLY, ZFS_READONLY Windows: FILE_ATTRIBUTE_READONLY
This flag means that the file may not written or appended, but its attributes may be changed.
ZFS currently enforces this flag, but Illumos developers have discussed disabling enforcement.
The behavior of this flag is different than MacOS X. MacOS X uses UF_IMMUTABLE to represent the DOS readonly permission, but that flag has a stronger meaning than the semantics of DOS readonly permissions.
UF_ARCHIVE: Command line name: "uarch", "uarchive" ZFS_NAME: XAT_ARCHIVE, ZFS_ARCHIVE Windows name: FILE_ATTRIBUTE_ARCHIVE
The UF_ARCHIVED flag means that the file has changed and needs to be archived. The meaning is same as the Windows FILE_ATTRIBUTE_ARCHIVE attribute, and the ZFS XAT_ARCHIVE and ZFS_ARCHIVE attribute.
msdosfs and ZFS have special handling for this flag. i.e. they will set it when the file changes.
sys/param.h: Bump __FreeBSD_version to 1000047 for the addition of new stat(2) flags.
chflags.1: Document the new command line flag names (e.g. "system", "hidden") available to the user.
ls.1: Reference chflags(1) for a list of file flags and their meanings.
strtofflags.c: Implement the mapping between the new command line flag names and new stat(2) flags.
chflags.2: Document all of the new stat(2) flags, and explain the intended behavior in a little more detail. Explain how they map to Windows file attributes.
Different filesystems behave differently with respect to flags, so warn the application developer to take care when using them.
zfs_vnops.c: Add support for getting and setting the UF_ARCHIVE, UF_READONLY, UF_SYSTEM, UF_HIDDEN, UF_REPARSE, UF_OFFLINE, and UF_SPARSE flags.
All of these flags are implemented using attributes that ZFS already supports, so the on-disk format has not changed.
ZFS currently doesn't allow setting the UF_REPARSE flag, and we don't really have the other infrastructure to support reparse points.
msdosfs_denode.c, msdosfs_vnops.c: Add support for getting and setting UF_HIDDEN, UF_SYSTEM and UF_READONLY in MSDOSFS.
It supported SF_ARCHIVED, but this has been changed to be UF_ARCHIVE, which has the same semantics as the DOS archive attribute instead of inverse semantics like SF_ARCHIVED.
After discussion with Bruce Evans, change several things in the msdosfs behavior:
Use UF_READONLY to indicate whether a file is writeable instead of file permissions, but don't actually enforce it.
Refuse to change attributes on the root directory, because it is special in FAT filesystems, but allow most other attribute changes on directories.
Don't set the archive attribute on a directory when its modification time is updated. Windows and DOS don't set the archive attribute in that scenario, so we are now bug-for-bug compatible.
smbfs_node.c, smbfs_vnops.c: Add support for UF_HIDDEN, UF_SYSTEM, UF_READONLY and UF_ARCHIVE in SMBFS.
This is similar to changes that Apple has made in their version of SMBFS (as of smb-583.8, posted on opensource.apple.com), but not quite the same.
We map SMB_FA_READONLY to UF_READONLY, because UF_READONLY is intended to match the semantics of the DOS readonly flag. The MacOS X code maps both UF_IMMUTABLE and SF_IMMUTABLE to SMB_FA_READONLY, but the immutable flags have stronger meaning than the DOS readonly bit.
stat.h: Add definitions for UF_SYSTEM, UF_SPARSE, UF_OFFLINE, UF_REPARSE, UF_ARCHIVE, UF_READONLY and UF_HIDDEN.
The definition of UF_HIDDEN is the same as the MacOS X definition.
Add commented-out definitions of UF_COMPRESSED and UF_TRACKED. They are defined in MacOS X (as of 10.8.2), but we do not implement them (yet).
ufs_vnops.c: Add support for getting and setting UF_ARCHIVE, UF_HIDDEN, UF_OFFLINE, UF_READONLY, UF_REPARSE, UF_SPARSE, and UF_SYSTEM in UFS. Alphabetize the flags that are supported.
These new flags are only stored, UFS does not take any action if the flag is set.
Sponsored by: Spectra Logic Reviewed by: bde (earlier version)
|
252558 |
03-Jul-2013 |
davide |
- Fix double frees/user after free. - Allocate using smb_rq_alloc() instead of inlining it.
Reported by: uqs Found with: Coverity Scan
|
252355 |
28-Jun-2013 |
davide |
Properly use v_data field. This magically worked (even if wrong) until now because v_data is the first field of the structure, but it's not something we should rely on.
|
252353 |
28-Jun-2013 |
davide |
Garbage collect an useless check. smp should be never NULL.
|
252352 |
28-Jun-2013 |
davide |
Plug a couple of leakages in smbfs_lookup().
|
250238 |
04-May-2013 |
davide |
Change VM_OBJECT_LOCK/UNLOCK() -> VM_OBJECT_WLOCK/WUNLOCK() to reflect the recent switch of the vm object lock to a rwlock.
Reported by: attilio
|
250237 |
04-May-2013 |
davide |
Overhaul locking in netsmb, getting rid of the obsolete lockmgr() primitive. This solves a long standing LOR between smb_conn and smb_vc.
Tested by: martymac, pho (previous version)
|
250236 |
04-May-2013 |
davide |
Completely rewrite the interface to smbdev switching from dev_clone to cdevpriv(9). This commit changes the semantic of mount_smbfs in userland as well, which now passes file descriptor in order to to mount a specific filesystem istance.
Reviewed by: attilio, ed Tested by: martymac
|
248101 |
09-Mar-2013 |
davide |
smbfs_lookup() in the DOTDOT case operates on dvp->n_parent without proper locking. This doesn't prevent in any case reclaim of the vnode. Avoid this not going over-the-wire in this case and relying on subsequent smbfs_getattr() call to restore consistency. While I'm here, change a couple of SMBVDEBUG() in MPASS(). sbmfs_smb_lookup() doesn't and shouldn't know about '.' and '..'
Reported by: pho's stress2 suite
|
248099 |
09-Mar-2013 |
davide |
- Initialize variable in smbfs_rename() to silent compiler warning - Fix smbfs_mkdir() return value (in case of error).
Reported by: pho
|
243548 |
26-Nov-2012 |
davide |
- smbfs_rename() might return an error value without correctly upgrading the vnode use count, and this might cause the kernel to panic if compiled with WITNESS enable. - Be sure to put the '\0' terminator to the rpath string.
Sponsored by: iXsystems inc.
|
243397 |
22-Nov-2012 |
davide |
- Remove reset of vpp pointer in some places as long as it's not really useful and has the side effect of obfuscating the code a bit. - Remove spurious references to simple_lock.
Reported by: attilio [1] Sponsored by: iXsystems inc.
|
243396 |
22-Nov-2012 |
davide |
Until now, smbfs_fullpath() computed the full path starting from the vnode and following back the chain of n_parent pointers up to the root, without acquiring the locks of the n_parent vnodes analyzed during the computation. This is immediately wrong because if the vnode lock is not held there's no guarantee on the validity of the vnode pointer or the data. In order to fix, store the whole path in the smbnode structure so that smbfs_fullpath() can use this information.
Discussed with: kib Reported and tested by: pho Sponsored by: iXsystems inc.
|
243038 |
14-Nov-2012 |
davide |
Get rid of some old debug code. It provides checks similar to the one offered by RedZone so there's no need to keep it.
Sponsored by: iXsystems inc.
|
243033 |
14-Nov-2012 |
davide |
Fix the lookup in the DOTDOT case in the same way as other filesystems do, i.e. inlining the vn_vget_ino() algorithm.
Sponsored by: iXsystems inc.
|
242387 |
31-Oct-2012 |
davide |
- Do not put in the mntqueue half-constructed vnodes. - Change the code so that it relies on vfs_hash rather than on a home-made hashtable. - There's no need to inline fnv_32_buf().
Reviewed by: delphij Tested by: pho Sponsored by: iXsystems inc.
|
242386 |
31-Oct-2012 |
davide |
Fix panic due to page faults while in kernel mode, under conditions of VM pressure. The reason is that in some codepaths pointers to stack variables were passed from one thread to another.
In collaboration with: pho Reported by: pho's stress2 suite Sponsored by: iXsystems inc.
|
242384 |
31-Oct-2012 |
davide |
Change the code to use %jd as printf() placeholder for uio_offset and cast to intmax_t.
Suggested by: pjd Sponsored by: iXsystems inc.
|
242097 |
25-Oct-2012 |
davide |
Fix build in case we have SMBVDEBUG turned on.
Reviewed by: gnn Approved by: gnn Sponsored by: iXsystems inc.
|
242092 |
25-Oct-2012 |
davide |
- Remove the references to the deprecated zalloc kernel interface - Use M_ZERO flag in malloc() rather than bzero() - malloc() with M_NOWAIT can't return NULL so there's no need to check
Reviewed by: alc Approved by: alc
|
239246 |
14-Aug-2012 |
kib |
Do not leave invalid pages in the object after the short read for a network file systems (not only NFS proper). Short reads cause pages other then the requested one, which were not filled by read response, to stay invalid.
Change the vm_page_readahead_finish() interface to not take the error code, but instead to make a decision to free or to (de)activate the page only by its validity. As result, not requested invalid pages are freed even if the read RPC indicated success.
Noted and reviewed by: alc MFC after: 1 week
|
239065 |
05-Aug-2012 |
kib |
After the PHYS_TO_VM_PAGE() function was de-inlined, the main reason to pull vm_param.h was removed. Other big dependency of vm_page.h on vm_param.h are PA_LOCK* definitions, which are only needed for in-kernel code, because modules use KBI-safe functions to lock the pages.
Stop including vm_param.h into vm_page.h. Include vm_param.h explicitely for the kernel code which needs it.
Suggested and reviewed by: alc MFC after: 2 weeks
|
239040 |
04-Aug-2012 |
kib |
Reduce code duplication and exposure of direct access to struct vm_page oflags by providing helper function vm_page_readahead_finish(), which handles completed reads for pages with indexes other then the requested one, for VOP_GETPAGES().
Reviewed by: alc MFC after: 1 week
|
238539 |
16-Jul-2012 |
brueffer |
Simply error handling by moving the allocation of np down to where it is actually used. While here, improve style a little.
Submitted by: mjg MFC after: 2 weeks
|
238491 |
15-Jul-2012 |
brueffer |
Save a bzero() by using M_ZERO.
Obtained from: Dragonfly BSD (change 4faaf07c3d7ddd120deed007370aaf4d90b72ebb) MFC after: 2 weeks
|
234607 |
23-Apr-2012 |
trasz |
Remove unused thread argument to vrecycle().
Reviewed by: kib
|
231088 |
06-Feb-2012 |
jhb |
Rename cache_lookup_times() to cache_lookup() and retire the old API and ABI stub for cache_lookup().
|
230249 |
17-Jan-2012 |
mckusick |
Make sure all intermediate variables holding mount flags (mnt_flag) and that all internal kernel calls passing mount flags are declared as uint64_t so that flags in the top 32-bits are not lost.
MFC after: 2 weeks
|
229272 |
02-Jan-2012 |
ed |
Use strchr() and strrchr().
It seems strchr() and strrchr() are used more often than index() and rindex(). Therefore, simply migrate all kernel code to use it.
For the XFS code, remove an empty line to make the code identical to the code in the Linux kernel.
|
228156 |
30-Nov-2011 |
kib |
Rename vm_page_set_valid() to vm_page_set_valid_range(). The vm_page_set_valid() is the most reasonable name for the m->valid accessor.
Reviewed by: attilio, alc
|
227650 |
18-Nov-2011 |
kevlo |
Add unicode support to msdosfs and smbfs; original pathes from imura, bug fixes by Kuan-Chung Chiu <buganini at gmail dot com>.
Tested by me in production for several days at work.
|
227293 |
07-Nov-2011 |
ed |
Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs.
This means that their use is restricted to a single C file.
|
227267 |
06-Nov-2011 |
ed |
Remove MALLOC_DECLAREs of nonexisting malloc-pools.
After careful grepping, it seems none of these pools can be found in our source tree. They are not in use, nor are they defined.
|
224290 |
24-Jul-2011 |
mckusick |
This update changes the mnt_flag field in the mount structure from 32 bits to 64 bits and eliminates the unused mnt_xflag field. The existing mnt_flag field is completely out of bits, so this update gives us room to expand. Note that the f_flags field in the statfs structure is already 64 bits, so the expanded mnt_flag field can be exported without having to make any changes in the statfs structure.
Approved by: re (bz)
|
223843 |
07-Jul-2011 |
jonathan |
Make a comment more accurate.
This comment refers to CAP_NT_SMBS, which does not exist; it should refer to SMB_CAP_NT_SMBS. Fixing this comment makes it easier for people interested in Capsicum to grep around for capability rights, whose identifiers are of the form 'CAP_[A-Z_]'.
Approved by: mentor (rwatson), re (Capsicum blanket) Sponsored by: Google Inc
|
222586 |
01-Jun-2011 |
kib |
In the VOP_PUTPAGES() implementations, change the default error from VM_PAGER_AGAIN to VM_PAGER_ERROR for the uwritten pages. Return VM_PAGER_AGAIN for the partially written page. Always forward at least one page in the loop of vm_object_page_clean().
VM_PAGER_ERROR causes the page reactivation and does not clear the page dirty state, so the write is not lost.
The change fixes an infinite loop in vm_object_page_clean() when the filesystem returns permanent errors for some page writes.
Reported and tested by: gavin Reviewed by: alc, rmacklem MFC after: 1 week
|
213363 |
02-Oct-2010 |
alc |
M_USE_RESERVE has been deprecated for a decade. Eliminate any uses that have no run-time effect.
|
211531 |
20-Aug-2010 |
jhb |
Add dedicated routines to toggle lockmgr flags such as LK_NOSHARE and LK_CANRECURSE after a lock is created. Use them to implement macros that otherwise manipulated the flags directly. Assert that the associated lockmgr lock is exclusively locked by the current thread when manipulating these flags to ensure the flag updates are safe. This last change required some minor shuffling in a few filesystems to exclusively lock a brand new vnode slightly earlier.
Reviewed by: kib MFC after: 3 days
|
209320 |
18-Jun-2010 |
alc |
Eliminate unnecessary page queues locking.
|
207746 |
07-May-2010 |
alc |
Push down the page queues lock into vm_page_activate().
|
207728 |
06-May-2010 |
alc |
Eliminate page queues locking around most calls to vm_page_free().
|
207669 |
05-May-2010 |
alc |
Acquire the page lock around all remaining calls to vm_page_free() on managed pages that didn't already have that lock held. (Freeing an unmanaged page, such as the various pmaps use, doesn't require the page lock.)
This allows a change in vm_page_remove()'s locking requirements. It now expects the page lock to be held instead of the page queues lock. Consequently, the page queues lock is no longer required at all by callers to vm_page_rename().
Discussed with: kib
|
207662 |
05-May-2010 |
trasz |
Move checking against RLIMIT_FSIZE into one place, vn_rlimit_fsize().
Reviewed by: kib
|
207584 |
03-May-2010 |
kib |
Lock the page around vm_page_activate() and vm_page_deactivate() calls where it was missed. The wrapped fragments now protect wire_count with page lock.
Reviewed by: alc
|
206361 |
07-Apr-2010 |
joel |
Switch to our preferred 2-clause BSD license.
Approved by: bp
|
201798 |
08-Jan-2010 |
trasz |
Remove unused smbfs_smb_qpathinfo().
|
198448 |
24-Oct-2009 |
ru |
Spell DIAGNOSTIC correctly.
|
192986 |
28-May-2009 |
alc |
Make *getpages()s' assertion on the state of each page's dirty bits stricter.
|
192134 |
15-May-2009 |
alc |
Eliminate unnecessary clearing of the page's dirty mask from various getpages functions.
Eliminate a stale comment.
|
192010 |
12-May-2009 |
alc |
Eliminate gratuitous clearing of the page's dirty mask.
|
191990 |
11-May-2009 |
attilio |
Remove the thread argument from the FSD (File-System Dependent) parts of the VFS. Now all the VFS_* functions and relating parts don't want the context as long as it always refers to curthread.
In some points, in particular when dealing with VOPs and functions living in the same namespace (eg. vflush) which still need to be converted, pass curthread explicitly in order to retain the old behaviour. Such loose ends will be fixed ASAP.
While here fix a bug: now, UFS_EXTATTR can be compiled alone without the UFS_EXTATTR_AUTOSTART option.
VFS KPI is heavilly changed by this commit so thirdy parts modules needs to be recompiled. Bump __FreeBSD_version in order to signal such situation.
|
191964 |
10-May-2009 |
alc |
Eliminate stale comments.
Eliminate a case of unnecessary page queues locking.
|
187960 |
31-Jan-2009 |
bz |
After r186194 the *fs_strategy() functions always return 0. So we are no longer interested in the error returned from the *fs_doio() functions. With that we can remove the error variable as its value is unused now.
Submitted by: Christoph Mallon christoph.mallon@gmx.de
|
186194 |
16-Dec-2008 |
trasz |
According to phk@, VOP_STRATEGY should never, _ever_, return anything other than 0. Make it so. This fixes "panic: VOP_STRATEGY failed bp=0xc320dd90 vp=0xc3b9f648", encountered when writing to an orphaned filesystem. Reason for the panic was the following assert: KASSERT(i == 0, ("VOP_STRATEGY failed bp=%p vp=%p", bp, bp->b_vp)); at vfs_bio:bufstrategy().
Reviewed by: scottl, phk Approved by: rwatson (mentor) Sponsored by: FreeBSD Foundation
|
184572 |
02-Nov-2008 |
rwatson |
Catch up with netsmb locking: explicit thread arguments no longer required.
|
184413 |
28-Oct-2008 |
trasz |
Introduce accmode_t. This is required for NFSv4 ACLs - it will be neccessary to add more V* constants, and the variables changed by this patch were often being assigned to mode_t variables, which is 16 bit.
Approved by: rwatson (mentor)
|
184205 |
23-Oct-2008 |
des |
Retire the MALLOC and FREE macros. They are an abomination unto style(9).
MFC after: 3 months
|
183754 |
10-Oct-2008 |
attilio |
Remove the struct thread unuseful argument from bufobj interface. In particular following functions KPI results modified: - bufobj_invalbuf() - bufsync()
and BO_SYNC() "virtual method" of the buffer objects set. Main consumers of bufobj functions are affected by this change too and, in particular, functions which changed their KPI are: - vinvalbuf() - g_vfs_close()
Due to the KPI breakage, __FreeBSD_version will be bumped in a later commit.
As a side note, please consider just temporary the 'curthread' argument passing to VOP_SYNC() (in bufsync()) as it will be axed out ASAP
Reviewed by: kib Tested by: Giovanni Trematerra <giovanni dot trematerra at gmail dot com>
|
183214 |
20-Sep-2008 |
kib |
Initialize va_rdev to NODEV instead of 0 or VNOVAL in VOP_GETATTR(). NODEV is more appropriate when va_rdev doesn't have a meaningful value.
Submitted by: Jaakko Heinonen <jh saunalahti fi> Suggested by: bde Discussed on: freebsd-fs MFC after: 1 month
|
182371 |
28-Aug-2008 |
attilio |
Decontextualize the couplet VOP_GETATTR / VOP_SETATTR as the passed thread was always curthread and totally unuseful.
Tested by: Giovanni Trematerra <giovanni dot trematerra at gmail dot com>
|
180139 |
01-Jul-2008 |
rwatson |
Remove unused 'td' arguments from smbfs_hash_lock() and smbfs_hash_unlock().
MFC after: 3 days
|
178243 |
16-Apr-2008 |
kib |
Move the head of byte-level advisory lock list from the filesystem-specific vnode data to the struct vnode. Provide the default implementation for the vop_advlock and vop_advlockasync. Purge the locks on the vnode reclaim by using the lf_purgelocks(). The default implementation is augmented for the nfs and smbfs. In the nfs_advlock, push the Giant inside the nfs_dolock.
Before the change, the vop_advlock and vop_advlockasync have taken the unlocked vnode and dereferenced the fs-private inode data, racing with with the vnode reclamation due to forced unmount. Now, the vop_getattr under the shared vnode lock is used to obtain the inode size, and later, in the lf_advlockasync, after locking the vnode interlock, the VI_DOOMED flag is checked to prevent an operation on the doomed vnode.
The implementation of the lf_purgelocks() is submitted by dfr.
Reported by: kris Tested by: kris, pho Discussed with: jeff, dfr MFC after: 2 weeks
|
178195 |
14-Apr-2008 |
dfr |
When calling lf_advlock to unlock a record, make sure that ap->a_fl->l_type is F_UNLCK otherwise we trigger a LOCKF_DEBUG panic.
MFC after: 3 days
|
176744 |
02-Mar-2008 |
rwatson |
Replace lockmgr lock protecting smbfs node hash table with sx lock.
MFC after: 1 month
|
176559 |
25-Feb-2008 |
attilio |
Axe the 'thread' argument from VOP_ISLOCKED() and lockstatus() as it is always curthread.
As KPI gets broken by this patch, manpages and __FreeBSD_version will be updated by further commits.
Tested by: Andrea Barberio <insomniac at slackware dot it>
|
176519 |
24-Feb-2008 |
attilio |
Introduce some functions in the vnode locks namespace and in the ffs namespace in order to handle lockmgr fields in a controlled way instead than spreading all around bogus stubs: - VN_LOCK_AREC() allows lock recursion for a specified vnode - VN_LOCK_ASHARE() allows lock sharing for a specified vnode
In FFS land: - BUF_AREC() allows lock recursion for a specified buffer lock - BUF_NOREC() disallows recursion for a specified buffer lock
Side note: union_subr.c::unionfs_node_update() is the only other function directly handling lockmgr fields. As this is not simple to fix, it has been left behind as "sole" exception.
|
175635 |
24-Jan-2008 |
attilio |
Cleanup lockmgr interface and exported KPI: - Remove the "thread" argument from the lockmgr() function as it is always curthread now - Axe lockcount() function as it is no longer used - Axe LOCKMGR_ASSERT() as it is bogus really and no currently used. Hopefully this will be soonly replaced by something suitable for it. - Remove the prototype for dumplockinfo() as the function is no longer present
Addictionally: - Introduce a KASSERT() in lockstatus() in order to let it accept only curthread or NULL as they should only be passed - Do a little bit of style(9) cleanup on lockmgr.h
KPI results heavilly broken by this change, so manpages and FreeBSD_version will be modified accordingly by further commits.
Tested by: matteo
|
175294 |
13-Jan-2008 |
attilio |
VOP_LOCK1() (and so VOP_LOCK()) and VOP_UNLOCK() are only used in conjuction with 'thread' argument passing which is always curthread. Remove the unuseful extra-argument and pass explicitly curthread to lower layer functions, when necessary.
KPI results broken by this change, which should affect several ports, so version bumping and manpage update will be further committed.
Tested by: kris, pho, Diego Sardina <siarodx at gmail dot com>
|
175202 |
10-Jan-2008 |
attilio |
vn_lock() is currently only used with the 'curthread' passed as argument. Remove this argument and pass curthread directly to underlying VOP_LOCK1() VFS method. This modify makes the code cleaner and in particular remove an annoying dependence helping next lockmgr() cleanup. KPI results, obviously, changed.
Manpage and FreeBSD_version will be updated through further commits.
As a side note, would be valuable to say that next commits will address a similar cleanup about VFS methods, in particular vop_lock1 and vop_unlock.
Tested by: Diego Sardina <siarodx at gmail dot com>, Andrea Di Pasquale <whyx dot it at gmail dot com>
|
172697 |
16-Oct-2007 |
alfred |
Get rid of qaddr_t.
Requested by: bde
|
170292 |
04-Jun-2007 |
attilio |
Do proper "locking" for missing vmmeters part. Now, we assume no more sched_lock protection for some of them and use the distribuited loads method for vmmeter (distribuited through CPUs).
Reviewed by: alc, bde Approved by: jeff (mentor)
|
170183 |
01-Jun-2007 |
kib |
Change the VOP_OPEN(), vn_open() vnode operation and d_fdopen() cdev operation argument from being file descriptor index into the pointer to struct file: part 2. Convert calls missed in the first big commit.
Noted by: rwatson Pointy hat to: kib
|
170170 |
31-May-2007 |
attilio |
Revert VMCNT_* operations introduction. Probabilly, a general approach is not the better solution here, so we should solve the sched_lock protection problems separately.
Requested by: alc Approved by: jeff (mentor)
|
170152 |
31-May-2007 |
kib |
Revert UF_OPENING workaround for CURRENT. Change the VOP_OPEN(), vn_open() vnode operation and d_fdopen() cdev operation argument from being file descriptor index into the pointer to struct file.
Proposed and reviewed by: jhb Reviewed by: daichi (unionfs) Approved by: re (kensmith)
|
170093 |
29-May-2007 |
rwatson |
Where I previously removed calls to kdb_enter(), now remove include of kdb.h.
Pointed out by: bde
|
170015 |
27-May-2007 |
rwatson |
Rather than entering the debugger via kdb_enter() when detecting memory corruption under SMBUFS_NAME_DEBUG, panic() with the same error message.
|
169667 |
18-May-2007 |
jeff |
- define and use VMCNT_{GET,SET,ADD,SUB,PTR} macros for manipulating vmcnts. This can be used to abstract away pcpu details but also changes to use atomics for all counters now. This means sched lock is no longer responsible for protecting counts in the switch routines.
Contributed by: Attilio Rao <attilio@FreeBSD.org>
|
167497 |
13-Mar-2007 |
tegge |
Make insmntque() externally visibile and allow it to fail (e.g. during late stages of unmount). On failure, the vnode is recycled.
Add insmntque1(), to allow for file system specific cleanup when recycling vnode on failure.
Change getnewvnode() to no longer call insmntque(). Previously, embryonic vnodes were put onto the list of vnode belonging to a file system, which is unsafe for a file system marked MPSAFE.
Change vfs_hash_insert() to no longer lock the vnode. The caller now has that responsibility.
Change most file systems to lock the vnode and call insmntque() or insmntque1() after a new vnode has been sufficiently setup. Handle failed insmntque*() calls by propagating errors to callers, possibly after some file system specific cleanup.
Approved by: re (kensmith) Reviewed by: kib In collaboration with: kib
|
167086 |
27-Feb-2007 |
jhb |
Use pause() rather than tsleep() on stack variables and function pointers.
|
164033 |
06-Nov-2006 |
rwatson |
Sweep kernel replacing suser(9) calls with priv(9) calls, assigning specific privilege names to a broad range of privileges. These may require some future tweaking.
Sponsored by: nCircle Network Security, Inc. Obtained from: TrustedBSD Project Discussed on: arch@ Reviewed (at least in part) by: mlaier, jmg, pjd, bde, ceri, Alex Lyashkov <umka at sevcity dot net>, Skip Ford <skip dot ford at verizon dot net>, Antoine Brodin <antoine dot brodin at laposte dot net>
|
163993 |
05-Nov-2006 |
bp |
Create a bidirectional mapping of the DOS 'read only' attribute to the 'w' flag.
PR: kern/77958 Submitted by: ghozzy gmail com MFC after: 1 month
|
163652 |
24-Oct-2006 |
phk |
Ditch crummy fattime <--> timespec conversion functions
|
162647 |
26-Sep-2006 |
tegge |
Use mount interlock to protect all changes to mnt_flag and mnt_kern_flag. This eliminates a race where MNT_UPDATE flag could be lost when nmount() raced against sync(), sync_fsync() or quotactl().
|
161125 |
09-Aug-2006 |
alc |
Introduce a field to struct vm_page for storing flags that are synchronized by the lock on the object containing the page.
Transition PG_WANTED and PG_SWAPINPROG to use the new field, eliminating the need for holding the page queues lock when setting or clearing these flags. Rename PG_WANTED and PG_SWAPINPROG to VPO_WANTED and VPO_SWAPINPROG, respectively.
Eliminate the assertion that the page queues lock is held in vm_page_io_finish().
Eliminate the acquisition and release of the page queues lock around calls to vm_page_io_finish() in kern_sendfile() and vfs_unbusy_pages().
|
160437 |
17-Jul-2006 |
jhb |
Lock the smb share before doing a 'put' on it in smbfs_unmount().
Tested by: "Jiawei Ye" <leafy7382 at gmail>
|
159117 |
31-May-2006 |
cperciva |
Enable inadvertantly disabled "securenet" access controls in ypserv. [1]
Correct a bug in the handling of backslash characters in smbfs which can allow an attacker to escape from a chroot(2). [2]
Security: FreeBSD-SA-06:15.ypserv [1] Security: FreeBSD-SA-06:16.smbfs [2]
|
158915 |
25-May-2006 |
ups |
Call vm_object_page_clean() with the object lock held.
Submitted by: kensmith@ Reviewed by: mohans@ MFC after: 6 days
|
158906 |
25-May-2006 |
ups |
Do not set B_NOCACHE on buffers when releasing them in flushbuflist(). If B_NOCACHE is set the pages of vm backed buffers will be invalidated. However clean buffers can be backed by dirty VM pages so invalidating them can lead to data loss. Add support for flush dirty page in the data invalidation function of some network file systems.
This fixes data losses during vnode recycling (and other code paths using invalbuf(*,V_SAVE,*,*)) for data written using an mmaped file.
Collaborative effort by: jhb@,mohans@,peter@,ps@,ups@ Reviewed by: tegge@ MFC after: 7 days
|
158651 |
16-May-2006 |
phk |
Since DELAY() was moved, most <machine/clock.h> #includes have been unnecessary.
|
154487 |
17-Jan-2006 |
alfred |
I ran into an nfs client panic a couple of times in a row over the last few days. I tracked it down to the fact that nfs_reclaim() is setting vp->v_data to NULL _before_ calling vnode_destroy_object(). After silence from the mailing list I checked further and discovered that ufs_reclaim() is unique among FreeBSD filesystems for calling vnode_destroy_object() early, long before tossing v_data or much of anything else, for that matter. The rest, including NFS, appear to be identical, as if they were just clones of one original routine.
The enclosed patch fixes all file systems in essentially the same way, by moving the call to vnode_destroy_object() to early in the routine (before the call to vfs_hash_remove(), if any). I have only tested NFS, but I've now run for over eighteen hours with the patch where I wouldn't get past four or five without it.
Submitted by: Frank Mayhar Requested by: Mohan Srinivasan MFC After: 1 week
|
153400 |
14-Dec-2005 |
des |
Eradicate caddr_t from the VFS API.
|
153121 |
05-Dec-2005 |
avatar |
Recent nmount(2) adoption in mount_smbfs(8) did not flag the "long" option since mount_smbfs(8) assumed long name mounting by default unless "-n long" was explicitly specified.
Rather than supplying a "long" option in mount_smbfs(8), this commit brings back the original behaviour by associating SMBFS_MOUNT_NO_LONG with the "nolong" option. This should fix the broken long file names on smbfs people observed recently.
Reported by: Vladimir Grebenschikov <vova at fbsd dot ru> Reviewed by: phk Tested by: Slawa Olhovchenkov <slw at zxy dot spb dot ru>
|
153084 |
04-Dec-2005 |
ru |
Fix -Wundef from compiling the amd64 LINT.
|
152678 |
22-Nov-2005 |
bp |
Fix interaction with Windows 2000/XP based servers:
If the complete reply on the TRANS2_FIND_FIRST2 request fits exactly into one responce packet, then next call to TRANS2_FIND_NEXT2 will return zero entries and server will close current transaction. To avoid subsequent errors we should not perform FIND_CLOSE2 request.
PR: kern/78953 Submitted by: Jim Carroll
|
152466 |
16-Nov-2005 |
rodrigc |
- Add errmsg to the list of smbfs mount options. - Use vfs_mount_error() to propagate smbfs mount errors back to userspace.
Reviewed by: bp (smbfs maintainer)
|
151897 |
31-Oct-2005 |
rwatson |
Normalize a significant number of kernel malloc type names:
- Prefer '_' to ' ', as it results in more easily parsed results in memory monitoring tools such as vmstat.
- Remove punctuation that is incompatible with using memory type names as file names, such as '/' characters.
- Disambiguate some collisions by adding subsystem prefixes to some memory types.
- Generally prefer lower case to upper case.
- If the same type is defined in multiple architecture directories, attempt to use the same name in additional cases.
Not all instances were caught in this change, so more work is required to finish this conversion. Similar changes are required for UMA zone names.
|
151349 |
14-Oct-2005 |
yar |
In preparation for making the modules actually use opt_*.h files provided in the kernel build directory, fix modules that were failing to build this way due to not quite correct kernel option usage. In particular:
ng_mppc.c uses two complementary options, both of which are listed in sys/conf/files. Ideally, there should be a separate option for including ng_mppc.c in kernel build, but now only NETGRAPH_MPPC_ENCRYPTION is usable anyway, the other one requires proprietary files.
nwfs and smbfs were trying to ensure they were built with proper network components, but the check was rather questionable.
Discussed with: ru
|
145974 |
06-May-2005 |
anholt |
Staticize a symbol used only in this file.
PR: kern/43613 Submitted by: Matt Emmerton, matt at gsicomp dot on dot ca
|
145900 |
05-May-2005 |
takawata |
Fix breakage on alpha.
Pointed out by: hrs via IRC
|
145872 |
04-May-2005 |
takawata |
Make smbfs capable to use 16bit char set in filenames.
PR:78110
|
145006 |
13-Apr-2005 |
jeff |
- Change all filesystems and vfs_cache to relock the dvp once the child is locked in the ISDOTDOT case. Se vfs_lookup.c r1.79 for details.
Sponsored by: Isilon Systems, Inc.
|
144852 |
10-Apr-2005 |
delphij |
Initialize vp before using it. Failing to do this can cause instant panic when trying to access a file on mounted smbfs.
Submitted by: takawata at jp freebsd org
|
144299 |
29-Mar-2005 |
jeff |
- Remove wantparent, it is no longer necessary. An assert in vfs_lookup.c prevents any callers from doing a modifying op without LOCKPARENT or WANTPARENT.
|
144297 |
29-Mar-2005 |
jeff |
- cache_lookup() now locks the new vnode for us to prevent some races. Remove redundant code.
Sponsored by: Isilon Systems, Inc.
|
144206 |
28-Mar-2005 |
jeff |
- We no longer have to bother with PDIRUNLOCK, lookup() handles it for us. - Network filesystems are written with a special idiom that checks the cache first, and may even unlock dvp before discovering that a network round-trip is required to resolve the name. I believe dvp is prevented from being recycled even in the forced unmount case by the shared lock on the mount point. If not, this code should grow checks for VI_DOOMED after it relocks dvp or it will access NULL v_data fields.
Sponsored by: Isilon Systems, Inc.
|
144058 |
24-Mar-2005 |
jeff |
- Update vfs_root implementations to match the new prototype. None of these filesystems will support shared locks until they are explicitly modified to do so. Careful review must be done to ensure that this is safe for each individual filesystem.
Sponsored by: Isilon Systems, Inc.
|
143513 |
13-Mar-2005 |
jeff |
- The VI_DOOMED flag now signals the end of a vnode's relationship with the filesystem. Check that rather than VI_XLOCK. - VOP_INACTIVE should no longer drop the vnode lock. - The vnode lock is required around calls to vrecycle() and vgone().
Sponsored by: Isilon Systems, Inc.
|
142238 |
22-Feb-2005 |
phk |
vp->v_id is a private field for the vfs namecache and it is a big mistake that NFS ever started using it and an even bigger that it got copied&pasted to nwfs and smbfs.
Replace with use of vhold()/vdrop().
|
141620 |
10-Feb-2005 |
phk |
Make smbfs_debuglevel private.
|
141619 |
10-Feb-2005 |
phk |
don't call vprint with NULL.
|
140965 |
29-Jan-2005 |
peadar |
Unbreak a few filesystems for which vnode_create_vobject() wasn't being called in "open", causing mmap() to fail.
Where possible, pass size of file to vnode_create_vobject() rather than having it find it out the hard way via VOP_LOOKUP
Reviewed by: phk
|
140939 |
28-Jan-2005 |
phk |
Make filesystems get rid of their own vnodes vnode_pager object in VOP_RECLAIM().
|
140936 |
28-Jan-2005 |
phk |
Remove unused argument to vrecycle()
|
140223 |
14-Jan-2005 |
phk |
Eliminate unused and constant arguments to smbfs_vinvalbuf()
|
140220 |
14-Jan-2005 |
phk |
Eliminate unused and unnecessary "cred" argument from vinvalbuf()
|
140196 |
13-Jan-2005 |
phk |
Whitespace in vop_vector{} initializations.
|
139776 |
06-Jan-2005 |
imp |
/* -> /*- for copyright notices, minor format tweaks as necessary
|
138678 |
11-Dec-2004 |
phk |
typo
|
138490 |
06-Dec-2004 |
phk |
Convert to nmount. Add omount compat.
Unpropagate the sm_args function into the runtime part.
|
138412 |
05-Dec-2004 |
phk |
VFS_STATFS(mp, ...) is mostly called with &mp->mnt_stat, but a few cases doesn't. Most of the implementations have grown weeds for this so they copy some fields from mnt_stat if the passed argument isn't that.
Fix this the cleaner way: Always call the implementation on mnt_stat and copy that in toto to the VFS_STATFS argument if different.
|
138290 |
01-Dec-2004 |
phk |
Back when VOP_* was introduced, we did not have new-style struct initializations but we did have lofty goals and big ideals.
Adjust to more contemporary circumstances and gain type checking.
Replace the entire vop_t frobbing thing with properly typed structures. The only casualty is that we can not add a new VOP_ method with a loadable module. History has not given us reason to belive this would ever be feasible in the the first place.
Eliminate in toto VOCALL(), vop_t, VNODEOP_SET() etc.
Give coda correct prototypes and function definitions for all vop_()s.
Generate a bit more data from the vnode_if.src file: a struct vop_vector and protype typedefs for all vop methods.
Add a new vop_bypass() and make vop_default be a pointer to another struct vop_vector.
Remove a lot of vfs_init since vop_vector is ready to use from the compiler.
Cast various vop_mumble() to void * with uppercase name, for instance VOP_PANIC, VOP_NULL etc.
Implement VCALL() by making vdesc_offset the offsetof() the relevant function pointer in vop_vector. This is disgusting but since the code is generated by a script comparatively safe. The alternative for nullfs etc. would be much worse.
Fix up all vnode method vectors to remove casts so they become typesafe. (The bulk of this is generated by scripts)
|
138270 |
01-Dec-2004 |
phk |
Mechanically change prototypes for vnode operations to use the new typedefs.
|
138075 |
25-Nov-2004 |
phk |
Use system wide no-op vfs_start function.
|
137479 |
09-Nov-2004 |
phk |
Refuse attempts to mount root filesystem
|
135280 |
15-Sep-2004 |
phk |
Remove unused B_WRITEINPROG flag
|
134897 |
07-Sep-2004 |
phk |
Explicitly pass vnode to smbfs_doio() function.
|
132902 |
30-Jul-2004 |
phk |
Put a version element in the VFS filesystem configuration structure and refuse initializing filesystems with a wrong version. This will aid maintenance activites on the 5-stable branch.
s/vfs_mount/vfs_omount/
s/vfs_nmount/vfs_mount/
Name our filesystems mount function consistently.
Eliminate the namiedata argument to both vfs_mount and vfs_omount. It was originally there to save stack space. A few places abused it to get hold of some credentials to pass around. Effectively it is unused.
Reorganize the root filesystem selection code.
|
132653 |
26-Jul-2004 |
cperciva |
Rename suser_cred()'s PRISON_ROOT flag to SUSER_ALLOWJAIL. This is somewhat clearer, but more importantly allows for a consistent naming scheme for suser_cred flags.
The old name is still defined, but will be removed in a few days (unless I hear any complaints...)
Discussed with: rwatson, scottl Requested by: jhb
|
132094 |
13-Jul-2004 |
phk |
Another LINT compilation fix
|
132023 |
12-Jul-2004 |
alfred |
Make VFS_ROOT() and vflush() take a thread argument. This is to allow filesystems to decide based on the passed thread which vnode to return. Several filesystems used curthread, they now use the passed thread.
|
131924 |
10-Jul-2004 |
marcel |
Update for the KDB framework: o Call kdb_enter() instead of Debugger().
|
128992 |
06-May-2004 |
alc |
Make vm_page's PG_ZERO flag immutable between the time of the page's allocation and deallocation. This flag's principal use is shortly after allocation. For such cases, clearing the flag is pointless. The only unusual use of PG_ZERO is in vfs_bio_clrbuf(). However, allocbuf() never requests a prezeroed page. So, vfs_bio_clrbuf() never sees a prezeroed page.
Reviewed by: tegge@
|
125637 |
10-Feb-2004 |
tjr |
Fixes problems that occurred when a file was removed and a directory created with the same name, and vice versa: - Immediately recycle vnodes of files & directories that have been deleted or renamed. - When looking an entry in the VFS name cache or smbfs's private cache, make sure the vnode type is consistent with the type of file the server thinks it is, and re-create the vnode if it isn't.
The alternative to this is to recycle vnodes unconditionally when their use count drops to 0, but this would make all the caching we do mostly useless.
PR: 62342 MFC after: 2 weeks
|
125454 |
04-Feb-2004 |
jhb |
Locking for the per-process resource limits structure. - struct plimit includes a mutex to protect a reference count. The plimit structure is treated similarly to struct ucred in that is is always copy on write, so having a reference to a structure is sufficient to read from it without needing a further lock. - The proc lock protects the p_limit pointer and must be held while reading limits from a process to keep the limit structure from changing out from under you while reading from it. - Various global limits that are ints are not protected by a lock since int writes are atomic on all the archs we support and thus a lock wouldn't buy us anything. - All accesses to individual resource limits from a process are abstracted behind a simple lim_rlimit(), lim_max(), and lim_cur() API that return either an rlimit, or the current or max individual limit of the specified resource from a process. - dosetrlimit() was renamed to kern_setrlimit() to match existing style of other similar syscall helper functions. - The alpha OSF/1 compat layer no longer calls getrlimit() and setrlimit() (it didn't used the stackgap when it should have) but uses lim_rlimit() and kern_setrlimit() instead. - The svr4 compat no longer uses the stackgap for resource limits calls, but uses lim_rlimit() and kern_setrlimit() instead. - The ibcs2 compat no longer uses the stackgap for resource limits. It also no longer uses the stackgap for accessing sysctl's for the ibcs2_sysconf() syscall but uses kernel_sysctl() instead. As a result, ibcs2_sysconf() no longer needs Giant. - The p_rlimit macro no longer exists.
Submitted by: mtm (mostly, I only did a few cleanups and catchups) Tested on: i386 Compiled on: alpha, amd64
|
124434 |
12-Jan-2004 |
tjr |
Fix an inverted test for NOPEN in the unused function smb_smb_flush().
|
124326 |
10-Jan-2004 |
tjr |
Restore closing of SMB find handle in smbfs_close().
|
124115 |
04-Jan-2004 |
tjr |
In smbfs_inactive(), only invalidate the node's attribute cache if we had to send a file close request to the server.
|
123724 |
22-Dec-2003 |
tjr |
Make oldsize in smbfs_getattr() 64 bits wide instead of 32 to avoid truncation when files are larger than 4GB.
|
123245 |
07-Dec-2003 |
des |
Remove useless SMP check code.
|
122551 |
12-Nov-2003 |
phk |
Don't mess about with spare fields in public structures.
|
121196 |
18-Oct-2003 |
phk |
Initialize b_offset before calling VOP_STRATEGY/VOP_SPECSTRATEGY.
Remove various comments of KASSERTS and comments about B_PHYS which does not apply anymore.
|
121190 |
18-Oct-2003 |
phk |
Convert some if(bla) panic("foo") to KASSERTS to improve grep-ability.
|
120775 |
05-Oct-2003 |
jeff |
- Don't cache_purge() in *_reclaim routines. vclean() does it for us so this is redundant.
|
120770 |
04-Oct-2003 |
alc |
Synchronize access to a vm page's valid field using the containing vm object's lock.
|
120730 |
04-Oct-2003 |
jeff |
- Remove the backtrace() call from the *_vinvalbuf() functions. Thanks to a stack trace supplied by phk, I now understand what's going on here. The check for VI_XLOCK stops us from calling vinvalbuf once the vnode has been partially torn down in vclean(). It is not clear that this would cause a problem. Document this in nfs_bio.c, which is where the other two filesystems copied this code from.
|
120492 |
26-Sep-2003 |
fjoe |
- Support for multibyte charsets in LIBICONV. - CD9660_ICONV, NTFS_ICONV and MSDOSFS_ICONV kernel options (with corresponding modules). - kiconv(3) for loadable charset conversion tables support.
Submitted by: Ryuichiro Imura <imura@ryu16.org>
|
120471 |
26-Sep-2003 |
tjr |
Allow the [, ], and = characters in non-8.3 filenames since they are allowed by Windows (ref: MS KB article 120138).
XXX From my reading of the CIFS specification, it's not clear that clients need to validate filenames at all.
PR: 57123 Submitted by: Paul Coucher MFC after: 1 month
|
120264 |
19-Sep-2003 |
jeff |
- Remove interlock protection around VI_XLOCK. The interlock is not sufficient to guarantee that this race is not hit. The XLOCK will likely have to be redesigned due to the way reference counting and mutexes work in FreeBSD. We currently can not be guaranteed that xlock was not set and cleared while we were blocked on the interlock while waiting to check for XLOCK. This would lead us to reference a vnode which was not the vnode we requested. - Add a backtrace() call inside of INVARIANTS in the hopes of finding out if this condition is ever hit. It should not, since we should be retaining a reference to the vnode in these cases. The reference would be sufficient to block recycling.
|
118047 |
26-Jul-2003 |
phk |
Add a "int fd" argument to VOP_OPEN() which in the future will contain the filedescriptor number on opens from userland.
The index is used rather than a "struct file *" since it conveys a bit more information, which may be useful to in particular fdescfs and /dev/fd/*
For now pass -1 all over the place.
|
117949 |
24-Jul-2003 |
peter |
size_t != int. Make this compile on 64 bit platforms (eg: amd64). Also, "u_short value; if (value > 0xffff)" can never be true.
|
116561 |
19-Jun-2003 |
alc |
Lock the vm object when freeing a vm page.
|
116486 |
17-Jun-2003 |
tjr |
Send the close request to the SMB server in smbfs_inactive(), instead of smbfs_close(). This fixes paging to and from mmap()'d regions of smbfs files after the descriptor has been closed, and makes thttpd, GNU ld, and perhaps more things work that depend on being able to do this.
PR: 48291
|
116412 |
15-Jun-2003 |
phk |
Add the same KASSERT to all VOP_STRATEGY and VOP_SPECSTRATEGY implementations to check that the buffer points to the correct vnode.
|
116338 |
14-Jun-2003 |
tjr |
Don't follow smbnode n_parent pointer when NREFPARENT flag is not set in smb_fphelp(): the parent vnode may have already been recycled since we don't hold a reference to it. Fixes a panic when rebooting with mdconfig -t vnode devices referring to vnodes on a smbfs mount.
|
116271 |
12-Jun-2003 |
phk |
Initialize struct vfsops C99-sparsely.
Submitted by: hmp Reviewed by: phk
|
114216 |
29-Apr-2003 |
kan |
Deprecate machine/limits.h in favor of new sys/limits.h. Change all in-tree consumers to include <sys/limits.h>
Discussed on: standards@ Partially submitted by: Craig Rodrigues <rodrigc@attbi.com>
|
112934 |
01-Apr-2003 |
jeff |
- smb_td_intr takes a thread as an argument not a proc.
|
112933 |
01-Apr-2003 |
jeff |
- smb_proc_intr is now spelled smb_td_intr.
Noticed by: phk Pointy hat to: jeffr
|
112915 |
01-Apr-2003 |
tjr |
Give the M_WAITOK flag explicitly to the MALLOC call to silence a runtime warning ("Bad malloc flags: 0").
|
112119 |
11-Mar-2003 |
kan |
Rename vfs_stdsync function to vfs_stdnosync which matches more closely what function is really doing. Update all existing consumers to use the new name.
Introduce a new vfs_stdsync function, which iterates over mount point's vnodes and call FSYNC on each one of them in turn.
Make nwfs and smbfs use this new function instead of rolling their own identical sync implementations.
Reviewed by: jeff
|
111944 |
06-Mar-2003 |
tjr |
Remove fragments of support for the FreeBSD 3.x and 4.x branches.
|
111841 |
03-Mar-2003 |
njl |
Finish cleanup of vprint() which was begun with changing v_tag to a string. Remove extraneous uses of vop_null, instead defering to the default op. Rename vnode type "vfs" to the more descriptive "syncer". Fix formatting for various filesystems that use vop_print.
|
111748 |
02-Mar-2003 |
des |
More low-hanging fruit: kill caddr_t in calls to wakeup(9) / [mt]sleep(9).
|
111742 |
02-Mar-2003 |
des |
Clean up whitespace, s/register //, refrain from strong urge to ANSIfy.
|
111741 |
02-Mar-2003 |
des |
uiomove-related caddr_t -> void * (just the low-hanging fruit)
|
111127 |
19-Feb-2003 |
tjr |
Do not call smbfs_attr_cacheremove() in the EXDEV case in smbfs_rename(). One of the vnodes is on different mount and is possibly on a different kind of filesystem; treating it as an smbfs vnode then writing to it will probably corrupt it.
PR: 48381 MFC after: 1 month
|
111119 |
19-Feb-2003 |
imp |
Back out M_* changes, per decision of the TRB.
Approved by: trb
|
110533 |
08-Feb-2003 |
tjr |
Revert removal of vnode and VFS stubs; bp asserts that they are needed.
|
110501 |
07-Feb-2003 |
tjr |
Garbage-collect stub VFS ops, use the defaults instead.
|
110500 |
07-Feb-2003 |
tjr |
Garbage-collect stub vnode ops, use the defaults instead.
|
110314 |
04-Feb-2003 |
tjr |
Add missing permission checks to the smbfs VOP_SETATTR vnode op for the case where the caller requests to change access or modification times.
MFC after: 3 days
|
110299 |
03-Feb-2003 |
phk |
Split the global timezone structure into two integer fields to prevent the compiler from optimizing assignments into byte-copy operations which might make access to the individual fields non-atomic.
Use the individual fields throughout, and don't bother locking them with Giant: it is no longer needed.
Inspired by: tjr
|
110272 |
03-Feb-2003 |
tjr |
Use vaccess() instead of rolling our own access checks. This fixes a bug where requests to open a file in append mode were always denied, and will also be useful when capabilities and auditing are implemented.
|
110043 |
29-Jan-2003 |
tjr |
Escape the backslash in badchars so that smbfs_pathcheck() correctly rejects pathnames with backslashes in them (and to avoid a syntax error).
Found by: FlexeLint
|
109623 |
21-Jan-2003 |
alfred |
Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0. Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
|
108648 |
04-Jan-2003 |
phk |
Since Jeffr made the std* functions the default in rev 1.63 of kern/vfs_defaults.c it is wrong for the individual filesystems to use the std* functions as that prevents override of the default.
Found by: src/tools/tools/vop_table
|
108470 |
30-Dec-2002 |
schweikh |
Fix typos, mostly s/ an / a / where appropriate and a few s/an/and/ Add FreeBSD Id tag where missing.
|
107890 |
15-Dec-2002 |
tjr |
Remove redundant check for negative or zero v_usecount; vrele() already checks that.
|
107842 |
13-Dec-2002 |
tjr |
Keep trying to flush the vnode list for the mount while some are still busy and we are making progress towards making them not busy. This is needed because smbfs vnodes reference their parent directory but may appear after their parent in the mount's vnode list; one pass over the list is not sufficient in this case.
This stops attempts to unmount idle smbfs mounts failing with EBUSY.
|
107822 |
13-Dec-2002 |
tjr |
Fix build with SMB_VNODE_DEBUG defined; use td_proc->p_pid instead of the nonexistent td_pid.
|
107821 |
13-Dec-2002 |
tjr |
Store a reference to the parent directory's vnode in struct smbnode, not to the parent's smbnode, which may be freed during the lifetime of the child if the mount is forcibly unmounted. umount -f should now work properly (ie. not panic) on smbfs mounts.
|
106595 |
07-Nov-2002 |
jhb |
Cast a pointer to a uintptr_t to quiet a warning.
|
105077 |
14-Oct-2002 |
mckusick |
Regularize the vop_stdlock'ing protocol across all the filesystems that use it. Specifically, vop_stdlock uses the lock pointed to by vp->v_vnlock. By default, getnewvnode sets up vp->v_vnlock to reference vp->v_lock. Filesystems that wish to use the default do not need to allocate a lock at the front of their node structure (as some still did) or do a lockinit. They can simply start using vn_lock/VOP_UNLOCK. Filesystems that wish to manage their own locks, but still use the vop_stdlock functions (such as nullfs) can simply replace vp->v_vnlock with a pointer to the lock that they wish to have used for the vnode. Such filesystems are responsible for setting the vp->v_vnlock back to the default in their vop_reclaim routine (e.g., vp->v_vnlock = &vp->v_lock).
In theory, this set of changes cleans up the existing filesystem lock interface and should have no function change to the existing locking scheme.
Sponsored by: DARPA & NAI Labs.
|
104004 |
26-Sep-2002 |
phk |
Return ENOTTY on incorrect ioctls.
|
103936 |
25-Sep-2002 |
jeff |
- Use vrefcnt() where it is safe to do so instead of doing direct and unlocked accesses to v_usecount. - Lock access to the buf lists in the various sync routines. interlock locking could be avoided almost entirely in leaf filesystems if the fsync function had a generic helper.
|
103559 |
18-Sep-2002 |
njl |
Remove any VOP_PRINT that redundantly prints the tag. Move lockmgr_printinfo() into vprint() for everyone's benefit.
Suggested by: bde
|
103537 |
18-Sep-2002 |
bp |
Always open file in the DENYNONE mode and let the server to decide what is good for this file. This should allow read only access to file which is already opened on server.
|
103533 |
18-Sep-2002 |
bp |
Implement additional SMB calls to allow proper update of file size as some file servers fail to do it in the right way.
New NFLUSHWIRE flag marks pending flush request(s).
NB: not all cases covered by this commit.
Obtained from: Darwin
|
103314 |
14-Sep-2002 |
njl |
Remove all use of vnode->v_tag, replacing with appropriate substitutes. v_tag is now const char * and should only be used for debugging.
Additionally: 1. All users of VT_NTS now check vfsconf->vf_type VFCF_NETWORK 2. The user of VT_PROCFS now checks for the new flag VV_PROCDEP, which is propagated by pseudofs to all child vnodes if the fs sets PFS_PROCDEP.
Suggested by: phk Reviewed by: bde, rwatson (earlier version)
|
101308 |
04-Aug-2002 |
jeff |
- Replace v_flag with v_iflag and v_vflag - v_vflag is protected by the vnode lock and is used when synchronization with VOP calls is needed. - v_iflag is protected by interlock and is used for dealing with vnode management issues. These flags include X/O LOCK, FREE, DOOMED, etc. - All accesses to v_iflag and v_vflag have either been locked or marked with mp_fixme's. - Many ASSERT_VOP_LOCKED calls have been added where the locking was not clear. - Many functions in vfs_subr.c were restructured to provide for stronger locking.
Idea stolen from: BSD/OS
|
101200 |
02-Aug-2002 |
alc |
o Lock page queue accesses in nwfs and smbfs. o Assert that the page queues lock is held in vm_page_deactivate().
|
96755 |
16-May-2002 |
trhodes |
More s/file system/filesystem/g
|
95480 |
26-Apr-2002 |
bp |
UIO_NOCOPY is not supported for now, so refuse read opeartion if this flag is set. The full emulation of bio are on its way...
|
95315 |
23-Apr-2002 |
bp |
Track nfs's getpages() changes:
Properly count v_vnodepgsin. Do not reread page if is already valid. Properly handle partially filled pages.
|
95314 |
23-Apr-2002 |
bp |
Get rid from extra #ifdefs.
|
94602 |
13-Apr-2002 |
bp |
Check write permissions before creating anything.
PR: kern/27883 MFC after: 1 week
|
94177 |
08-Apr-2002 |
phk |
Remove 3 instances of vm_zone.h inclusion.
|
92462 |
17-Mar-2002 |
mckusick |
Add a flags parameter to VFS_VGET to pass through the desired locking flags when acquiring a vnode. The immediate purpose is to allow polling lock requests (LK_NOWAIT) needed by soft updates to avoid deadlock when enlisting other processes to help with the background cleanup. For the future it will allow the use of shared locks for read access to vnodes. This change touches a lot of files as it affects most filesystems within the system. It has been well tested on FFS, loopback, and CD-ROM filesystems. only lightly on the others, so if you find a problem there, please let me (mckusick@mckusick.com) know.
|
91406 |
27-Feb-2002 |
jhb |
Simple p_ucred -> td_ucred changes to start using the per-thread ucred reference.
|
88318 |
20-Dec-2001 |
dillon |
Fix a BUF_TIMELOCK race against BUF_LOCK and fix a deadlock in vget() against VM_WAIT in the pageout code. Both fixes involve adjusting the lockmgr's timeout capability so locks obtained with timeouts do not interfere with locks obtained without a timeout.
Hopefully MFC: before the 4.5 release
|
88279 |
20-Dec-2001 |
bp |
Previous commit was intented to silence a warning, not to change codepath.
|
88263 |
20-Dec-2001 |
sheldonh |
Silence harmless "smbfs_closel: Negative opencount" messages at unmount time.
Thanks to iedowse for the background information.
Submitted by: bp
|
87798 |
13-Dec-2001 |
sheldonh |
Add module dependency on libmchain.
With this change, mounting an smb share (using mount_smb, which is not yet included in the tree) without any of smbfs, libiconv or libmchain compiled into the kernel or loaded works.
|
87599 |
10-Dec-2001 |
obrien |
Update to C99, s/__FUNCTION__/__func__/, also don't use ANSI string concatenation.
|
87194 |
02-Dec-2001 |
bp |
Catch up with KSE changes.
Submitted by: Max Khon <fjoe@iclub.nsu.ru>
|
85339 |
23-Oct-2001 |
dillon |
Change the vnode list under the mount point from a LIST to a TAILQ in preparation for an implementation of limiting code for kern.maxvnodes.
MFC after: 3 days
|
82517 |
29-Aug-2001 |
ache |
smbfs_advlock: simplify overflow checks (copy from kern_lockf.c) minor formatting issues to minimize differences
|
82347 |
26-Aug-2001 |
ache |
Cosmetique & style fixes from bde
|
82270 |
24-Aug-2001 |
ache |
Copy from kern_lockf.c: remove extra check
|
82210 |
23-Aug-2001 |
ache |
Copy yet one check for SEEK_END overflow
|
82203 |
23-Aug-2001 |
ache |
Copy my newly introduced l_len<0 'oops' fix from kern_lockf.c
|
82201 |
23-Aug-2001 |
ache |
Copy POSIX l_len<0 handling from kern_lockf.c
|
82196 |
23-Aug-2001 |
ache |
Cosmetique: correct English in comments non-cosmetique: add missing break; - original code was broken here
|
82190 |
23-Aug-2001 |
ache |
Move <machine/*> after <sys/*>
Pointed by: bde
|
82175 |
23-Aug-2001 |
ache |
adv. lock: copy EOVERFLOW handling code from main variant fix type of 'size' arg
|
82039 |
21-Aug-2001 |
bp |
Use proper endian conversion.
Obtained from: Mac OS X MFC after: 1 week
|
82038 |
21-Aug-2001 |
bp |
Return proper length of _PC_NAME_MAX value if long names support is enabled.
Obtained from: Mac OS X MFC after: 1 week
|
79872 |
18-Jul-2001 |
jhb |
Grab the process lock around psignal().
Noticed by: tanimura
|
79245 |
04-Jul-2001 |
jhb |
- Update the vmmeter statistics for vnode pageins and pageouts in getpages/putpages. - Use vm_page_undirty() instead of messing with pages' dirty fields directly.
|
78161 |
13-Jun-2001 |
peter |
With this commit, I hereby pronounce gensetdefs past its use-by date.
Replace the a.out emulation of 'struct linker_set' with something a little more flexible. <sys/linker_set.h> now provides macros for accessing elements and completely hides the implementation.
The linker_set.h macros have been on the back burner in various forms since 1998 and has ideas and code from Mike Smith (SET_FOREACH()), John Polstra (ELF clue) and myself (cleaned up API and the conversion of the rest of the kernel to use it).
The macros declare a strongly typed set. They return elements with the type that you declare the set with, rather than a generic void *.
For ELF, we use the magic ld symbols (__start_<setname> and __stop_<setname>). Thanks to Richard Henderson <rth@redhat.com> for the trick about how to force ld to provide them for kld's.
For a.out, we use the old linker_set struct.
NOTE: the item lists are no longer null terminated. This is why the code impact is high in certain areas.
The runtime linker has a new method to find the linker set boundaries depending on which backend format is in use.
linker sets are still module/kld unfriendly and should never be used for anything that may be modular one day.
Reviewed by: eivind
|
76688 |
16-May-2001 |
iedowse |
Change the second argument of vflush() to an integer that specifies the number of references on the filesystem root vnode to be both expected and released. Many filesystems hold an extra reference on the filesystem root vnode, which must be accounted for when determining if the filesystem is busy and then released if it isn't busy. The old `skipvp' approach required individual filesystem xxx_unmount functions to re-implement much of vflush()'s logic to deal with the root vnode.
All 9 filesystems that hold an extra reference on the root vnode got the logic wrong in the case of forced unmounts, so `umount -f' would always fail if there were any extra root vnode references. Fix this issue centrally in vflush(), now that we can.
This commit also fixes a vnode reference leak in devfs, which could result in idle devfs filesystems that refuse to unmount.
Reviewed by: phk, bp
|
76236 |
03-May-2001 |
bp |
Convert vnode_pager_freepage() to vm_free_page().
Forgotten by: alfred
|
76167 |
01-May-2001 |
phk |
Implement vop_std{get|put}pages() and add them to the default vop[].
Un-copy&paste all the VOP_{GET|PUT}PAGES() functions which do nothing but the default.
|
76166 |
01-May-2001 |
markm |
Undo part of the tangle of having sys/lock.h and sys/mutex.h included in other "system" header files.
Also help the deprecation of lockmgr.h by making it a sub-include of sys/lock.h and removing sys/lockmgr.h form kernel .c files.
Sort sys/*.h includes where possible in affected files.
OK'ed by: bde (with reservations)
|
76131 |
29-Apr-2001 |
phk |
Add a vop_stdbmap(), and make it part of the default vop vector.
Make 7 filesystems which don't really know about VOP_BMAP rely on the default vector, rather than more or less complete local vop_nopbmap() implementations.
|
75478 |
13-Apr-2001 |
bp |
Move VT_SMBFS definition to the proper place. Undefine VI_LOCK/VI_UNLOCK.
|
75374 |
10-Apr-2001 |
bp |
Import kernel part of SMB/CIFS requester. Add smbfs(CIFS) filesystem.
Userland part will be in the ports tree for a while.
Obtained from: smbfs-1.3.7-dev package.
|