Commit Graph

75 Commits

Author SHA1 Message Date
jdolecek fe1daad52a add SMBFS_ATTRTIMO for the attribute cache timeout, instead of magic
number

bump the timeout to 5s; eventually we'd want to do some heuristics similar
to NFS, i.e. make the attribute cache timeout longer for files nor recently
changed
2003-02-27 09:14:25 +00:00
jdolecek 0161f51190 g/c prototype for smbfs_ioctl() 2003-02-27 08:54:26 +00:00
jdolecek 88db5b512b Don't try to reacquire root vnode if vflush() in smbfs_unmount() fails.
This is potentially fragile, since the vnode may have been reclaimed
in vflush(), and used by different filesystem. This wouldn't actually
happen due to n_parent link to parent directory, but better safe
than sorry.

Since sm_root is only and strictly cache to speed up VFS_ROOT(),
it can be acquired/dropped any time. Rearrange code to not
require sm_root set, and change smbfs_root() back to set
sm_root if it's not set yet. smbfs_unmount() now only vrele()s
the root vnode if sm_root is set, and doesn't try reacquire it
if vflush() fails.

problem with vref() after vflush() pointed out by Bill Studenmund
2003-02-26 20:21:40 +00:00
jdolecek e651d04ed9 split the part of smbfs_root() which sets sm_root to separate function
smbfs_setroot()
remove pointless if() and MNT_LOCAL flag handling in smbfs_unmount()
turn the check for non-null sm_root to KASSERT() in smbfs_statfs()
adjust some comments
2003-02-26 18:16:37 +00:00
jdolecek 90bb788eb7 smbfs_sync(): need to explicitly ignore VNON vnodes (e.g. syncer vnode) 2003-02-25 23:57:27 +00:00
jdolecek c0e6d2aa07 make smbfs_sync() look more like sync routines for other fs, particularily:
* lock/unlock mntvnode_slock and vnode interlock appropriately
* use LK_NOWAIT for vget()
* adjust the check for vnode being dirty to check fs-private 'modified' flag,
  and drop waitfor/VOP_ISLOCKED() check
2003-02-25 22:17:20 +00:00
jdolecek 68f0f8227e sprinkle VN_KNOTE()s 2003-02-25 10:33:19 +00:00
jdolecek d423ea284d make 'dosdirtemplate' static const 2003-02-25 10:29:12 +00:00
jdolecek 049525126a remove the XXX comment about holes again - it appears to work fine 2003-02-25 10:14:29 +00:00
jdolecek f9d42ade36 add __KERNEL_RCSID() 2003-02-25 09:09:31 +00:00
jdolecek 4f6180461f switch to hash32_strn() from <sys/hash.h> as the hash function -
former smbfs_hash() may have accessed memory past buffer (ouch!), and accessed
memory in alignment-unsafe way
as an added bonus, hash32_strn() appears to have better distribution
2003-02-24 21:52:53 +00:00
jdolecek b0c6be8be5 add XXX comment regarding holes - they are not handled properly
in write, this needs to be fixed eventually (unless it would work
by luck)
2003-02-24 21:29:48 +00:00
jdolecek 968351dd0d g/c smbfs_hashprint() 2003-02-24 21:27:55 +00:00
jdolecek 0c3d39c642 enable mmap and seek vnode ops - this makes mmap(2), lseek(2),
p{read,write}{,v}(2) work
2003-02-24 19:09:02 +00:00
jdolecek 26d1332b7c since smbfs_fctx.f_fname is always used as 'char', may as well define it
that way rather than u_char
2003-02-24 18:45:35 +00:00
jdolecek b5a66cd65b use pool to allocate memory for smbfs nodes
rename smbfs_uninit() to smbfs_done()
some whitespace fixes + use FREE() (not free()) for MALLOC()ed memory
2003-02-24 18:41:04 +00:00
jdolecek 6d0edf1d1b smbfs_lookup():
* make sure islastcn and lockparent is set before used when the entry is cached
* add VWRITE check for nameiop == RENAME, add necessary unlock/relock for
  ISDOTDOT case
adjust smbfs_print() to have slightly nicer output
enable vnode locking
2003-02-24 16:19:05 +00:00
jdolecek ba728ab921 smbfs_node_alloc():
* use LK_RETRY for the vget()
* turn the check for dead parent vnode to #ifdef DIAGNOSTIC panic
* reformat the hash walk code a little, and only assign vp if entries match
* add some comments
2003-02-24 15:55:08 +00:00
jdolecek a7a5a493b5 SMBERROR() purge - turn into #ifdef DIAGNOSTIC panics 2003-02-24 10:01:02 +00:00
jdolecek 38b6d81ba3 update for changed locking requirements for smb_share_put() 2003-02-24 09:57:31 +00:00
jdolecek da9a088d46 SMBERROR() purge - replace with KASSERT()s, panic or remove altogether
as appropriate
2003-02-24 09:30:42 +00:00
jdolecek d8ab9af5e5 need <sys/mount.h> now 2003-02-24 09:18:56 +00:00
jdolecek f31ba31b00 change smbfs_args:
* g/c unused members 'mount_point', 'root_path', which only take space
* rename 'dev' to 'dev_fd' to more closely match what it is
* add 'export' member to avoid changing this again if ever smbfs would
  be made exportable

bump SMBFS_VERMIN - ABI/API change; mount_smbfs needs to be recompiled
to work again
2003-02-23 22:31:17 +00:00
jdolecek 999273657a put the printf about version mismatch inside #ifdef SMB_VNODE_DEBUG
do not touch sm_args.mount_point[]
2003-02-23 22:20:05 +00:00
christos 8bf6b72335 style; no space after cast, and add cast to the assignment case too. 2003-02-23 22:03:11 +00:00
jdolecek e211d06862 add genfsops necessary for genfs_*{get|put}pages() to actually work
use 'compat' getpages and gop_write - smbfs doesn't have bmap vnode op (yet)
2003-02-23 21:55:20 +00:00
jdolecek ee219745fe remove bogus (u_long) cast for uvm_vnp_setsize() arg in smbfs_setattr() 2003-02-23 21:54:05 +00:00
jdolecek a7bf0f25db g/c some dead code
make smbfs_name_{alloc|free} inline
turn some checks for smbfs code errors to KASSERT()s
KNF some
also initialize n_size in smbfs_node_alloc()
g/c write-only variable in smbfs_nget()
2003-02-23 21:33:06 +00:00
jdolecek ccf56de797 KASSERT() smp->sm_root is nonnull in unmount
g/c unneeded variable in smbfs_root()
2003-02-23 21:27:33 +00:00
jdolecek 9a7b95383e fix KASSERT() in smbfs_findnextLM1() to actually compile 2003-02-23 21:26:26 +00:00
jdolecek 5c7688a6f3 g/c compatibility defines PROC_LOCK()/PROC_UNLOCK() 2003-02-23 19:35:14 +00:00
jdolecek 24a773c6ef g/c smbfs_pbuf_freecnt, it's not used (it was not even declared on NetBSD) 2003-02-23 19:30:13 +00:00
jdolecek 21a1fae4a8 g/c smbfs_debuglevel, it's not used anywhere
pointed out by Krister Walfridsson
2003-02-23 18:47:10 +00:00
jdolecek eb5d35152e remove non-NetBSD smbfs_vnodeop_entries[], smbfs_vnodeop_opv_desc 2003-02-23 17:28:48 +00:00
jdolecek c3fb3ac103 g/c smbfs_getpages()/smbfs_putpages() we don't use on NetBSD 2003-02-23 17:28:01 +00:00
jdolecek 164de9f034 make DIFF1970TO1601 static
problem reported in FreeBSD patch request #43613 by Matt Emmerton
2003-02-21 21:46:45 +00:00
jdolecek 5a426e7c8f g/c smbfs_fastlookup
make smbfs_readvdir() slightly more readable, and don't adjust uio_offset
by hand
g/c the lock code around smbfs_readvdir() - a) it's not needed here b) it
didn't do anything anyway
add some KASSERTs
simplify smbfs_vinvalbuf() a bit, use plain interruptible sleep instead
of smb_proc_intr()
2003-02-21 20:19:00 +00:00
jdolecek dfc181b14f some KNF, add a KASSERT() for smbfs_findnextLM1() case
replace some 'never should happen' printfs with KASSERTs
2003-02-21 20:15:01 +00:00
jdolecek 50fa881e7b g/c unneeded local variables in smbfs_read()/smbfs_readdir() 2003-02-21 20:13:21 +00:00
jdolecek b4cbac6f51 remove SMBFS_NAME_DEBUG code, mainly because it didn't work on alignment-picky
archs anyway
don't bother to zero terminate smbnode name (penny saved ...)
2003-02-20 15:39:58 +00:00
jdolecek 7be3184fb7 don't assume struct smbnode -> n_name is zero terminated,
use .*s to print it
2003-02-20 15:35:55 +00:00
jdolecek 02f8f49e38 g/c commented out code 2003-02-20 15:34:42 +00:00
jdolecek 5c10202b37 do previous differently - pass ap->a_id down to smbfs_smb_lock()
and smbfs_smb_lockandx() as caddr_t, and mask it to 16bit value
in smbfs_smb_lockandx()
okayed by Martin
2003-02-19 13:51:24 +00:00
martin 681bcd85a7 SMB lock ids apparently are 16bit items. And the code uses id 1 always.
No need to cast it back and forth to a caddr_t and u_int32_t - which does
not work well on 64bit archs.
2003-02-19 12:44:47 +00:00
jdolecek bb1e147039 add nfs-style n_ctime, n_nctime
#ifdef smbfs_getpages(), smbfs_putpages() - it's not used on NetBSD
2003-02-18 20:09:01 +00:00
jdolecek d3d721833b make smbfs_lookup() look more like nfs_lookup(), particularily account
for different cache_lookup() semantics
fix smbfs_pathcheck() to not assume zero-ended component name
remove the bogus code in smbfs_close(), it's not needed on NetBSD
fix couple other vnop routines to do vput()/vrele()/PNBUF_PUT() as appropriate
KNF
2003-02-18 20:07:50 +00:00
jdolecek e737730e68 g/c VI_(UN)LOCK macros and just use simple_(un)lock(vp->v_interlock)
#if 0 smbfs_hashprint(), and mark it static
do NOT reinit vp->v_lock - getnewvnode() did it for us
smbfs_reclaim(): unconditionaly do LIST_REMOVE(), and de-obfuscate parent
  directory vrele() call
2003-02-18 20:00:35 +00:00
jdolecek e75d9c776e vrele() the reference to root vnode before calling vflush() in smbfs_unmount(),
so that the filesystem wouldn't appear as busy when it's not, and vref()
it back if the vflush() fails

LK_DRAIN sm_hashlock before freeing the smbmount struct

g/c one meaningless check in smbfs_root()
2003-02-18 19:40:36 +00:00
jdolecek 309faeafd5 smbfs_smb_create(): use SMB_COM_CREATE_NEW rather than SMB_COM_CREATE; the
latter truncates the file if it exists, which we don't want to do
change the code a bit to be easier to read
2003-02-18 12:52:34 +00:00
jdolecek 0550f349b8 couple cosmetic changes:
* g/c superfluous printfs
* use vcp on one more place
* don't need to check result of allocation with M_WAITOK
* just exlicitly return (0) on the success path, rather than return (error)
2003-02-18 10:27:17 +00:00